24天五百道codeforces
挑战不可能,奥利给
路明非hero
Coding Changes the World
展开
-
D. Balanced Playlist 2000 (单调队列代替线段树维护,破环为链)
遇到环的题,优先将环形变成链形。单调队列(上升或者下降) : 用来解决滑动窗口的最大最小值问题,线段树维护为O(nlogn),而用单调队列维护为O(n),例如 1 3 5 2 4 取滑窗区间为3 求每个区间的最小值开始1入队3入队 5入队 变成 1 3 52入队1 3 5 都弹出去 变成 24入队 不用弹 变成 2 4最小值即是每次队列的队首本题连接本...原创 2020-02-07 22:18:13 · 218 阅读 · 0 评论 -
E. Permutation Separation 2200 (线段树裸题,前缀和,通过n2延伸到nlogn神仙题)
建树时下标都从1开始。理解题意很重要本板子线段树查询时右坐标需要严格不小于左坐标本题连接题意:给定一个序列p(为1~n的排列),和这个序列每一个数所对应的花费a以及序列的长度n。取一数1≤k<n,将p序列分成两个序列,分别是p1,p2,…,pk和pk+1,pk+2,…,pn将两个序列的某些数移到另一个序列使得第一个序列的所有数小于第二个序列的所有数,注意如果其中一组为空,则满足...原创 2020-02-06 21:59:09 · 175 阅读 · 0 评论 -
C. Obtain The String 1600(字符串,传vector,vector上做lower_bound二分,)
传vector写法:vector <int .> & s ||->这样写在函数里就可以了vector上做lower_bound二分int ans=lower_bound(s.begin(),s.end(),k)-s.begin(); 注意ans是地址,取当前的值话要再写一步,如果没有找到,返回的是s.size(),通过这个判断是否找到了(前提是s不为空)养成ret...原创 2020-02-06 19:10:02 · 173 阅读 · 0 评论 -
D. Same GCDs 分数:1800(欧拉函数,盲猜题,质数问题,数论题)
欧拉函数:欧拉函数可以求出1~N中与N互质的个数如果遇到与算质数且范围比较大可以往这里靠,然后猜结论欧兰函数模板:using LL = long long;LL phi(LL x){ LL res = x; for (LL i = 2; i*i<= x ; ++i) { if (x % i == 0) { ...原创 2020-02-06 17:19:04 · 3327 阅读 · 0 评论