Codeforces 1501C (數學 暴力)

2022-07-01 05:33:11 字數 3015 閱讀 1888

給定\(n\)個數(\(n≤200000\)),求是否存在一對(\(x,y\))和(\(z,w\)),使得\(a_+a_=a_+a_\)。

由於題目中每個數字的範圍位於[\(1,2.5*10^6\)],所以任意兩個數的和都在[\(2,5*10^6\)]區間內。

由鴿巢原理得,列舉\(5*10^6\)對\((i,j)\)後,一定存在一對\((x,y)\)和\((z,w)\)具有相同的\(sum\)。

所以暴力列舉即可,複雜度\(o(min(5*10^6,n^2))\)。

#include "iostream"

#include "cstring"

#include "string"

#include "vector"

#include "cmath"

#include "algorithm"

#include "map"

#include "set"

#include "queue"

#include "stack"

#include "cassert"

#include "unordered_map"

#include "sstream"

#include "cstdio"

using namespace std;

#define fi first

#define se second

#define pb push_back

#define mst(x,a) memset(x,a,sizeof(x))

#define all(a) a.begin(),a.end()

#define rep(x,l,u) for(ll x=l;x=u;x--)

#define sz(x) x.size()

#define ios ios::sync_with_stdio(false);cin.tie(nullptr);

#define seteps(n) setprecision(n)

#define uni(x) sort(all(x)), x.erase(unique(all(x)), x.end())

#define lson (ind<<1)

#define rson (ind<<1|1)

#define endl '\n'

#define dbg(x) cerr << #x " = " << (x) << endl

#define mp make_pair

//#define local

typedef long long ll;

typedef unsigned long long ull;

typedef __int128 lll;

typedef pairpii;

typedef pairpcc;

typedef pairpdd;

typedef pairpll;

typedef pairpiii;

struct scanner

while(ch != eof && isdigit(ch))

if(ch == eof)

hasnext = 0;

return res * flag;

}ll nextll()

while(ch != eof && isdigit(ch))

if(ch == eof)

hasnext = 0;

return res * flag;

}char nextchar()

if(ch == eof)

hasnext = 0;

return ch;

}int nextstring(char *str)

while(ch != eof && !isspace(ch))

str[len + 1] = 0;

if(ch == eof)

hasnext = 0;

return len;

}} sc;

ll rd()

void rd(int &x)

void rd(ll &x)

void rd(char &x)

void rd(char* x)

templatevoid rd(pair&x)

templatevoid rd(t *x, int n)

templatevoid rd(vector&x,int n)

void printint(int x)

if(x >= 10)

printint(x / 10);

putchar('0' + x % 10);}

void printll(ll x)

if(x >= 10)

printll(x / 10);

putchar('0' + x % 10);}

void pr(int x, char ch = '\n')

void pr(ll x, char ch = '\n')

templatevoid pr(pairx, char ch = '\n')

templatevoid pr(t *x, int n)

templatevoid pr(vector&x)

const int n=5*1e6+10;

const int m=1<<12;

const int inf=0x3f3f3f3f;

const int mod=1e9+7;

const lll oone=1;

const double eps=1e-6;

const double pi=acos(-1);

int n,a[n];

pii b[n];

struct solver

void read()

void solve()

}else;}}

}puts("no");

}}solver;

int main()

}

Codeforces 587C 樹上倍增

題意 求樹上兩點路徑中的前 a 10 小的點權值。思路 類似lca倍增演算法來儲存 i 2 j 路上的 前 10 小個 的點權值。然後要寫乙個權值合併 具體求 u v 的話,就是先分別計算 和 減1是lca會重疊 然後再合併,輸出答案。include include include include ...

Codeforces 976C 題解報告

對資料進行排序 1 按左邊的數從小到大排 2 若左邊的數相等,則按右邊的數從大到小排。排序之後,若乙個數的右邊的數小於等於上乙個數的右邊的數,則這兩個數必然符合題意。比如2 13 2 12 1 11排序之後,變為 1 11 2 13 2 12因為12 13,則有 2,12 被包含在它的上乙個數 2,...

CodeForces 948C 解題報告

題目鏈結 這道題看出來了是一道stl題,本來一開始用佇列去做,結果tle,在這裡先給出tle include using namespace std typedef long long ll const int maxn 1e5 10 int n,v maxn t maxn int main els...