摘要:
题目:给你n个数字A1,A2....An ,问从中选出两个数字异或运算得到的最大结果是多少 0<=Ai<231 用字典树,记录每个数字的31位2进制01串(int 为4个字节,每个字节8个二进制,int一共32位,最高位为符号位,所以不考虑) 阅读全文
摘要:
给定N个字符串S1,S2...SN,接下来m组询问,每次询问给一个字符串T,求S1~SN中有多少是T的前缀,输入的字符串总长度不超过106 阅读全文
摘要:
#include using namespace std; const int maxn=1e5+10; int tot=0; int head[maxn],nxt[maxn],ver[maxn],edge[maxn];// head nxt中存tot的下标 void add(int u,int v,int w) // 加入有向边(u,v)权值为w { ver[++tot]=v; ... 阅读全文
摘要:
n个物品,每个可以取k次,容量为w,价值为v。 一般做法:二进制拆分:将每个物品拆成O(log k)个01背包的物品,时间复杂度为(nmlogk) 例如:K=10 可以拆分成1 2 4 再加一个余数2 阅读全文
摘要:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 阅读全文
摘要:
原理】X = A[0] * (n-1)! + A[1] * (n-2)! + … + A[n-1] * 0! (A[i]表示在位置i后比位置i上数小的数的个数) 【举例】在 (1, 2, 3, 4, 5) 5个数的排列组合中,计算 (3, 4, 1, 5, 2) 的康托展开值 X = 2 * 4! 阅读全文
摘要:
注意:vector<pair(int,int)> v; 放入元素:v.push_back(make_pair(a,b)) 取元素:v[i].first,v[i].second. 阅读全文
摘要:
stringstream可以吞下不同类型,然后吐出接收对象对应的类型 阅读全文
摘要:
高精度加法 做法:得到两个数字串a,b以后,使a串长度默认比b大,否则交换,然后用x数组倒着装a,b两个数字串,然后相加,大于10的进一位,然后特判有没有长度+1,最后在将x数组倒着输出即可。 高精度减法 做法:先判断一下被减数和减数的大小关系,如果被减数更小的话用flag记录一下输出时加负号,同时 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P3386 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P1196 银河英雄传说 阅读全文
摘要:
需要改变迭代对象 for(auto &i:s) 不需要改变迭代对象 for(auto i:s) 迭代map 阅读全文
摘要:
#include using namespace std; set s; int main() { s.insert(3.14); s.insert(3.158); for(set::iterator it=s.begin(); it!=s.end(); it++) { printf("%lf", *it); } } 阅读全文
摘要:
给定三个数n,l,r (1≤n≤2⋅105,1≤l≤r≤109) 求[l,r]之间选n个数求和能被3整除的方案数,其中可以重复选取,考虑选取顺序。 结果对1e10+7取模 阅读全文
摘要:
什么是退火: 退火是指将固体加热到足够高的温度,使分子呈随机排列状态,然后降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态。 物理退火过程 模拟退火算法思想: 模仿自然界退火现象而得,利用物理固体物质的退火过程与一般优化问题的相似性从某一初始温度开始,伴随温度的不断下降,结合概率突跳特性在 阅读全文