http://codeforces.com/contest/339/ 这场正是水题大放送,在家晚上限制,赛后做了虚拟比赛 A,B 乱搞水题 C 我是贪心过的,枚举一下第一个拿的,然后选使差值最小的那个物品. code D 裸的线段树,几乎不用思考,push_up函数要注意一下即可 code E 最多三层,暴力搜一下.按以下两个方向搜索 1.找到左边第一个不匹配点l,从右往左找到标号为l的位置r,翻转区间<l, r> 2.找到右边第一个不匹配点r,从右往左找到标号为l的位置l,翻转区间<l…
http://codeforces.com/contest/341 赛后做的虚拟比赛,40分钟出了3题,RP爆发. A计数问题 我们可以对每对分析,分别对每对<a, b>(a走到b)进行统计,那么这对<a, b>产生的期望为distance(a, b)/n (把这一对选出来以后相当于一个点,那么分子distance(a, b)*(n-1)!,分母n!,     (n-1)被约掉了.) 这样的算法是O(n^2)的,问题转化为统计所有对<a, b> 的距离.我们可以对输入的…
好久没有写博客了,一直找不到有意义的题可以写,这次也不算多么有意义,只是今天是比较空的一天,趁这个时候写一写. A. B. 有一点贪心,先把每个拿去3的倍数,余下0或1或2,然后三个一起拿. 对于以上的做法我们少考虑了一种情况: 即 a,b,c三个数对3取模以后为2 2 0 假如 c >= 3,   那么  我把c拿得只剩 3, 那么 2 2 3 可以拿2次, 而 以上的贪心只能拿1次. 所以这种情况还要加上一次 code C. 先算出1个字符串周期分别在x,y方向上走了xx,yy步 所以它能到…
题目传送门 /* 线段树的单点更新:有一个交叉更新,若rank=1,or:rank=0,xor 详细解释:http://www.xuebuyuan.com/1154895.html */ #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <cmath> #include <…
看了codeforces上的大神写的题解之后,才知道这道题水的根本! 不过相对前面两题来说,这道题的思维要难一点: 不过想到了水的根本,这题也真心不难: 方法嘛,就像剥洋葱一样,从外面往里面剥: 所以呢,dfs,每次往左或者往右找到乱序的那个元素,反转一下: 这样就行了,而且题目说了保证能够在三次内搞定: 证明我也不会,意思应该就是这样了! #include<cstdio> #include<vector> #include<algorithm> #define max…
A. Helpful Maths 题目大意 给一个连加计算式,只包含数字 1.2.3,要求重新排序,使得连加的数字从小到大 做法分析 把所有的数字记录下来,从小到大排序输出即可 参考代码 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; ; ]; ], n; int main() { scanf("%s…
A.Helpful Maths 分析:将读入的字符转化为数字,直接排个序就可以了. #include <cstdlib> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; ; int seq[N]; int main() { char c; , idx = ; while ((c = getchar()) != EOF) { if (c == '+'…
开了个小号做,C题一开始看错范围,D题看了半小时才看懂,居然也升到了div1,囧. C - Xenia and Weights 给出一串字符串,第i位如果是1的话,表示有重量为i的砝码,如果有该种砝码的话,数量有无限多个. 现在往天平的两侧放入,每次放入的要求: 1.每次放入时和上次放入的砝码的重量不能一样. 2.放入的那端天平必须必另一端重. 问能否放入n次,能的话,求放入方式. 分析: 比赛时看到很多人写的是贪心,但是想不到有什么好的数据叉掉他们,囧. 我写的是直接dfs爆搜.代码略吧. D…
哎....这次的比赛被安叔骂的好惨! 不行呢,要虐回来: 这道搜索,老是写错,蛋疼啊! 果然是基础没打好! #include<cstdio> using namespace std; ],m; ],flag=true; void dfs(int n,int ch,int x) { if(n>m) { flag=false; printf("YES\n"); ; i<n; ++i) printf(" %d",ans[i]); printf(&q…
这题也是一个线段树的水题: 不过开始题目没看明白,害得我敲了一个好复杂的程序.蛋疼啊.... 最后十几分钟的时候突然领悟到了题意,但是还是漏掉一个细节,老是过不去... 以后比赛的时候不喝啤酒了,再也不喝了.... 贴上代码: #include<cstdio> #include<cstring> #define maxn 262200 using namespace std; struct tree { int num; int l,r; tree *left,*right; }…