Codeforce 220 div2】的更多相关文章

D 插入: 在当前指针位置sz处插入一个1,col[sz]记录插入的内容,sz++; 删除i: 找到第i个1的位置,赋为0; 于是转化为一个维护区间和的问题; trick: 如果是依次删除a[0],a[1]...a[k], 那么对应的删除操作应该为 a[0],a[1]-1,a[2]-2...a[k]-k,要把前面删掉的算进去; #define maxn 1000100 int bit[maxn],a[maxn],n,m,col[maxn],sz; int lowbit(int x){return…
220 DIV2 B. Inna and Nine input 369727 output 2 input 123456789987654321 output 1 题意:比如例子1:369727-->99727-->9997 , 369727-->99727-->9979 14545181例子2:14545181-->1945181-->194519-->19919, 14545181-->1945181-->199181-->19991 但是:…
这场气场太大,居然一个题不会! 所以没交! 赛后发现 A:陷阱多- -!不要超过上下界,可以上去再下来! B:不会做! C:自己想太多- -!…
今天大家一起做的div2,怎么说呢,前三题有点坑,好多特判.... A. Cakeminator 题目的意思是说,让你吃掉cake,并且是一行或者一列下去,但是必须没有草莓的存在.这道题目,就是判断一下每行和每列的情况,看是不是有草莓存在,有的话就标记一下.后面就直接把木有草莓的行和列求和再减去重复路过的cake就行,不过你第一遍写的比较麻烦,小数据过了,后来WA了,现在改了一种写法.就是简单的加加减减.上代码: #include <iostream> #include <cstdio&…
题目链接:http://codeforces.com/contest/507/problem/C 解题报告:现在有一个满二叉树型的迷宫,入口在根结点,出口在第n个叶节点,有一串命令,LRLRLRLRLR.....,L表示当前向左走,R表示现在向右走,然后如果碰到如果下一步的点是已经走过的,则跳过这条命令,如果下两步都是走过的话,则回到该节点的父节点.问从根结点走到出口一共到过多少个节点,包括出口节点,不包括根结点. 这是一棵满二叉树,现在假设出口的E那个点,从1出发,向左走,很显然,出口跟我现在…
Inna and Pink Pony 输入n,m,i,j,a,b 可以看成n行m列的矩阵,起点(i,j),每次移动(a,b),(-a,-b),(-a,b),(a,-b) 可移动到(1,m),(n,1),(n,m),(1,1)四个方向 如果可以移动到这四个点中的一个或多个. 输出到其中一个点的最短距离 如果不能输出 Poor Inna and pony! input 5 7 1 3 2 2 output 2 input 5 5 2 3 1 1 Poor Inna and pony! PS:开始想成…
Peter and Snow Blower 题意:有n(3 <= n <= 100 000)个点的一个多边形,这个多边形绕一个顶点转动,问扫过的面积为多少? 思路:开始就认为是一个凸包的问题,像poj2187求点对平方的最大值一样,但是有一个点是确定的(ps:这道题在div1里面可是A啊!这么复杂?),所以直接求解即可,时间复杂度也就O(n);还有就是怎么求多边形到确定点的最小距离呢?这就不只是暴力求点对之间的距离这么简单了.因为一个多边形绕一个点转动时,有时候是定点到边的距离,所以转化为了点…
D 一开始想错了,试图用"前缀和-容量"来求从上层流下来了多少水",但这是错的,因为溢出可能发生在中间. 然后发现对于每层,溢出事件只会发生一次,所以可以用类似并查集的办法,在每次加水后直接更新每层的容量就行了. E 推出公式后发现只要预处理坐标前缀和sum[]和sum的前缀和ssum[]就可以在o(1)时间内求出给定区间的答案, 接下来枚举区间就行了(区间长度是给定的): 左端点右移,需要先删除第一个点,相当于后面每个点产生的统计值减去一个值v,v可以利用sum快速计算;…
C 假设每种颜色的个数都相同,可以用轮换的方式,让答案达到最大n,当不同的时候,可以每次从每种颜色中取出相同个数的手套来操作; 一直迭代下去直到只剩下1种颜色; 再将这一种颜色与之前交换过的交换就行了,只要保证不会交换出同色手套即可. bool cmp(node x,node y) {return x.t<y.t;} void add2ans(int l,int r,int t) { // printf("add:l=%d r=%d t=%d\n",l,r,t); rep(i,t…
D 只要搞清楚一个性质:确定了当前最大和次大的位置,局面就唯一确定了; 根据这个性质设计dp,统计到达该局面的方法数即可. E 询问的要求是: 求有多少个区间至少覆盖了询问的点集中的一个; 转化成逆命题比较好算: 算出排好序后相邻的点之间有多少个完整区间,再用n减去它. 于是问题转化为回答若干询问[l,r] ,它当中有多少个完整的区间. 可以用经典的离线+树状数组来做. #define rep(i,n) for(int i=0 ; i<(n) ; i++ ) #define ls ((rt)<…
题意   在一个DAG上面有N个点M条边,每一条边上都有一个小写字母.两个人Max and Lucas 每个人一颗棋子,两个人轮流行棋,当前这一步选择的路上面的字母必须大于等于上一步路上面的字母,当轮到一个人她无法行棋时她便输了.每个人行棋时走会走最优情况.输出所有两个人初始位置的输赢情况. 分析 记忆搜索:dp[u][v][c]当前先手在点u,后手在点v,能走的字母大于等于c:先手胜利则dp[u][v][c]=1否则dp[u][v][c]=0;   若G[u][x]=c2,且c2>=c,则if…
题意:给一棵n个结点的无根树染色,求使每个结点距离为k的范围内至少有一个被染色的结点的总染色方法数目 分析:首先我们定义: 对于结点v, 如果存在一个黑色结点u距离v不超过k,则结点v被“控制” 首先将无根树转换成以1为根的有根树,设dp[v][i]为对于以v为根的子树,距离v最近的黑色结点深度为i时, 该子树中结点全部被控制或者可能在其他子树的影响下被全部控制的染色方法数. 下面来解释一下, 我们知道,当两个黑色结点距离不超过2*k+1时,其间的所有节点都被控制.那么当 i <= k 时,子树…
---恢复内容开始--- C: 由mex函数性质可知 ,对任意一个区间,都需要从0开始依次填1,2直到填满,那么,所有区间最小mex的最大值取决于最短区间长度k. 构造a数组之需要从0-k-1依次填数,即a[i] = i%k 代码如下: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 int n, m; 7 int main() { 8…
Codeforces A                     B                        C                             D                                   E                                  57 div2         比较简单的题!树状数组维护!             75 div1   简单题!排序~                               …
原题链接:codeforce 267 Div2 C 问题描述: 给定长度为n的数组a[],从中选择k个长度为m的子数组,要求和最大. 形式描述为:选择$k$个子数组[$l_1$, $r_1$], [$l_2$, $r_2$], ..., [$l_k$l1, $r_k$] (1 ≤ $l_1$ ≤$r_1$ ≤$l_2$ ≤ $r_2$ ≤... ≤$l_k$ ≤ $r_k$ ≤ n; $r_i-r_i+1$), 使得$\sum_{i=1}^{k}\sum_{j=l_i}^{r_i}p_j$ 问题…
codeforce Round #643 #645 #646 div2 Round #643 problem A #include<bits/stdc++.h> using namespace std; #define ll long long ll findmin(ll x){ ll minn=99; while(x!=0){ if(x%10<minn) minn=x%10; x/=10; } return minn; } ll findmax(ll x){ ll maxx=-1; w…
e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头一小改就过了! 只能呵呵...C题还是看了下,又没写,也许写不出吧...的确时候还是看了别人的额,自己写只到第8组WA! 希望下次少,一点! 哎,等我不,b了这个世界也许都不同了!…
真的是b到不行啊! 尼玛C题一个这么简单的题目没出 aabbccddee 正确的是aabccdee 我的是   aabcdee 硬是TM的不够用,想半天还以为自己的是对的... A:题... B:题... 妈蛋,我做完A题第一的3分钟后D题出来了... 这TM的还是div2,到底还是我太弱了!…
这次的A题没注意要到100- -, B题没做,后来做要注意下1和long long C题当时坑的一B,用了个蠢办法,后来还错了,现在改了,还是蠢办法,等等再去用dp吧,而且本来就只有01用个鸡巴的树状数组啊... D题利用i+j的和去减掉i然后判断小于步数和n的最小值,初始化为1和步数-m+1的最大值就可以了在判断小于k次,方法比我原来的好xx倍- -…
这回的看错时间了! 发现理论可以涨分的- -…
这次CF虽然,但是- - 第一题看了很久的题目意思额,虽然慢了点- -,但还算没出错,还学会了hack了- -,还+了100- - 第二题想了很久- -...后来发现可以暴力- -,哎 第三题本来也应该过的- -,没用筛选就TLE了- -,哎,就是笨!…
这回的C- -,弄逆序,我以为要弄个正的和反的,没想到是等价的,弄两个还是正确的,结果我又没注意1和0只能指1个方向,结果弄了4个,取了4个的最小值就错了,自己作死没弄出来...,后面又玩去了...哎- -!…
一下子没打,这比赛,就被虐成狗!…
这场断网,本来有个别人的比较卡的无线 但后面睡着了- -! C:额,逆向想下! B:... A:...…
每次的CF都是一把辛酸泪! 什么时候能打破这局面,昨天做着睡着了! 有时候有的题目也就差一线! 哎,! A:杠杆原理! B:算最后负的和! B:没弄出来当时就脑短路... C:事后写了个n*log(n)*64的程序居然过了,果然CF机器比较快? 再次看,原来是n*log(n)+64尼玛- -!,其实也有点慢了- -!…
妈蛋,C题又没搞出来! 看上去很简单的一题 到是这次的题目意思都比较容易懂,C没弄出来时,回去看了下A,以为来不及了,没想到这次的手速还是可以的7分钟搞出来了,因为太简单- -! A:大于两倍的不行- -! B:一个傻逼二分题,又因为上限少打了几个0又白白错了次,而且时间也用的太多了,以为要用大数- -,都不敢搞- -!,额回头一看发现这题跪了- -!哎,结果还是精度小了,不过也不用大数,改成usigned的就可以了!妈蛋,可是后面又错了,发现妈蛋上限还是少了个0,结果又错了,上限又加了个m-…
A:没个元素的个数少的变成多的和就是了 B:居然被systemtest搓掉了- -分东西,我改的代码,还是shit一样的过的...别人的直接两个操作数相减就可以了! C:二分题- -,没想到比赛时因为上限取成n错了3次,因为原来就可能有所以可能加起来不止n个!,还有最后输出时要最小为0,因为有可能买不起结果为负数了! 虽然还是没有真正的3题,错了一题,不过还是比较开心的,毕竟是第一次3题过pretest,虽然第三题自己傻逼了下!原来对的,自以为是改了,额,我就这么点 ....了? 尼玛,下次再来…
e,妈蛋,第二题被hack了 没理解清题意,- -居然也把pretest过了,- -# A: 呵呵! B:包含任意一个子集的输出NO!,其他输出YES! C:贪心额,类似上次的Topcoder的500 好吧,看了别人的后才知道自己too simple!虽然也是贪心,自己原来的到是错的离谱0 0!,加个最长长度的就不会有重复的了,然后用总的减重复的就是个数了!…
还以为就这么点分了,不会跪了,起码有点加,生活都这么艰难了,为什么不让我好好地活下去! 是不是世界对我充满了恶意! 当然还是自己太菜! B题没初始化第一个就杯具了一次 C题大概的弄出来了,调了半个小时,感觉不用心一样,虽然最后还是有了新bug的发现可是也来不及了! 妈蛋,现在看早就是对了的了, 一没看清就交了,判断去掉了,条件都不记得加!…
我是不是快要滚蛋了,这次CF爆0? 居然第一题都过不去了,妈蛋附近有没有神经病医院,我要去看看! 精力憔悴! 第一题,我以为要恰好这么多钱,不能多余,想想这也没必要,不符合逻辑,及自己就是这么傻逼! 写了个这,B代码 int main(){ while (~scanf("%d", &n)){ int x, y; k = -; ; i < ;i++) scanf(], &a[i* + ], &b[i*], &b[i* + ]); ; i < ;…