该文被密码保护。
posted @ 2018-08-13 19:03 pechpo 阅读(1) 评论(0) 编辑
摘要: 常用算法设计和优化策略(本蒟蒻不定期更新) 下面是紫书上讲的常用算法设计策略和优化策略: 分治法:将问题分成相同的独立子问题求解。在普通的分治之外,还有一种cdq分治,思想是处理左边区间到右边区间的影响,归并算一个例子。 动态规划。本质是:对于一个问题,通过定义状态与状态间的关系来 分解问题 。利用阅读全文
posted @ 2018-03-01 23:14 pechpo 阅读(50) 评论(0) 编辑
摘要: Beautiful Sequence 给定一些数(可能相同),将它们随机打乱后构成凹函数,求概率 。Nf[i][j][l][i+1]=f[i+1][l][j][i]$就行了。是不是很妙。 exp2:对于某些状态具有对称性的题,可以考虑把状态的某一维钦定成按顺序转移的维度。这样就好dp了。 c++ i阅读全文
posted @ 2018-08-14 19:04 pechpo 阅读(2) 评论(0) 编辑
该文被密码保护。
posted @ 2018-08-13 19:03 pechpo 阅读(1) 评论(0) 编辑
摘要: Mole and Abandoned Mine n点m条边的无向图,删除第i条边花费c[i],问1到n只有一条路径时所需要的最小花费? $2\le n\le 15$ 。 ~~我又A掉了一道zzs的题啦!~~ 首先,我们观察1到n只有一条路径时,图是怎么样的。显然是一条1到n的链,链上的每个点都挂了很阅读全文
posted @ 2018-08-12 21:11 pechpo 阅读(3) 评论(0) 编辑
摘要: 防御准备 给定一个长为n的序列,每个点需要放置一个守卫塔或一个木偶。 在第i个点放置守卫塔的代价为a_i,放置木偶的代价为j i,j为i右边第一个守卫塔;求最小代价。 1≤n≤10^6,1≤a_i≤10^9 推出朴素dp以后用斜率优化…… 话说,斜率优化推出来的不等式,必须满足左边不出现i有关的项,阅读全文
posted @ 2018-08-12 19:14 pechpo 阅读(3) 评论(0) 编辑
摘要: 最小生成树计数 rt.1 include include include using namespace std; const int maxn=1e5+5, maxm=1e5+5, mod=1e9+7; struct Edge{ int x, y, v; }e[maxm]; int cnte; b阅读全文
posted @ 2018-08-12 13:22 pechpo 阅读(4) 评论(0) 编辑
摘要: Miners 有三种食品,两组矿工。矿工们根据最近三次过来的食品车产煤,产出煤的个数就是新过来的食品车,和前面两辆车中,不同的食品车的个数。 现在你有一个长度为n的食品车序列,请合理分配它们给两组矿工,使得产煤个数最大。 ~~我会做IOI的题啦!~~ $f[i][a][b][c][d]$吗,表示当前阅读全文
posted @ 2018-08-11 20:26 pechpo 阅读(5) 评论(0) 编辑
摘要: 朝暮(枚举基准 容斥) 给出一个n个点,最多n+6条边的无向图,求将树黑白染色,且没有相邻黑点的方案数。$1\leqslant n\leqslant 10^5$ 首先,如果这个图是个树,就是个斯波dp。 然后我在考试时想了个做法:枚举所有非树边旁边是00还是10还是01。复杂度$n3^n$,成功tl阅读全文
posted @ 2018-08-11 15:23 pechpo 阅读(4) 评论(0) 编辑
摘要: Dynamic Rankings(整体二分) 带修区间第k小。$n,q\le 10^4$。 这次我们旧瓶装新酒,不用带修主席树。我们用整体二分!整体二分是啥东西呢? 二分答案可以解决一次询问的问题。只要二分这个询问的答案就行了。 考虑这道题,如果改成一个询问,怎么用二分答案做(虽然其它方法随便做)。阅读全文
posted @ 2018-08-08 21:14 pechpo 阅读(7) 评论(0) 编辑
摘要: 取数字(dp优化) 给定n个整数$a_i$,你需要从中选取若干个数,使得它们的和是m的倍数。问有多少种方案。有多个询问,每次询问一个的m对应的答案。 $1\le n\le 200000,1\le m\le 100,1\le q\le 30, 10^9\le a_i\le 10^9$。 首先有一个暴力阅读全文
posted @ 2018-08-08 09:42 pechpo 阅读(3) 评论(0) 编辑
摘要: POI2011 Tree Rotations 给定一个n include using namespace std; typedef long long LL; inline void read(int &x){ char ch; x=0; for (; ch=getchar(), !isdigit(阅读全文
posted @ 2018-08-05 11:04 pechpo 阅读(9) 评论(0) 编辑