codeforces
文章平均质量分 68
青竹梦
在你没有尽全力之前,永远不知道最强的自己有多强!!!
展开
-
cf-#163-总结
郁闷啊,本来能交第三题的。。。自己的思维能力还是有缺陷,打代码的能力不行。虽然打字速度还凑合着,但是没有大局观。必须提高由思想转化成代码的速度。做法就是多打代码~~~~原创 2013-01-23 01:39:21 · 879 阅读 · 2 评论 -
Codeforces Round #229 (Div. 2)
模拟放数过程,从大往小放。先放最外层,最外层有可能不会被放满,然后逐步的往里放,一直到第一层为止。#include#include#include#includeusing namespace std;int dp[100001];void chu(int n,int m){ int i,j; for(i=1; i<=m; i++) {原创 2014-02-16 19:48:05 · 961 阅读 · 0 评论 -
Codeforces Round #230 (Div. 1)
A题:A题题意:定义两个点为相连的,则:1,两点间的欧式距离等于1,并且这两点的任意一个点都没有被锁上2,如果A,B相连,B,C相连,那么A,C相连。定义特殊点为距离坐标原点的欧式距离不超过n的整数点。让你锁上一些点,使得任意特殊点不能和任意非特殊点相连。求出锁得的最少的点。做法:求四分之一圆。枚举x。注意用64位啊#include#include原创 2014-02-19 10:14:11 · 1684 阅读 · 2 评论 -
Codeforces Round #235 (Div. 2)
A,B,C水题,没啥好说的。D:dp[i][j]:现在用的数的状态为i,余数为j的数量st[i]:使用数i,需要增加的状态need[i]:使用数i最多可以增加到的状态。pan[i]:状态i所在的区间。dp[k+st[j]][(i*10+j)%m]+=dp[k][i];#include#include#include#includeusing namespac原创 2014-03-11 14:41:45 · 868 阅读 · 0 评论 -
Codeforces Round #236 (Div. 1) A,B,C
A题:水题不用说,乱搞搞就过了。#include#include#include#includeusing namespace std;int map[51][51];int main(){ int i,j,a,b,c,d,T,n,p; scanf("%d",&T); while(T--) { scanf原创 2014-03-18 12:18:27 · 1415 阅读 · 0 评论 -
Coder-Strike 2014 - Finals (online edition, Div. 1)-a-b-c
好久没写博客了,因为最近也没做到啥有价值的题目。昨天做了一场CF,感觉题目还不错。。A题:水题不多说了。。B题:这道题目的本质就是求谁有可能在所有的时间段都在开会。那么我们就可以假设一开始所有的人都在开会。在已知的这段时间段内,我们可以判断出每个人在会议的时间段的长度。然后我们再求出这段时间段内所有有人的时间长度。如果某个人在会议的时间长度等于所有的人在会议的时间长度的原创 2014-04-23 13:51:12 · 1041 阅读 · 0 评论 -
Codeforces Round #243 (Div. 1)-A,B,C-D
这场CF真是逗了。。。因为早上7点起的,所以到做CF的时候已经17个小时没有休息了,再加上中午5小时的比赛。头脑很不清晰。做第一个题的时候差点读成求最大字段和了。然后发现是水体,迅速A掉。然后开始看了B题,第一遍没有看懂,此时大脑已经看不下去了。然后突然某个群说D是水题。我去看了一下D,我去,D的题意好简单啊。。。。于是,冥思苦想中。。。。。一直到快要1点的时候,还是没有结果。原创 2014-04-28 19:03:15 · 1676 阅读 · 0 评论 -
Codeforces Round #249 (Div. 2)-D
这场的c实在不想做,sad。D:标记一下每一个点8个方向不经过黑点最多能到达多少个黑点。由题意可知,三角形都是等腰三角形,那么我们就枚举三角形的顶点。对于每一个定点,有8个方向可以放三角形。然后枚举8个方向,然后枚举腰的长度。然后判断是否可行。#include #include #include #include #include #include #inclu原创 2014-06-29 15:10:50 · 955 阅读 · 0 评论 -
Codeforces Round #258 (Div. 2)-(A,B,C,D,E)
A:Game With Sticks水题。。。每次操作,都会拿走一个横行,一个竖行。所以一共会操作min(横行,竖行)次。#include#include#include#include#include#include#include#include#pragma comment(linker, "/STACK:1024000000,1024000000")using原创 2014-07-25 14:39:48 · 1872 阅读 · 1 评论 -
Codeforces Round #FF (Div. 1)-A,B,C
A:DZY Loves Sequences一开始看错题了。。sad。题目很简单,做法也很简单。DP一下就好了。dp[i][0]:到当前位置,没有任何数改变,得到的长度。dp[i][1]:到当前位置,改变了一个数,得到的长度不过需要正向求一遍,然后反向求一遍。#include#include#include#include#includeusing namespac原创 2014-07-24 20:33:56 · 1214 阅读 · 0 评论 -
Codeforces Round #254 (Div. 1)-A,B
A:选取两点一边就可以了,很明显可以想出来。。。但是一开始看错题了,sad、、、、#include#include#include#include#include#includeusing namespace std;#define eps 1e-6#define zero(x) ((fabs(x)<eps?0:x))#define maxn 550int val[ma原创 2014-07-07 10:26:19 · 1097 阅读 · 2 评论 -
Codeforces Round #252 (Div. 2)-C,D
C题就是一个简单的模拟,首先给每个人两个。然后把剩下的都给一个人就好了。给的时候蛇形给。#include#include#include#include#include#includeusing namespace std;#define LL __int64#define maxn 330000int main(){ int n,m,k; while(原创 2014-06-19 13:07:12 · 1042 阅读 · 0 评论 -
Codeforces Round #251 (Div. 2)-C,D
C题:思路很简单。由题意可知,奇数的集合有k-p个,偶数的几何有p个。那么我们先选择k-p-1个奇数,每一个奇数是一个集合。然后我们再选择p个偶数,每一个偶数是一个集合,如果偶数的个数不足,那么就用两个奇数去补。然后我们再把剩下的所有的数放在一个集合里。By rowanhao, contest: Codeforces Round #251 (Div. 2), problem原创 2014-06-20 20:30:55 · 1187 阅读 · 0 评论 -
codeforces-148D-Bag of mice-概率DP
dp[x][y]:现在有x个白老鼠,y个黑老鼠,公主赢的概率。那么:如果公主直接拿到白老鼠,概率为x/(x+y),公主赢。如果公主拿到黑老鼠,概率为y/(x+y),那么公主如果想赢,龙必须拿到黑老鼠,概率为(y-1)/(x+y-1);那么逃跑的老鼠为黑老鼠的概率为(y-2)/(x+y-2),为白老鼠的概率为(x)/(x+y-2);那么dp[x][y]=x/(x+y)+y/(x+原创 2014-06-22 13:58:54 · 1215 阅读 · 0 评论 -
Codeforces Round #262 (Div. 2)-A,B,C,D
A. Vasya and Socks水题就不用多说了,直接暴力枚举就完事了。#include #include#include#include#include#include#includeusing namespace std;#define LL __int64int main(){ int n,k; while(~scanf("%d%d",&n,&原创 2014-08-22 14:25:58 · 1142 阅读 · 0 评论 -
hdu-4976-A simple greedy problem.
这个题目很不错首先贪心如原创 2014-08-23 14:36:53 · 1753 阅读 · 0 评论 -
Codeforces Round #263 (Div. 1)-A,B,C
A:这道题目还是很简单的,做过很多遍了,类似于切割木板的问题。把所有的数放在一个优先队列里,弹出两个最大的,然后合并,把结果放进去。依次进行。#include #include#include#include#include#include#include#includeusing namespace std;#define LL __int64#define IN原创 2014-08-27 11:17:41 · 1342 阅读 · 2 评论 -
Codeforces Round #231 (Div. 2)A-D
A题:不解释,注意任意一个位置的数必须大于等于1#include#include#include#include#define LL __int64using namespace std;int main(){ int i,l1,l2; char str[100001]; while(~scanf("%s",str)) { in原创 2014-02-21 12:42:36 · 751 阅读 · 0 评论 -
Codeforces Round #228 (Div. 1)-B-Fox and Minimal path
做法:输入一个数n(例如n=11)。把n转化成二进制为(1011)。那么11构造出来的图为:从点1到点2有三条路,分别为路1,2,3。三条路分别是1011中的三个1,即把11分离成8+2+1。1路上分离出来8条路,8=2*2*2;2路上分离出来2条路,2=2;3路上分离出来1条路。把所有的点画出来即为:红色的点代表图中的点,黑色的线是边。原创 2014-02-07 20:15:09 · 1595 阅读 · 0 评论 -
Codeforces Round #224 (Div. 2)
A题:水题不解释B题:因为b是小于1000的,所以b最多有1000种可能。找到循环节,把当前状态模拟至循环节开始状态。然后把状态置为减去一定的循环节个数之后的状态。最后模拟出最终状态。#include#include#include#includeusing namespace std;#define maxn 1100#define LL __int64LL原创 2014-01-18 09:46:45 · 1451 阅读 · 0 评论 -
cf-#170-div2-后记
这次做cf做的不算理想。第一题还是比较好的,做得比较快。第二题的时候看题意看了很长时间,终于看懂了。然后开始分析,感觉就像是字典树存储。然后层次化遍历。虽然想出来怎么写,但是在写代码的过程中却又很多地方不大熟悉。不得不想想再写。无形之中耽误了很长时间。这主要体现在自己对代码一点都不熟悉,这样很不好。还是自己打的代码少了。以后要注意这方面,不能因为简单而就不打了。第三题只原创 2013-03-01 01:24:21 · 776 阅读 · 0 评论 -
cf-#189-div 2
A题:从前往后暴搜就OK;B题:每次询问的时候都bfs一次C题:异或运算,从后往前运算。-------------分割线---------------------D题:对于第K个人来说,找是谁杀了他,然后dp[k]储存杀他需要的步数。#include#include#includeusing namespace std;int main(){ int n原创 2013-06-25 15:04:47 · 890 阅读 · 0 评论 -
cf-362C-Insertion Sort
题意:已知一个无序的序列,使用冒泡排序对其进行排序,需要进行一定的SWAP()操作次数。现在,让你从这个序列任意选择两个数进行交换,交换后再进行冒泡排序,使得交换后进行的冒泡排序中SWAP的操作尽可能的少。样例1解析:4 0 3 1 2进行冒泡排序需要进行6次SWAP操作。如果交换4,2,那么2 0 3 1 4只需要进行3次SWAP操作。交换4,1,那么1 0 3 4原创 2013-11-15 16:14:18 · 1953 阅读 · 0 评论 -
cf-213-div1-A. Matrix
当时比赛的时候弱爆了,当时只往求数组和上想了,没有想到这个问题的本质。做法:题目相当于就是取两节子字符串,然后把这两节子字符串的和相乘等于a。ns[i]: 子字符串的和等于i的子字符串的个数。#include#include#include#includeusing namespace std;#define ll __int64ll num[4040];ll原创 2013-11-20 16:27:32 · 1654 阅读 · 0 评论 -
cf-364B-Free Market
赤裸裸的推结论啊有没有。。如果能拿到当前值,那么与当前值差值不超过d的值可以拿到。dp求解那些值可以拿到。然后每次拿最大值即可。#include#include#include#includeusing namespace std;int dp[550000];int main(){ int n,k,i,a,sum,j; while(~scanf("%d%原创 2013-11-23 20:41:46 · 1441 阅读 · 0 评论 -
cf-279D - The Minimum Number of Variables-数位dp
数位dp没学好~~假如每一个数放在一个空箱里。状态10010代表目前第2个数和第5个数在空箱里。dp[i]:i状态最少需要几个空箱。dp[i]:所有i状态的子状态最小需要的空箱数。dp[1]=1;#include#include#include#includeusing namespace std;#define maxn 24int a[maxn];int原创 2013-11-23 20:46:48 · 1000 阅读 · 0 评论 -
cf-279E - Beautiful Decomposition-贪心
对于一串二进制。若当前的值的情况是010,那么直接+1;若当前值的情况是01...1(1的个数大于等于2)0,那么相当于最后一位变为1,然后减去第一个1;#include#include#include#includeusing namespace std;#define maxn 2000010int maps[501][501];int xx[5]={1,0,-1,0原创 2013-11-23 20:52:37 · 1747 阅读 · 0 评论 -
cf-366C-Dima and Salad
把问题重新定义为c=a-b*k;寻找一系列c为0的时候a最大的值。因为c可正可负。所以把c正的01背包一次。把c负的01背包一次。当二者相等的时候,把a相加,取最大值。#include#include#include#includeusing namespace std;#define INF 99999999int n,k,i,j;int num[101];原创 2013-11-26 09:38:01 · 1919 阅读 · 0 评论 -
cf-Round #214 (Div. 2)-D-Dima and Trap Graph-dfs+二分
遍历下界,二分上届。dfs是否合适。#include#include#include#includeusing namespace std;#define INF 99999999#define maxn 4001struct list{ int u; int v; int next; int l; int r;}node[maxn*4原创 2013-11-26 16:55:12 · 1238 阅读 · 0 评论 -
cf-Round #215 (Div. 1) -B - Sereja ans Anagrams
昨晚上状态真的很不好,A题一个水题竟然把数组开错了。。。B题也是水题一个,开数组,遍历P。可以把数组a看成p个单链。第一个链:1,1+p,1+2p,......,1+(m-1)p第 i个链:i,i+p,i+2*p,i+3*p....i+(m-1)*p;这样每一个链从头往后扫,若扫到合适的情况,就记录下来。其中要把b数组离散,然后二分查找a数组中的元素在b中的位置。#原创 2013-11-27 09:35:21 · 1330 阅读 · 0 评论 -
cf-Round #216 (Div. 2) -D Valera and Fools-dfs
对于任意状态,给定第一个人和第二个人,就可以知道这个状态的形式。那么任意状态只与第一个人和第二个人有关系。vis[a][b]: 第一个人为a,第二个人为b的状态。dfs求解。#include#include#include#includeusing namespace std;int cnt;int p[5001];int s[5001];int n,m;int原创 2013-12-03 20:24:27 · 1317 阅读 · 0 评论 -
codeforces-223A-Bracket Sequence
从前往后进行括号匹配。如果匹配到,就把当前位置,和被匹配的括号的位置标记为对应括号的位置。然后一段连续的不带0的区域即时一个可用的子串。然后从这些字串中寻找中括号最多的字串。#include #include#include#include#include#include#include#define LL long longusing namespace std;原创 2013-12-28 19:15:56 · 1035 阅读 · 0 评论 -
codeforces-223B-Two Strings
在是S上寻找第一个为T的子串和最后一个为T的子串。在对于T的每一个字符,在第一个子串的位置为ff,在最后一个子串的位置为ll。如果S中的字符为相应的字符,且位置位于ff和ll之间,那么这个字符就符合标准。这样找出所有符合标准的字符。然后看S的每一个字符是不是都符合标准。#include #include#include#include#include#include原创 2013-12-28 19:20:23 · 1363 阅读 · 0 评论 -
cf-379D-New Year Letter
枚举s1,s2字串的纯AC的个数。然后加上s1-s2,s2-s1,s1-s1,s2-s2中产生的AC的个数。注意:数的范围#include #include#include#include#include#include#include#define LL __int64#define maxn 20000using namespace std;LL num[55]原创 2013-12-31 16:03:32 · 1118 阅读 · 0 评论 -
cf-215C-Crosses
枚举a,b,d,然后根据a,b,d的值算出来C。#include#include#include#include#include#include#define INF 1000000#define LL __int64using namespace std;vectorvec;int maps[201][201];LL ans;int n,m,s;int qiu(in原创 2014-01-04 19:00:49 · 841 阅读 · 0 评论 -
cf-208B - Solitaire-记录状态DFS
int dp[n][i][j][k];长度为n,第n-2个的状态为i,第n-1个的状态为j,第n个的状态为k,能不能成功操作。这样时间复杂度为(52*52*52*52);#include#include#include#include#include#include#define INF 1000000using namespace std;char va[15]={'2'原创 2014-01-04 19:39:40 · 1007 阅读 · 0 评论 -
Codeforces Round #221 (Div. 2)
A 题:遍历一遍找到^的位置x。然后从x往前一直到0,左杠杆转化为数字。然后从x往后一直到len,右杠杆转化为数字。然后进行比较。#include #include #include #include #include using namespace std;#define INF 99999999#define LL __int64char str[101原创 2013-12-25 11:23:12 · 987 阅读 · 3 评论 -
Codeforces Round #266 (Div. 2)-C,D
C - Number of Ways直接暴力从前往后寻找,如果找到1/3sum的位置,那么标记++。找到2/3的位置,总数加上标记数。#include#include#include#include#include#include#include#include#include#include#pragma comment(linker, "/STACK:1024000原创 2014-09-17 15:44:10 · 1530 阅读 · 0 评论