06 2019 档案

暴力贪心+预处理自动机——cf990E
摘要:枚举每种灯管,然后找到代价最小的那种灯管 贪心策略:灯管从0开始向右放置,如果末尾是不能放置灯管的结点,那么要往回找到最近一个可以放置灯管的结点,在那里放置灯管 所以先预处理每个不能放置灯管的结点对应的最近的可以放置灯管的结点,即要能够自动往前找下标 阅读全文

posted @ 2019-06-30 19:42 zsben 阅读(208) 评论(0) 推荐(0) 编辑

组合数学——cf991E
摘要:/* 如果有某一位,那么这一位必须存在 枚举所有情况,计算每种情况时0额外另算 */ #include using namespace std; #define ll long long ll ans,n,cnt[11],F[20],a[11]; ll calc(){ ll res=1,len=0; for(int i=1;i>n; while(n){ ... 阅读全文

posted @ 2019-06-30 15:55 zsben 阅读(305) 评论(0) 推荐(0) 编辑

计算几何,向量——cf995c
摘要:网上的题解直接用随机过的, 自己用模拟就模拟三个向量的和并就模拟不出来。。 以后再回头看看 阅读全文

posted @ 2019-06-30 11:28 zsben 阅读(163) 评论(0) 推荐(0) 编辑

(组合数学)不定方程的解+猜测——cf997B
摘要:首先要求出三种等价情况 5×1+1×50=1×5+5×105×1+1×50=1×5+5×10 9×5=5×1+4×10 8×5+1×50=9×10 那么可以求出三种关于x5,x10的不可行条件 x5 ≥ 1 且 x10 ≥ 5 x5 ≥ 9 x10 ≥ 9 那么只要依次枚举这x5,x10的可能的取值 阅读全文

posted @ 2019-06-29 23:26 zsben 阅读(264) 评论(0) 推荐(0) 编辑

背包dp+打表处理——cf999F
摘要:考虑每种c都是可以独立进行计算的,所以这题的答案等价于每种c的最优解之和 计算每种c的最优解:把问题转化成求出每种c的最大值,再转化成i个人分j张卡片的最大收益 dp[i,j]表示i个人分j张卡片的最大收益,由于h对于每种状态都是确定的,所以我们只要进行一次打表O(n*k*n*k),这个dp打表类似 阅读全文

posted @ 2019-06-29 15:44 zsben 阅读(268) 评论(0) 推荐(0) 编辑

强连通图缩点——cf999E
摘要:问题转换成缩点求度数为0的点的个数,s点所在联通块作额外处理 缩点写的很烂调了一早上。。 阅读全文

posted @ 2019-06-29 11:48 zsben 阅读(308) 评论(0) 推荐(0) 编辑

异或前缀和——cf1186C
摘要:很思维的题,b的1个数和c的1个数相差为偶数时,必定有偶数个不同 反之必定有奇数个不同 阅读全文

posted @ 2019-06-28 23:43 zsben 阅读(384) 评论(0) 推荐(0) 编辑

线段树离散化+区间更新——cf1179C好题
摘要:绝对是很好的题 把问题转化成当第i个询问的答案是数值x时是否可行 要判断值x是否可行,只要再将问题转化成a数组里>=x的值数量是否严格大于b数组里的>=x的值 那么线段树叶子结点维护对于值x的a数组里的合法数数量-b数组里的合法数数量,如果是正数即这个值可行 线段树维护区间最大值,然后询问最靠右的非 阅读全文

posted @ 2019-06-28 19:21 zsben 阅读(288) 评论(0) 推荐(0) 编辑

暴力剪枝——cf1181C
摘要:暴力求长度为len时,以i,j为左上角的旗子的数量 不剪枝的话复杂度是n*n*m*n,必定超时 两个可以剪枝的地方:如果格子[i,j]可以作为长度为len的旗子的左上角,那么其必定不可以作为长度>len的旗子的左上角 同理,如果格子[i,j]为左上角不可以组成长度为len的旗子,并且是因为len行内 阅读全文

posted @ 2019-06-23 11:09 zsben 阅读(291) 评论(0) 推荐(0) 编辑

线性推概率——cf1009E好题!
摘要:依次求每一段公里的期望消耗即可,这是可以递推的 dp[i]表示每公里的期望消耗 dp[i]=1/2*a1+1/4*a2 +...+1/2^(i-1)*ai-1 + 1/2^(i-1)*ai注意最后一项是没有间断的道路的期望虽然是算期望,但是实际上是算概率概率从1到n递推即可 阅读全文

posted @ 2019-06-22 23:50 zsben 阅读(272) 评论(0) 推荐(0) 编辑

概率dp——cf518D
摘要:通过最后的概率求最终的期望 阅读全文

posted @ 2019-06-22 21:36 zsben 阅读(175) 评论(0) 推荐(0) 编辑

概率+后效性处理——cf930B好题
摘要:之前题目看错了。。 . 阅读全文

posted @ 2019-06-22 15:44 zsben 阅读(226) 评论(0) 推荐(0) 编辑

概率期望——cf round362 div1
摘要:给定n个数,求i的位置的期望 那么反向考虑,j!=i排在i前面的概率是0.5,那么对i的位置的期望贡献就是1*0.5 这题就是拓展应用一下 阅读全文

posted @ 2019-06-22 12:42 zsben 阅读(197) 评论(0) 推荐(0) 编辑

期望dp+高斯消元优化——uvalive4297好题
摘要:非常好的题!期望+建矩阵是简单的,但是直接套高斯消元会T 所以消元时要按照矩阵的形态 进行优化 阅读全文

posted @ 2019-06-20 22:50 zsben 阅读(319) 评论(0) 推荐(0) 编辑

期望dp+高斯消元+bfs——hdu4418
摘要:高斯消元又弄了半天。。 注意只要能建立矩阵,那就必定有解,所以高斯消元里可以直接return 1 阅读全文

posted @ 2019-06-20 16:47 zsben 阅读(136) 评论(0) 推荐(0) 编辑

期望dp+高斯消元——bzoj3143
摘要:比较经典的题,题解看网上的。。https://www.cnblogs.com/GXZlegend/p/7054536.html 自己sort弄错了。。还以为是高斯消元写歪了。。 阅读全文

posted @ 2019-06-20 12:28 zsben 阅读(101) 评论(0) 推荐(0) 编辑

期望dp——zoj3640
摘要:/* dp[i]表示力量为i时的期望 dp[i]=sum{tj}/n+sum{dp[i+cj]+1}/n //前一项是cj=i的和 初始状态dp[m] */ #include using namespace std; const double C = ((double)1+sqrt(5))/2; const double esp = 1e-8; const int maxn = 3e4+5;... 阅读全文

posted @ 2019-06-17 23:17 zsben 阅读(114) 评论(0) 推荐(0) 编辑

计数dp+概率+大数——(抽屉问题解的个数)zoj3380
摘要:难的地方在于计数dp。。给定范围[1,n]的数去填m个位置,要求不能出现超过I个相同的数, 那就用dp[i][j]表示在阶段i,已经填了j个位置的可能解法,那么只要枚举i填的位置数k∈[0,min(j,I-1)]进行状态转移即可 阅读全文

posted @ 2019-06-17 21:36 zsben 阅读(178) 评论(0) 推荐(0) 编辑

概率dp——cf148D
摘要:求概率应该dp数组应该顺着求 这是由初始状态来决定递推方向的 阅读全文

posted @ 2019-06-17 19:54 zsben 阅读(273) 评论(0) 推荐(0) 编辑

概率dp——处理分母为0的情况hdu3853
摘要:很水的题,但要注意的是必须处理分母为0的情况 阅读全文

posted @ 2019-06-17 17:17 zsben 阅读(255) 评论(0) 推荐(0) 编辑

概率dp的迭代方式小结——zoj3329,hdu4089,hdu4035
摘要:在推导期望方程时我们常常会遇到dp[i]和其他项有关联,那么这时候我们就难以按某个顺序进行递推 即难以通过已经确定的项来求出新的项 即未知数的相互关系是循环的 但是我们又可以确定和dp[i]相关联的项是有规律的,即存在一个可以递推dp[i]的通项公式,那么不妨设置未知数,通过原方程的迭代来打破这种循 阅读全文

posted @ 2019-06-17 11:07 zsben 阅读(217) 评论(0) 推荐(0) 编辑

概率dp——hdu4089推公式+循环迭代
摘要:迭代是化简公式的常用技巧 dp[i][j]表示队伍中有i人,tomato排在第j位出现情况2的概率,那么先推出公式再进行简化 dp[i][1]=p21*dp[i][i] + p41 j<=k : dp[i][j]=p21*dp[i][j-1] + p31*dp[i-1][j-1] +p41 j>k 阅读全文

posted @ 2019-06-15 21:32 zsben 阅读(211) 评论(0) 推荐(0) 编辑

概率dp——期望水题hdu4405
摘要:还是逆推,如果遇到跳板直接继承目标地的期望即可 阅读全文

posted @ 2019-06-14 16:38 zsben 阅读(210) 评论(0) 推荐(0) 编辑

概率dp——逆推期望+循环迭代zoj3329
摘要:首先要推出dp[i]的期望方程,会发现每一项都和dp[0]相关, 那我们将dp[i]设为和dp[0]有关的式子dp[i]=a[i]*dp[0]+b[i],然后再回代到原来的期望方程里 然后进行整理,可以发现两个系数a[i],b[i]是可以逆推的,并且通过求出a[0],b[0]可以求出dp[0] 阅读全文

posted @ 2019-06-14 13:42 zsben 阅读(324) 评论(0) 推荐(0) 编辑

单调栈——cf777E
摘要:傻逼单调栈啊我怎么想了半天dp 阅读全文

posted @ 2019-06-14 00:50 zsben 阅读(417) 评论(0) 推荐(0) 编辑

异或+桶——cf768C
摘要:有个结论是到最后肯定出现循环节。。感觉这种做法有点歪 正解当然是题解啦 虽然到了1e8,但是cf上还是能过的 阅读全文

posted @ 2019-06-13 17:42 zsben 阅读(213) 评论(0) 推荐(0) 编辑

bsgs+求数列通项——bzoj3122(进阶指南模板该进)
摘要:/* 已知递推数列 F[i]=a*F[i-1]+b (%c) 解方程F[x]=t an+1 = b*an + c an+1 + c/(b-1) = b(an + c/(b-1)) an+1 + c/(b-1) = b^(n-1) * (a1+c/(b-1)) 根据这个数列可得 F[x] = (F[1] + b/(a-1))*a^(x-1) - b/(a-1) = t; (F[1] + ... 阅读全文

posted @ 2019-06-13 14:14 zsben 阅读(190) 评论(0) 推荐(0) 编辑

广义欧拉降幂(欧拉定理)——bzoj3884,fzu1759
摘要:广义欧拉降幂对于狭义欧拉降幂任然适用 https://blog.csdn.net/qq_37632935/article/details/81264965?tdsourcetag=s_pctim_aiomsg bzoj388 #include<bits/stdc++.h> using namespa 阅读全文

posted @ 2019-06-13 11:12 zsben 阅读(340) 评论(0) 推荐(0) 编辑

欧拉定理+质因子分解+矩阵快速幂——cf1182E
摘要:好题! 阅读全文

posted @ 2019-06-12 23:13 zsben 阅读(438) 评论(0) 推荐(0) 编辑

bfs+dfs乱搞+类似拓扑排序——cf1182D
摘要:代码不知道上了多少补丁。。终于过了 用类似拓扑排序的办法收缩整棵树得到x,然后找到x直连的最远的和最近的点 只有这三个点可能是根,依次判一下即可 另外题解的第一种方法时找直径,然后判两端点+重心+所有直连重心的叶子节点,感觉这样子复杂度爆炸啊。。(如果是遍历所有叶子节点的话) 阅读全文

posted @ 2019-06-12 14:02 zsben 阅读(202) 评论(0) 推荐(0) 编辑

边双联通分量缩点+树的直径——cf1000E
摘要:题意理解了就很好做 题意:给一张无向图,任意取两个点s,t,s->t的路径上必经边数量为k 求这样的s,t,使得k最大 阅读全文

posted @ 2019-06-11 20:52 zsben 阅读(181) 评论(0) 推荐(0) 编辑

最大流——hdu4292(类似poj3281 带间隔的流)
摘要:#include using namespace std; #define maxn 100005 #define inf 0x3f3f3f3f struct Edge{int to,nxt,w;}e[maxnq; q.push(s);d[s]=1; while(q.size()){ int x=q.front();q.pop(); fo... 阅读全文

posted @ 2019-06-11 17:17 zsben 阅读(177) 评论(0) 推荐(0) 编辑

最大流——poj1459
摘要:#include #include #include #include using namespace std; #define maxn 100005 #define inf 0x3f3f3f3f struct Edge{int to,nxt,w;}e[maxnq; q.push(s);d[s]=1; while(q.size()){ int x=q.... 阅读全文

posted @ 2019-06-11 16:09 zsben 阅读(113) 评论(0) 推荐(0) 编辑

最大流拆点——poj3281
摘要:/* 因为牛的容量为1,把牛拆点 按照s->f->cow->cow->d->t建图 */ #include #include #include #include using namespace std; #define inf 0x3f3f3f3f #define maxn 10005 struct Edge{int to,nxt,c;}e[maxnq; while(q.size(... 阅读全文

posted @ 2019-06-11 13:18 zsben 阅读(110) 评论(0) 推荐(0) 编辑

贪心数列构造——cf1157D
摘要:一开始将数列设置为0 1 2 3 4 5 6.。。 然后从左到右遍历,每位不够就增加即可 阅读全文

posted @ 2019-06-11 10:20 zsben 阅读(220) 评论(0) 推荐(0) 编辑

多源多汇费用流——poj2516
摘要:网络流的题好难。。感觉有点遭不住了 这题用矩阵存图,然后把k个物品,每个物品都求一次费用流 阅读全文

posted @ 2019-06-10 22:17 zsben 阅读(235) 评论(0) 推荐(0) 编辑

费用流消圈算法(构造残量网络)
摘要:自己写的代码怎么都调不出来。。先放网上的记一下 阅读全文

posted @ 2019-06-10 16:34 zsben 阅读(538) 评论(0) 推荐(0) 编辑

费用流模板(带权二分图匹配)——hdu1533
摘要:/* 带权二分图匹配 用费用流求,增加源点s 和 汇点t */ #include using namespace std; #define maxn 10005 #define maxm 200005 struct Edge{int to,nxt,w,c;}e[maxm >M,H; void add(int u,int v,int w,int c){ e[tot].to=v;e[tot... 阅读全文

posted @ 2019-06-10 09:01 zsben 阅读(300) 评论(0) 推荐(0) 编辑

最大流模板——进阶指南整理
摘要:int d[maxn]; bool bfs(){//在残量网络上构造分层图 memset(d,0,sizeof d); queueq; while(q.size())q.pop(); q.push(s);d[s]=1; while(q.size()){ int x=q.front();q.pop(); ... 阅读全文

posted @ 2019-06-09 17:16 zsben 阅读(219) 评论(0) 推荐(0) 编辑

最大流任务调度+离散化——hdu2883
摘要:思想就是把时间段离散化,然后用个点来表示一段时间 阅读全文

posted @ 2019-06-09 10:32 zsben 阅读(297) 评论(0) 推荐(0) 编辑

最大流拆点——hdu2732,poj3436
摘要:一种很普遍的做法就是把一个带有容量的点拆成两个点,一个入点一个出点,链接两个点的边的权值为这个点的容量 hdu3732 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<vector> #i 阅读全文

posted @ 2019-06-08 22:00 zsben 阅读(84) 评论(0) 推荐(0) 编辑

最大流拆点——hdu2732,poj3436
摘要:一种很普遍的做法就是把一个带有容量的点拆成两个点,一个入点一个出点,链接两个点的边的权值为这个点的容量 hdu3732 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<vector> #i 阅读全文

posted @ 2019-06-08 22:00 zsben 阅读(171) 评论(0) 推荐(0) 编辑

最大流任务调度——hdu3572二分图建图
摘要:很简单的任务调度模板题 把一个工作完成一天的量当做是边 阅读全文

posted @ 2019-06-07 16:57 zsben 阅读(338) 评论(0) 推荐(0) 编辑

最大流dicnic——hdu1532模板题
摘要:#include using namespace std; #define maxn 1005 #define ll long long const ll inf = 0x3f3f3f3f3f3f3f3f; struct Edge{ll to,nxt,w;}e[maxnq; while(q.size())q.pop(); q.push(1);d[1]=1; ... 阅读全文

posted @ 2019-06-07 10:34 zsben 阅读(206) 评论(0) 推荐(0) 编辑

数论+线性dp——cf1174A
摘要:直接推公式没有推出来 看了题解才会做。。 首先能够确定前面几个数的gcd一定是2^j * 3^k, 其中k<=1 那么可以用dp[i][j][k]来表示到第i位的gcd是2^j*3^k f(j,k) 为 n / 2^j / 3^k 那么状态转移有 dp[i+1][j][k]=dp[i][j][k]* 阅读全文

posted @ 2019-06-06 23:54 zsben 阅读(257) 评论(0) 推荐(0) 编辑

带撤销贪心——cf1148F好题
摘要:自己不会做,看了题解懂得 从最高位依次往低位遍历,因为偶数个1是不改变符号的,所以带个贪心即可(可以看成是带撤销的。。) 每轮循环用sum记录该位选择1可以减少的值 如果是负数,就不要改成1 如果是正,就改成1,然后增加一次改成1的影响 怎么增加影响:如果一个数的i位改成1,等价于其在最终减少的值 阅读全文

posted @ 2019-06-06 16:06 zsben 阅读(282) 评论(0) 推荐(0) 编辑

cf1147
摘要:C——筛法 D——异或前缀和+bitmask,好题 E——待补 阅读全文

posted @ 2019-06-05 10:04 zsben 阅读(221) 评论(0) 推荐(0) 编辑

全球轮3——cf1148
摘要:c——贪心构造题 /* 1 [n/2+1,n] 2 [n/2+2,n] ... n/2 [n,n] n/2+1 [1,1] n/2+2 [1,2] ... n [1,n/2] ai要换到位置ai上,用1,n作为跳板 从2开始,把值为i的移动到位置i上 */ #include<bits/stdc++. 阅读全文

posted @ 2019-06-05 10:02 zsben 阅读(211) 评论(0) 推荐(0) 编辑

莫比乌斯反演——hdu6390推公式
摘要:/*首先要把原始化简成 k/phi[k] 的格式,然后把有关k的sigma提出来,后面就是求gcd(i,j)==k的莫比乌斯反演这里要用整除分块加下速*/#include using namespace std; #define ll long long #define maxn 2000005 ll n,m,mod; bool vis[maxn+10]; int prime[maxn+10... 阅读全文

posted @ 2019-06-01 21:56 zsben 阅读(180) 评论(0) 推荐(0) 编辑

bfs理解——hdu6386好题
摘要:用队列维护,对于每块颜色相同的相连的边进行dfs并记录即可 注意这题要用vis来标记边,不可以标记点 因为点的深度是可以随时更新的(这样的做法不满足贪心条件) 阅读全文

posted @ 2019-06-01 18:19 zsben 阅读(343) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示