摘要:
从等差数列1 4 7 10 ··· 100中任取20个不同数,求证其中存在两个不同数,其和为104 这个数列一共有34个元素。满足和为104的数对为4 100、7 97、10 94、···· 49 55,共16对,只要选出的数中包含这16对中的其中1对,那么就满足题意了。而因为选了20个数,20-2 阅读全文
摘要:
一个集合由小于100的26个奇数组成,且其中没有任何一对数的和为102,求这样的集合共有多少个 小于100的奇数为1 3 5 ···· 49 51 53 ···· 97 99。只有3 99、5 97、····49 53这24组数之和是102。所以要想没有任何一对数为102,这24对数中每对最多只能选 阅读全文
摘要:
大厅中聚集着100位客人,其中任何一个人至少认识67个人,试证明这些客人中一定可找到四人,他们之中任何两人彼此认识, 随便挑一个人出来,将其命名为A,任选其认识的一个人,将其命名为B,因为任何一个人至少认识67个人,所以肯定有34个人是AB共同认识的(67-1-(100-1-67)=34),。从这3 阅读全文
摘要:
1 二维向量/点、计算几何基础 const double eps = 1e-8; #define lt(x, y) ((x) < (y) - eps) #define gt(x, y) ((x) > (y) + eps) #define le(x, y) ((x) <= (y) + eps) #de 阅读全文
摘要:
1 IO 优化 #define ID isdigit(c = *next++) #define IS isspace(c = *next++) struct Istream { int size; char *next, buf[20030731]; Istream & init(FILE *f = 阅读全文
摘要:
1 并查集 (不封装,按秩合并) int ancestor(int x) {return p[x] == x ? x : (p[x] = ancestor(p[x]));} bool test(int x, int y, bool un = false) { if ((x = ancestor(x) 阅读全文
摘要:
1 双向邻接表 inline void addedge(int u, int v) { to[++E] = v, next[E] = first[u], first[u] = E; to[++E] = u, next[E] = first[v], first[v] = E; } 2 有向图的强连通分 阅读全文
摘要:
1 深度优先搜索 (dfs,大法师) // implementation 1 void dfs(int x){ int i, y; // do something for(i = first[x]; i; i = next[i]) if((y = to[i]) != p[x]){ p[y] = x; 阅读全文
摘要:
1 字符串 Hash const ll mod[3] = {900000011, 998244353, 1000000007}; const ll bas[3] = {4493, 8111, 8527}; // you can choose your bases and modulos char s 阅读全文
摘要:
1 最大公约数 (gcd) int gcd(int a, int b) {return b ? gcd(b, a % b) : a;} 2 快速幂 (递归版本) ll PowerMod(ll a, ll n, ll m = mod) { if (!n || a == 1) return 1ll; l 阅读全文