自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Codeforces 486D Valid Set 树形DP+计数

题意:n个结点的树,每个结点权值为a[i],问有多少个子树其max-min 直接dp搞不来.. 先不考虑第三个最值条件,可以容易求出以u为根的子树个数 sz[u]=sz[u]*(sz[v]+1) 分类计数:集合中最小值为a[i]的个数,以a[i]为根,晒出合法的联通分量 算出sz[u]即可. 注意如果一个联通分量有多个最小值,则会算重复  当a[u]作为最小值计算完毕后,标

2017-06-28 22:32:15 314

原创 Codeforces 255C Almost Arithmetical Progression DP

点击打开链接 题意:n个数b[i],定义序列a[i]=a[i-1]+(-1)^(i+1) *q (i>2,q为常量) n 合法的序列形式为 x,x+q,x,x+q,x.. . x,x+q 下一个出现的x 一定为第一次出现在x+q之后的x(显然更优) //怎么快速找到下一个x? b[i]j的x 不用二分...从后往前推时,用pos记录J之后第一个和b[i]相等的位置  则设状态dp

2017-06-28 16:30:07 308

原创 Codeforces 821E Okabe and El Psy Kongroo 递推+矩阵幂

点击打开链接 题意:n条直线(a[i],b[i],c[i]) 表示在x=a[i]~b[i]内 运动的高度0 a[i]=b[i-1],a[1]=0,a[n] n(k,0)的方法数? 设f[x][y] 从(0,0)到点(x,y)的方法数, f[x][y]=f[x-1][y]+f[x-1][y-1]+f[x-1][y+1] 注意转移状态时要合法,x>=0&&0 x很大并且x每次都

2017-06-26 21:00:28 779

原创 Codeforces 821D Okabe And City 最短路

点击打开链接 题意:n*m地图,有k个位置是点亮的,有4个移动方向,每次可以移动到相邻的点亮位置,每次站在初始被点亮某个位置,暂时使某行或该某列全部点亮,花费为1,下一次使用时,上一次暂时点亮被熄灭. 问从(1,1)->(n,m)的最小花费,n,m,k 以k个lit为顶点建图,若lit相邻 则边权为0,如果横/纵坐标差 k #include using namespace st

2017-06-26 17:48:52 1578 6

原创 Codeforces 454D Little Pony and Harmony Chest 状压DP

点击打开链接 题意:n个数a[i],找到一组序列B,B中任意两个元素互质,最小值为?  n 一定有解 并且b[i]不超过2*a[i]-1 若超过,b[i]用1来代替显然更优 b[i]范围被限制在60内,又要满足两两互质,用二进制记录前i个数中素因子出现的状态 设dp[i][s] 前i个数 素因子出现状态为s 则新添加的x要满足num[x]&s==0 否则有大于1的公约数  num[i]

2017-06-25 11:44:54 360

原创 Codeforces 791D Bear And Tree Jumps 树形DP

点击打开链接 题意:n个结点的树,每个结点可以跳到距离其不超k的结点上,定义f(s,t)为从s跳到t的最少次数. n s 长度为L的路径对答案的贡献为(上取整)   f(L,k)为L还差多少能整除k f(10,3)=2 L的累加和为:sum树中任意两点距离的累加和 sz[v]为子树v的结点数,对于每条边(u,v) 总共被遍历 sz(v)*(n-sz(v)次 剩下的,只要求

2017-06-24 11:41:58 306

原创 Codeforces 789D Weird Journey 欧拉图(计数)

题意:n点m条边的无向图,无重边,可能有自环,n,m 把无向边变为有向,则相等于问2*m条,去掉两条边的后,存在欧拉路径时的去边方案? 无向边变为有向边后,每个顶点入度等于出度. 对两条去掉的边 分类讨论 Case1:去掉两条不相邻的regular边(不带环) 显然产生4个奇点 欧拉路不存在 Case2:去掉两条相邻的regular边,xyz 正好产生(x,z)两个奇点 成立

2017-06-23 19:54:24 447

原创 Codeforces 816E Karen And SuperMarket 树形背包

点击打开链接 题意:有n件商品,每件有价格ci,优惠券di,对于i>=2,使用di的条件为:xi的优惠券需要被使用,问初始金钱为b时 最多能买多少件商品? n 因为(i>=2时)每个优惠券只有一个xi限制并且i>xi 在有限制的优惠券间连边 正好能构成一颗树.套用树形背包 b dp[u][j][0]=min(dp[u][j-k][0],dp[v][k][0]) 子树v选

2017-06-20 13:28:05 1252

原创 POJ 2154 Color Polya定理+欧拉函数优化

点击打开链接 Polya简介 题意:n个珠子围成一圈,有n种颜色,旋转后相同的视为同一种方案. n 旋转后相同视为同一种,用Polya定理来计数 确定置换群,计算循环节个数,代入公式即可. 本题置换群为旋转1.2...n格,置换i的循环节个数为gcd(n,i) 由于n gcd(n/d,i/d)=1 即欧拉函数(n/d)  #include #i

2017-06-18 21:20:50 540

原创 Codeforces 711E ZS and The Birthday Paradox 数论(Legendre's定理)

点击打开链接 题意:一年有s=2^n天,有k个人 问至少有两个人生日在同一天的概率?(答案%mod) n,k 算对立事件 任意两人生日都不同的概率 ( (2^n-1)*(2^n-2)*...*(2^n-(k-1)) )  /(2^(n*(k-1)) n,k 分子可以展开成A=f(p)*2^n+(k-1)! f(p)为某个多项式  则gcd2^i满足2^i|2^n && 2^i|

2017-06-17 21:37:15 389

原创 Codeforces 712E Memory And Casinos 概率+线段树

点击打开链接 Problem E 题意:在i点赢的概率为pi win前进一格,lose后退一格,给出两个操作 操作1:修改某点的概率 操作2:给出[L,R] 问从L出发 在R获胜的概率并且中间不走到小于L点的概率? n,q 先不考虑修改 求[L,R]的概率? 设f[i]:从i开始到R获胜(达到R+1的概率) f[L-1]=0,F[R+1]=1 f[i]=p[i]*f[i+1

2017-06-16 18:02:19 359

原创 Codeforces 712D Memory And Scores 前缀和+DP

点击打开链接 Problem D 题意:两人初始分数为(a,b) 总共t轮 每轮 两人随机从[-k,k]中选一个数加到自己的得分上.a,b,t 设dp[i][dif] i轮后 两人相差dif(设个offset转移负数) dp[i][dif]+=dp[i-1][dif+(x-y)] -2k dp[i][dif]+=(2k+1-z)*dp[i-1][dif+z) -2k

2017-06-15 20:25:00 361

原创 POJ 2175 Evacuation Plan 最小费用流(找负圈)

点击打开链接 题意:n个居民点(x,y)人数为bi,m个避难点(x,y)容量为ci,两点之间花费为曼哈顿距离, 现在给出n个人到m个避难点的方案,问该方案花费是否最小,若不是则求出最优方案  居民点到避难点容量为min(bi,ci)花费为距离,源点s到居民点容量为bi,花费为0,避难点到汇点T容量为ci,花费为0. num=segma(b[i]),则求流量为num的最小费用流,

2017-06-10 13:46:08 482

原创 Codeforces 813E Army Creation 主席树(在线,求[l,r]内比x大的数的个数)

点击打开链接 题意:n个数a[i],q次询问,n,a[i],q 每次问[l,r]内最多可以选多少个数,满足同一个数的出现次数不超过k? 设b[i] 从i开始数k个和a[i]相同的数的位置,不存在设为n+1; 则[l,r] 只要b[i]>r的数都能可以被选上,转化为求区间[l,r]内有多少个数>=r 题目要求在线 所以套用主席树  建立权值线段树,前缀i内,第[l,r]大的数有多

2017-06-08 20:45:27 1454

原创 Codeforces 814D An overnight dance in discotheque DP(树形)

点击打开链接 题意:n个圆,任意两个圆要么包含要么相邻,问把n个圆分成两组,每组价值为被奇数个圆覆盖的面积,问最大价值? n 一个点要么第一组要么为第二组,并且是某组中的偶/奇深度 所以 设dp[u][0/1][0/1] 以u为根,u祖先中第一组中的结点个数有偶/奇数个,祖先中第二组中的结点个数有0/1个.时能选出的最大价值 u加入第一组或者第二组+子结点对应状态的最大值(dp[

2017-06-08 15:44:08 554

原创 ARC 075E Meaningful Mean 枚举+树状数组

点击打开链接 题意:n个数,问有多少个区间[l,r]平均数>=k,即满足 a[l]+a[l+1]..+a[r] >= k*(r-l+1) .n p[i]为前缀和i,若区间[l,r-1]满足,p[r-1]-p[l-1]>=k*r-k*l , p[r-1]-k*r >=p[l-1]-k*l 枚举r(开区间),离散化后,利用树状数组求出,前缀r-1中有多少个l(l=p[l-1]-k*l即可 O

2017-06-04 17:37:00 357

原创 ZOJ 2429 Destroying The Graph 最小割(最小点权覆盖)

点击打开链接 题意:n点,m条有向边,n 删除边u->v代价为(a[u]或着b[v]) 则操作看成点,a[u]-b[v]连接一条边,删除所有的边相当于用点(操作)覆盖所有的边. 求二分图的最小点权覆盖即可 利用最小割模型求最小点权覆盖  删除最小割上的边,s-t不存在路径,所以(s,u),(u,v),(v,t)至少有一条边在最小割上. 最小割上的边是满流的,人为的令(u,v)不在最

2017-06-03 13:30:50 497 2

原创 Codeforces 365C Matrix 暴力

点击打开链接 题意:给出A 利用b[i][j]=s[i][j] 若子矩阵左上角(a,b),右下角(c,d)和为A 则(s[a]+..s[c])*(s[b]+..s[d])=A n 特判A=0 非0区间个数乘以0区间的个数+零区间个数^2  #include using namespace std; typedef long long ll; const int N=5e3+20;

2017-06-02 18:08:34 446

原创 Codeforecs 812B Sagheer, the Hausmeister DP

点击打开链接 题意:n 到上一层只能从左端或者右端走 设dp[i][0/1] : 灭了前i层的灯 &&当前在第i层左/右端时的最小时间 dp[i][0]=min(dp[i+1][0]+1+(r[i]-1)*2,dp[i+1][1]+1+m-1) 第i层没灯时 dp[i][0]=dp[i+1][0]  坑点:只有一层,第一层为空... #include using namespace s

2017-06-02 02:22:01 513

原创 Codeforces 811C Vladik and Memorable Trip DP

点击打开链接 题意:n个数a[i],定义区间[l,r]舒适度为[l,r]内不相同数异或和,要求选出若干条不相交的区间,使得舒适度最大. 要求若a[i]被选中 则所有和a[i]相等的数必须在同一区间 n,a[i] 设dp[i]为前i数能选出的最大值. l(x),r(x)为x第一次和最后一次出现的位置 如果能选a[i]结尾的合法区间即r[a[i]]=i  dp[i]=dp[L-1]+s

2017-06-01 18:20:15 345

原创 Codeforces 793C Mice Problem 几何(模拟)

点击打开链接 题意:n个点(x,y),速度(vx,vy),n 某个点落在矩形内的时间t为:x1 max(t1,t2) #include using namespace std; typedef long long ll; typedef pair ii; const int N=1e3+20; const int inf=2e8; const double eps=1e-11; in

2017-06-01 12:33:43 392

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除