自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces 679C Bear and Square Grid 暴力(滑动窗口)

题意:n*n地图,'X'为障碍,'.'可以到达四周相邻的'.'现在给你一次机会:选择某个k*k子矩形将里面'X'变为'.'n,k暴力枚举变化子矩形的左上角,判断和该子矩形连通有哪些联通分量.只要检查子矩形的4个边界即可.O(n^2*k)k*k中可能有和外部相连的联通分量,先加上k*k,然后在内部减小这些连通分量大小,防止重复计算.滑动窗口处理即可.#include u

2017-08-18 10:57:11 889

原创 Codeforces 677D Vanya and Treasure BFS+DP (分段)

题意:n*m地图,保证至少有一个点为a[i][j]=x (x=[1..p]),两点花费为:欧几里得距离.n,m设f[i][j] 从起点到(i,j)(1-a[i][j]已经拿完)的最小花费.相邻两组数量都很大时,转移最坏情况O((nm)^2)cnt[x]*cnt[x+1]>=n*m,最多sqrt对,bfs暴力更新sum(cnt[x]*cnt[x+1]#include u

2017-08-17 17:43:37 583

原创 Codeforces 703E Mishka and Divisors 离散化+DP

题意:给出长度为n的序列a,子序列合法:子序列中每个元素相乘后得到的乘积能被k整除n 设f[i][d]为 前i个数中选出乘积为d的倍数需要的最少个数.f[i][d]=min(f[i-1][d],f[i-1][d/gcd(d,a[i])]+1)  (f[i][x]离散化第二维,因为d每次都转移到自己的某个因子中.最坏情况下只有6720个因子..#include using

2017-08-15 17:59:29 623

原创 Codeforecs 675E Trains and Statistic 贪心+DP

题意:给出n-1个数,a[i]表示: 从i能直接到达点[i+1,a[i]].p[i][j]为i->j的最短路径.n考虑从i出发[i+1,a[i]]这段只需要1,[a[i]+1,max(a[i+1],a[i+2],a[a[i]])]这段最短距离为2a[m]=max(a[i+1],a[i+2],a[a[i]],也就是说若移动次数大于1,第一步肯定移动到m点(m点的下一次选择最多)设

2017-08-14 18:33:58 498

原创 Codeforces 713C Sonya and Problem Wihtout a Legend DP(经典)

题意:给出长度为n的序列a,op:将任意一个数增大/减小1.n当a递增时:a[i]也就是b[i]=a[i]-i非递减.同样b非递减时,a也就是递增的.转为求使b非递减最小代价序列b非递减,则最后b中元素都为原来的某些元素,假如x!=b[k] 则通过逆操作把x变为相邻某个b[k] 操作减少,单调性不变.设dp[i][j]:前i个元素变非递减,第i个元素为原来第j大时的最小代价

2017-08-11 19:43:46 640

原创 Codeforces 705D Ant Man DP(贡献)

#include using namespace std;typedef long long ll;const int N=5e3+5;const ll inf=2e16;int n,s,t,x[N],a[N],b[N],c[N],d[N];ll dp[N][N];ll solve(int i,int j,int k){ if(i==n) { if(j==0&&k==0)

2017-08-11 01:31:17 433

原创 Codeforces 707D Persistent Bookcase 暴力(bitset)

题意:书房有n个架子,每个架子有m层.q次操作.op1:第i个架子的第j层放一本书, op2:拿走第i个架子的第j层上的书.op3:反转第i个架子:将第i个架子中有书的拿走,没书的放书.op4:把书房恢复到第k次操作后的状态.n,m离线:因为每次暴力更新加上bitset优化区间翻转后复杂度为O(mq/32).则把每个op看成图中的结点.第i次若进行op4则将i连到x结点

2017-08-11 01:26:06 404

原创 Codeforecs 705C Working Routine 模拟(链表)

题意:n*m矩阵,q次操作,每次给出两个矩形的左上角坐标,及宽度和高度.交换这两个不相交的矩形.n,m题意限制的很紧,一条直线上不会有属于不同矩形的格子.每个格子存其右边和下面元素,交换两个子矩形不改变其内部指针,变得只有其四周一圈的指针O(q*(n+m))#include using namespace std;typedef long long ll;const int

2017-08-08 20:48:05 399

原创 Codeforecs 700D Connecting Universities 构造

题意:n个结点的树,其中有2k个标记点,每个点只能配对一次,将标记点配对后,每问k对标记点距离累加和最大为多少?,n,k首先一条边u-v的贡献最多为min(sz[v],2*k-sz[v).其次每条边都能达到这个上限.从深度大的边开始check,假如存在u-v小于上限,则说明以v为子树中,至少有一个配对点(a,b).v之外的子树中有配对点(c,d).将(a,c),(b,d)配对,贡献增加.当

2017-08-08 09:05:08 339

原创 Codeforces 698C LRU 概率+状压

题意:有一个箱子最多装k件物品,现在有n件物品,第i件物品被询问的概率为pi,当第i件物品被询问时,如果第i件物品不在箱子里面,则把第i件物品加入到箱子中,若箱子物品数量>k,则移除最早添加进来的物品.问10^100次查询后,每个物品在箱子中的概率? n,k询问10^100次,物品最多只有20个,所以可以说箱子最后肯定有k个物品问题转化为求最后状态为S的概率,初始时抽到k种不同

2017-08-07 15:38:39 441

原创 Codeforces 696C PLEASE 概率(推公式)

题意:3个杯子,中间杯子放着炸弹.每一轮从左/右选一个杯子和中间杯子交换(等概率).问n轮后,中间杯子有炸弹的概率? n=a[1]*a[2]..a[k] k第i轮要想在中间则第i-1轮一定不能再中间 所以设dp[i]:i轮后在中间的概率.dp[i]=(1-dp[i-1])*0.5 a[i]因为最后答案要写成分数形式p/q.发现q每次都增大2.dp[i]=(1-dp[i-

2017-08-06 12:10:23 495

原创 Codeforces 689E Mike and Geometry Problem 思维

题意:n条线段[li,ri],f[l,r]为线段[l,r]的长度,问任意k条线段交集长度的累加和?n,k若点p被m条线段覆盖,则对答案贡献C(m,k),点的数量很多,转为计算f[i]:正好被i条线段覆盖的点有多少个?答案为:f[i]*C(i,k)(i=k..n),端点最多2n个,利用前缀差分.一段一段算即可(同一段中的点被覆盖次数相同)#include using namespa

2017-08-05 10:15:35 388

原创 Codeforces 687C The Values You Can Make DP

题意:全集A为n个a[i],若有某个集合B其和为k,则B的任意一个子集C定义其元素之和x为合法n,k,c[i]设dp[i][j][k] 表示前i个数能凑出子集和为j,和为j的集合又有子集和为k考虑第i个数是否加入,加入到集合j时,又分是否加入集合j的子集.dp[i][j][k]|=dp[i-1][j][k]|dp[i-1][j-a[i][k]|dp[i-1][j-a[i]][k-a

2017-08-03 21:25:34 502

原创 Codeforces 651E Table Compression 拓扑序

题意:给出n*m矩阵a,要求把矩阵a压缩成矩阵b.b的元素尽量小.并且满足下列条件若a[i][j]若a[i][j] 1a[i][j]和其同行同列有着拓扑序,则从a[i][j]最小的开始填,每次维护行/列的最值即可.但同行同列中若有相同的? 把这些同行同列相同的数用放到同一个集合,并查集维护要取的值即可.#include using namespace std;typ

2017-08-02 21:43:44 408

原创 Codeforces 665E Beautiful Subarrays (01Trie)

题意:n个元素a[i],问有多少个区间[l,r] 满足a[l]^a[l+1]..a[r] >=k.n枚举区间结尾r,如何快速找到有多少个前缀si满足si^sj>=k?num[u]:记录有多少个前缀经过该结点,查询时保存当前异或和val,若val+(1=k若val+(1=k 相反结点子树中任意个前缀都满足,累加其num[u]后,跳到相同结点上继续查询.O(nlogX)#inc

2017-08-02 11:40:14 393

空空如也

空空如也

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

TA关注的人

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