关闭

[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)

[构造] Codeforces 804E Round #411 (Div. 1) E. The same permutation

打表发现4是可以做到不变的 然后我们四个划为一块 两块之间16下也是可以不变的 具体 const int xx[]={ 1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4 }; const int yy[]={ 1,2,3,4,2,1,4,3,3,4,1,2,4,3,2,1 }; 这样相当于第一个四下 相当于会把两边对调 然后每个数x...
阅读(134) 评论(0)

[树的直径] Codeforces 804D Round #411 (Div. 1) D. Expected diameter of a tree

这个只要知道两个子树连在一起的直径端点必然是各自直径的端点就好了 然后瞎枚举一通 只要知道∑i∑jmin{sizei,sizej},∑isizei=n\sum_i\sum_j min\{size_i,size_j\} ,\sum_i size_i=n是O(nn√)O(n\sqrt n)的就好了#include #include #include<algorith...
阅读(122) 评论(0)

[构造] Codeforces Gym 100553 NEERC 14 E. Epic Win!

一道神奇的题 题目大意给你一个剪刀石头布自动机 然后让你构造一个剪刀石头布自动机克制他 这个我们先构造出一个完全针对他的自动机WW 无用的边我们先当他undefined 然后我们开始枚举起点一起跑 用双方所在节点(x,y)(x,y)表示状态 当前状态的转移遍不存在时 我们就把这条边连向WW的一个副本的对应节点 如果成环了 那么一定是在一个WW的副本里成环 这个环是一直赢的 因为只有WW副本之...
阅读(221) 评论(0)

[线段树] Codeforces 794F Round #414 F. Leha and security system

线段树的简单应用?#include #include #include using namespace std; typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+frea...
阅读(148) 评论(0)
48条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:261087次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论