关闭

[IMO原题] BZOJ 4915 简单的数字题

第52届IMO试题解答 #include #include using namespace std;int main(){ long long l,r; cin>>l>>r; cout<<4<<endl<<max(r/11-l+1,0LL)+max(r/29-l+1,0LL); return 0; }...
阅读(306) 评论(0)

[杜教筛] BZOJ 4916 神犇和蒟蒻

第一问玩玩你的吧 第二问直接杜教筛 S(n)=n∗(n+1)∗(2n+1)6−∑i=2ni∗S(⌊ni⌋)S(n)={n*(n+1)*(2n+1)\over 6}-\sum _{i=2}^n i*S(\lfloor{n\over i} \rfloor)#include #include #include #include...
阅读(182) 评论(0)

[线段树] Codeforces 811E Round #416 (Div. 2) E. Vladik and Entertaining Flags

线段树 直接维护一段区间的答案 以及左右边界之间的连通性 然后合并的时候 根据中线并查集合并下 这么大常数竟然过了#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; ret...
阅读(136) 评论(0)

[特殊的一般图最大匹配] BZOJ 4874 筐子放球

我们把能够放在一个桶里的球连边 就是个最大匹配 这种图比较特殊 其实是比较老的模型了 在算法合集之《数据关系的简化》就有讲过一个连通块 必然能够达到⌊n2⌋\lfloor {n\over 2}\rfloor 这个上界 具体我们把一个连通块拎成一棵树 其中左儿子和自己同名 右儿子和自己同姓 我们每次必然能够找到一个点 他的儿子全是叶子 如果只有一个儿子 直接连 不然 可以选择一个 把另一个...
阅读(112) 评论(0)

[DP套DP] UOJ #141 【UER #4】量子态的棋盘

预先DP一遍则每个格子最多留一个球,然后对轮廓线的状态装压 如果定义一个点的状态数不超过SS 那么据题解说SS大概是5×1055\times 10^5 复杂度O(nmS)O(nmS) 接下来是卡常时刻 我先是把轮廓线上的球数转化成一个80进制数 然后和当前已经入袋的球数hash在一起 hashmap里面存一下 成功rnk1 开心#include #include<cstdl...
阅读(144) 评论(0)

[DP套DP] SRM 591 div1 StringPath

记录f(i,j)是不是A/B的前缀,需要保留前m个dp值 其实就是轮廓线 复杂度O(nm∗4m)O(nm*4^{m})// BEGIN CUT HERE #include #include // END CUT HERE #include #include #include #include<cmat...
阅读(83) 评论(0)

[DP套DP] BZOJ 3864 Hero meet devil

我们令fi,jf_{i,j}表示TiT_i和SjS_j的LCS 然后我们发现 fi,j−fi,j−1∈[0,1]f_{i,j}-f_{i,j-1} \in [0,1] 这个东西可以状压 预处理所有转移 然后DP#include #include #include #include #define cl(x) memset(...
阅读(93) 评论(0)

[分块] BZOJ 4908 [BeiJing2017]开车

我们在车的地方加一 在加油站减一 这样答案就是一个类似绝对值的区间和的东西 这个东西不好搞 分块 对于整块加减 我们在块上再维护一个表示0的指针 对于小块 暴力基数排序重构 复杂度O(nn√)O(n\sqrt n)#include #include #include #include #define pb push_bac...
阅读(289) 评论(0)

[Floyd 一般图最小权完美匹配] 算法马拉松25 F River?Rever!

首先把一个区间翻转的最小代价肯定不是题目给出的那个代价 我们先跑一通floyd就能搞出来最小代价 然后呢 把所有奇偶性变化的位置 连成一个完全图 跑最小权完美匹配就好了 不会带花树 拷了个随机匹配的板子#include using namespace std; typedef long long ll;namespace Work{ const ll OO=1...
阅读(224) 评论(0)

[搜索 剪枝] 算法马拉松25 E BigPrime

减掉所有只有小质数的数的个数就好了 大概就那么几千万个 首先包含大于根号b的质数只能有一个你可以直接算出来 然后再搜 怎么写都能三四秒出 然后你还要些剪枝 我是把大于三次根号b的质数瞎讨论一波 因为最多出现两个#include #include #include #include using namespace std;...
阅读(170) 评论(0)

[期望与方差 Lucas定理] 算法马拉松25 D 小Q的集合

大概是 ∑Cin∗2∗ik∗(ik−(n−i)k)modm\sum C_n^i*2*i^k*(i^k-(n-i)^k) \bmod m 后面那个东西模mm有循环节 同一组的组合数的和用lucas定理也能化成组合数乘上2的幂#include #include #include #include using namespace...
阅读(333) 评论(0)

[二进制分组 线段树 || 点分治 分治] UOJ #191 【集训队互测2016】Unknown

详见lzz的集训队论文二进制分组做法二进制分组是在线段树的结构上做的 方便区间查询 至于删除 采用延迟重构的思想 每一层只有最后一个区间是萎的 我们需要递归下去 询问还是O(logn)O(\log n)个节点 重构复杂度势能分析下O(nlogn)O(n\log n) 只有上凸包是有效的 合并的时候采用归并加Graham可以做到O(n)O(n) 不然以我的常数 T的血惨 但是卡内存 只有90分#...
阅读(264) 评论(0)

[历史最值问题] UOJ #164 【清华集训2015】V

详见吉丽的集训队论文吧我们发现修改操作可以变为这样一个形式S:x=max(x+A,B)S:x=max(x+A,B) 这个标记是可以合并的 就可以求当前值了 现在还要历史最值 我们就再加一个标记SSSS表示历史最大的标记 因为这个形式是一条折线 所以历史最大也是可以合并的 具体的我们两段时间有两对标记S,SSS,SS和s,sss,ss 时间先后分别对应pushdown时的父亲儿子关系 我们发现...
阅读(205) 评论(0)

[Segment tree Beats! || 分块] Codeforces 793F Tinkoff Challenge - Elimination Round F. Julia the snail

我们用fif_i表示左边界是ii的答案 一条线段[a,b][a,b]对答案的影响是 f1f_1到flf_l中大于等于aa的都跟bb取max 这个可以用线段树科技做 复杂度证明跟区间最值操作的势能分析应该差不多#include #include #include #include using namespace std;inl...
阅读(276) 评论(0)

[扫描线 二分图最大匹配 线段树优化网络流] Codeforces 793G Tinkoff Challenge - Elimination Round G. Oleg and chess

这个我们首先可以转化成一个二分图最大匹配的模型 但是肯定跑不出 首先扫描线 把free的格子剖成O(n)O(n)个矩形 对两边都建成线段树 每个矩形对应两边各O(logn)O(\log n)个点 两两相连 总边数O(nlog2n)O(n\log^2n)#include #include #include #include<cstrin...
阅读(221) 评论(0)

[杂题 背包DP] Codeforces 793E Tinkoff Challenge - Elimination Round E. Problem of offices

因为都经过根 那么只要考虑根的那么些子树就好了 然后要求 a-b之间是n/2个点 c-d之间是n/2个点 四个点的顺序是 a-c-b-d 或 a-d-b-c 那么背包做一下就好了 If solution of both knapsacks exists, then answer is «YES», otherwise «NO». We can always order items fro...
阅读(160) 评论(0)

[杂题] Codeforces 739D Round #381 (Div. 1) D. Recover a functional graph

Let’s think what has to hold after we put numbers in place of question marks: number of vertices with precycle = 0 and cycle = y should be divisible by y. if there exists a vertex with pr...
阅读(220) 评论(0)

[DP 平衡树] Codeforces 809D Round #415 (Div. 1) D. Hitchhiking in the Baltic States

考虑求lis的过程 fif_i表示长度为ii的递增子序列最末尾一项的最小值 这个东西是单调递增的 每次在序列后加入一个数 就更新下相应的一个位置 现在变成加入的数可以是一个区间内 那么我们发现会对一段产生影响 平衡树维护下就好了#include #include #include using namespace std;inline c...
阅读(306) 评论(0)

[数位DP] Codeforces 809C Round #415 (Div. 1) C. Find a car

这个东西就是(x−1) xor (y−1)+1(x-1) \ \text {xor} \ (y-1)+1 然后转化为 ∑i∑j[i xor j≤k]\sum_i\sum_j [i \ \text {xor} \ j \leq k]和∑i∑j[i xor j≤k]∗(i xor j)\sum_i\sum_j [i \ \text {xor} \ j \leq k]*(i \ \text {xor}...
阅读(655) 评论(0)

[二分 交互] Codeforces 809B Round #415 (Div. 1) B. Glad to see you!

二分+交互 四个字够了吧#include #include #include #include #include using namespace std;inline bool query(int x,int y){ printf("1 %d %d\n",x,y); fflush(stdout); s...
阅读(637) 评论(0)
972条 共49页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:261085次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论