給定\(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...