CDOJ
文章平均质量分 63
sky-edge
这个作者很懒,什么都没留下…
展开
-
CDOJ 1168 凤神与狗(数论_概率)
D - 凤神与狗Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)凤神隐居山林,与猫狗为伴。起初,他拥有c只猫和d只狗。每天下午他随机从中选择一只出去游玩并且晚上归来。如果他带的是狗,则第二天早上狗的数量增加w只,否则,猫的数量增加w只。由于凤神特别钟爱狗,某些重要的日子原创 2015-06-28 08:43:40 · 1368 阅读 · 0 评论 -
CDOJ 1041 Hug the princess
代码:#include #include #include #include long long int i=0,j=0,t=0,n=0,a[100010]={0},b[30]={0};long long int x[30]={0},re=0;int main(){ scanf("%lld",&n); for(i=0;i<n;i++) { scanf("%lld",&a原创 2016-03-21 12:42:43 · 345 阅读 · 0 评论 -
CDOJ 1034 AC Milan VS Juventus
代码:#include int main(){ int a=0,b=0,max=0,min=0; scanf("%d %d",&a,&b); if(a==b) printf("No"); else if(a<=5&&b<=5) { max=(a>b)?a:b;min=(a<b)?a:b; if(max==5&&(min==0||min==1||min==2)) print原创 2016-03-21 12:43:43 · 312 阅读 · 0 评论 -
CDOJ 1045 Lovely princess
代码:#include int main(){ int n,max,i,j,t,a[1010],b[1010],c[1010],sum[1010]={0}; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d %d",&a[i],&b[i]); } for(i=1;i<n;i++) for(j=0;j<n-i;j++) if(原创 2016-03-21 12:44:55 · 278 阅读 · 0 评论 -
CDOJ 1035 Bob and Alice 神tm烦的分情况讨论
各种==0什么的临界条件多的很,所以先把所有的特殊状况判一遍,在正常之后再细心地模拟就好傻逼地把k>=l和2*k>=l合成了一种情况傻逼地被顺逆时针给绕晕了,包括点的顺序方式和bob、alice的移动方向。要清楚每个方向要怎么计算代码有注释,自己看吧#include #include #include #include using namespace std;in原创 2016-03-21 15:11:24 · 538 阅读 · 0 评论 -
CDOJ 215 吴队长征婚 DFS+剪枝
吴队长征婚这件事因为请客而没有传出去(虽然他忘了请一个队吃饭),于是吴队长高兴地玩起了木棒。吴队长拿了一些长度相同的木(guang)棒(gun),随机的把它们截成了NN段,每一段最长50。现在他想把这些木棒还原成原来的状态,但是他忘记了原来的木棒有多少根,也忘记了每一根有多长。请帮助他设计一个程序,帮他计算之前木棒可能的最小长度。输入数据保证每一段木棒长度都大于0。输入有多组数据,每组数据分为原创 2016-03-21 23:37:10 · 6712 阅读 · 0 评论 -
CDOJ 1066 Palindromic String 字符串哈希/马拉车算法
就是一个一直求回文串的题,,,回文值就是递归定义的,如果它是回文串,就是它的那个子串的回文值+1,不是就是0。然后我还自做聪明地写了一个快速幂,结果被卡了,一看当时的讲解,直接一个预处理数组就好,,,唉,,窝还是智障啊具体不想写了,有时间再来补代码:#include #include #include #include using namespace std;#d原创 2016-03-24 20:54:07 · 521 阅读 · 0 评论 -
CDOJ 1087 基爷的中位数 二分
给你NN个数,X1,X2,...,XNX1,X2,...,XN, 基爷让我们计算任意两个数差的绝对值 ∣Xi−Xj∣∣Xi−Xj∣(1≤ij≤N)(1≤i 。 这样,我们可以得到 C2NCN2 个数。现在,基爷希望聪明的你能用一个简单的程序求出这 C2NCN2 个数的中位数!输入有多组数据。每组数据,第一行一个整数 NN,第二行给出NN 个整数原创 2016-03-25 23:59:12 · 532 阅读 · 0 评论 -
CDOJ 1304 Infinity Set
当两个数互质时,在枚举到一定程度后,后面一定是连续的,那如果不互质呢?同除以gcd就好了,当然,最后求第k小的时候记得在乘回来那什么时候开始连续呢?a*b之后,为什么呢?a*1,a*2,a*3分别对b取余,一直到a*b,能把所有的余数都取一遍,然后当要表示某个数时,可以根据它取余b是多少,先减去对应的多少个a,然后剩下的就是b的整数倍了。当然,在a*b之前可能就已经连续了,但是a*b之后一定是原创 2016-03-27 11:02:51 · 514 阅读 · 0 评论 -
CDOJ 1305 Just a Magic String
子串只有10^6,所以可以直接去匹配,不管什么规律,但是,母串要到4*10^6,才能考虑到10^6的串的所有情况,具体,用小数据列举一下就可以发现。然后我用的是KMP,貌似暴力匹配也能过,另,正解貌似是DFS代码:#include #include #include #include #include using namespace std;#define maxn原创 2016-03-27 11:05:18 · 518 阅读 · 0 评论 -
CDOJ 1300 Easy Problem
队友说是大水题代码://Template for ACM#define LL long long#define INF 0x7FFFFFFF#define LINF 0x7FFFFFFF7FFFFFFF#include #include #include #include #include #include #include #include #include原创 2016-03-27 11:07:17 · 432 阅读 · 0 评论 -
CDOJ 1297 bank
队友卡了很久,然后说是傻逼题,胡乱交了一发就过了代码:#include#includedouble x,y;int t;int main(){ scanf("%d",&t); while(t--) { scanf("%lf%lf",&x,&y); double left; if(y==0.01)原创 2016-03-27 11:08:57 · 526 阅读 · 0 评论 -
CDOJ 1299 Date
最后过的一道题,看队友的样子,貌似是神烦的题2800年一循环,菜勒公式可以搞代码:#include#include#includelong long sum[2801][13];void init(){ memset(sum,0,sizeof(sum)); long long count=0; for(int i=1;i<=2800;i++)原创 2016-03-27 11:10:44 · 462 阅读 · 0 评论 -
CDOJ 414 Eight Puzzle 八数码
貌似当时都是双向BFS写的,现在自己写,就想先写单向的,然后就先是MLE,然后发现标记数组太大,于是学了一发康托展开,然后就是TLE,然后就发现需要记录状态,怎么记录呢,改了改发现就改成DFS的记忆化搜索了,然后又去学姿势,发现是从终点开始往回BFS,就能把所有情况都找到,并且BFS的过程中就可以记录下来,然后就AC了。在这过程中也发现了一篇好文章,八数码八境界广搜+哈希+打表 代码:原创 2016-03-29 00:18:59 · 421 阅读 · 0 评论 -
CDOJ 1085 基爷与加法等式 DFS
就是给一个由字母组成的加法等式,问这个等式有多少种情况,相同字母代表相同数字,不同字母代表不同数字,不存在前导0.呃,就是DFS搜索,但是刚开始我的姿势不对,就T了。刚开始我是就枚举前面的所有情况,然后看得到的和能不能组成最后的和。然后,这个搜索姿势很智障地T了。。。然后就去度娘了,,,发现要按每一位进行搜索,就是搜索所有的个位数,然后查看和的个位数是否能满足,再依次搜索十位,百位。。原创 2016-04-01 12:32:06 · 371 阅读 · 0 评论 -
CDOJ 1039 Fabricate equation
奇奇怪怪的题,奇奇怪怪的代码,反正问题就在0和9身上,窝已经瞎了有时间再回来继续搞官方的题解:设 Y 为 anan−1an−2···a3a2a1,X 为 bnbn−1bn−2···b3b2b1,X −Y = Z(cncn−1cn−2···c3c2c1)。显然,当 X 每一位都取 9,这样对应的 k 为 n,所以答案一定不大于 Y 的位数。容易发现,有些情况答案可以 更优: 1. 对于第原创 2016-03-21 12:28:04 · 278 阅读 · 0 评论 -
CDOJ 1086 邱老师降临小行星 记忆化搜索
人赢邱老师和任何男生比,都是不虚的。有一天,邱老师带妹子(们)来到了一个NN行MM列平面的小行星。对于每一个着陆地点,邱老师总喜欢带着妹子这样走:假设着陆地点为(r0, c0)(r0, c0),那么他们下一步只能选择相邻格点,向四周走,即(r0–1, c0)(r0–1, c0), (r0 + 1, c0)(r0 + 1, c0), (r0, c0–1)(r0, c0–1)或(r0, c0 + 1)原创 2016-03-17 18:24:05 · 490 阅读 · 0 评论 -
CDOJ 1088 王之迷宫 BFS
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)王被困在了一个3维的迷宫中,他很想逃离这个迷宫回去当学霸,你能帮助他么? 由于王很仁慈,他悄悄地告诉你,本题读入迷宫的每一行时,要用scanf("%s"...) ......Input多组测试数据,对于每组测试数据原创 2015-06-21 20:06:03 · 860 阅读 · 0 评论 -
CDOJ 1059 秋实大哥与小朋友(离散化)
本文部分代码及思路来源于:http://www.cnblogs.com/Xiper/p/4470202.html秋实大哥与小朋友Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)秋实大哥以周济天下,锄强扶弱为己任,他常对天长叹:安得广厦千万间,大庇天下寒士原创 2015-06-22 22:04:55 · 967 阅读 · 0 评论 -
CDOJ 1074 秋实大哥搞算数(栈_表达式求值)
秋实大哥搞算数Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)秋实大哥大学物理挂科了,于是在下学期的前两周的某一天要悲剧的补考。为了不给学校的挖掘机大楼做贡献,秋实大哥决定在假期里努力复习。当然,良好的计算能力也是非常必要的,毕竟是涉及计算自己做多少分的题能够通过考试的原创 2015-07-08 20:47:04 · 725 阅读 · 0 评论 -
CDOJ 763 树上的鸟儿(水题/模拟题)
树上的鸟儿Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)作为电子科大的一员,大家都知道,我们校园有很多高大的银杏树,现在小明正在观察一棵树上的鸟儿,他发现了一些规律。在这个树上,有一些雄鸟和雌鸟(小明很厉害,能分得出鸟儿的雄雌),假如来了一只雄鸟,它会原创 2015-07-09 00:34:48 · 615 阅读 · 0 评论 -
CDOJ_1063 秋实大哥与妹纸(堆结构)
秋实大哥与妹纸致中和,天地位焉,万物育焉。秋实大哥是一个追求中庸的人。虽然秋实大哥的仰慕者众多,但秋实大哥不喜欢极端的妹纸。所以他想从所有仰慕自己的妹纸中挑选出一个符合中庸之道的。每一个妹纸对秋实大哥的仰慕程度可以用一个整数ai来表示,秋实大哥想要找出这些数的中位数。计算有限个数的数据的中位数的方法是把所有的同类数据按照大小的顺序原创 2015-07-13 23:59:20 · 715 阅读 · 0 评论 -
CDOJ 203 Islands(并查集)
题目链接:http://www.acm.uestc.edu.cn/#/status/list?problemId=203题目大意:有一个岛屿是n*m的长方形的,每个格子的高度会给定,然后这个地方的水位会逐年上涨,在第i年时水位是i。就是说,所有高度现在给出n和m(1解:啊,看的别人的题解都说,这种连通块的题,一看就用并查集搞,不过想想,Kruskal就是用并查集搞的,貌似是这个道理(雾原创 2015-12-19 22:54:29 · 460 阅读 · 0 评论 -
CDOJ 1061 秋实大哥与战争 暴力/set
链接: http://www.acm.uestc.edu.cn/#/problem/show/1061题意:就是有一排士兵,在某个时刻,某个士兵可能会死,序列就会从这里断开,在某个时刻,某个士兵可能会被复活,然后查询任意时刻,这个士兵所在的序列长度。解:说实话,我对这个题有恐惧感,因为看他们讨论时感觉好怕怕的样子,然后自己写了一发,最暴力的方法,然后改了一个傻逼笔误,就过了,跑的时间也原创 2015-12-20 17:08:13 · 608 阅读 · 0 评论 -
CODJ 1070 秋实大哥打游戏 并查集
有N个独立的点,标号为1,2,3,…N。现在要把他们连接起来,每次选取x和y两个点,x是它所处集合的中心,y不一定是它所处集合的中心,然后在xy间连一条长度为|x-y|mod1000的边。然后把这两个集合合并起来,新集合的中心是原y所处的集合的中心。有两种操作,I x y表示选取x和y合并。E x表示查询x到它所处集合中心的距离。O表示结束。并查集的套路,但是在查询的时候,路径压缩的时候,更新点到集合中心的距离即可。原创 2016-03-09 19:11:58 · 335 阅读 · 0 评论 -
CDOJ 1060 秋实大哥与快餐店 字典树
秋实大哥有一些菜,每个菜有标号CID,也会来一些客人,每个客人也有标号PID。对于每个客人, PID^CID (此处为异或)值越大,他越喜欢。输入:第一行是一个n(1接下来m行,有两种,一, 0 c:表示新研制出来一道标号为c的菜。二,1 p:表示来了一个标号为p的客人,请输出他最喜欢的菜。字典树来做,用字典树按01分叉,从第20位开始分一直到第0位,然后将这个数保存进来,原创 2016-03-08 23:37:49 · 408 阅读 · 0 评论 -
CDOJ 1057 秋实大哥与花 裸线段树
先复习一遍线段树。。。。代码:#include #include #define maxn 100015#define lid (id<<1)#define rid ((id<<1)|1)#define LL long longlong long a[maxn];struct segtree{ int l, r; long long sum, lazy;}tr原创 2016-03-09 23:05:00 · 488 阅读 · 0 评论 -
CDOJ 1058 秋实大哥与家 线段树+扫描线
有一个W*H的矩阵 ,里面有n个家具,相互之间互不重叠。现在有一个1*M的家具,想问有多少种放法(横放,竖放都可以)对于每个矩形(家具),我们把它横向向x轴正方向延长M-1个单位,然后,所有剩下的没有被覆盖的点就对应一个可以放新家具的位置,有多少个点就有多少种横放的放法。所以问题就变成了,总面积-矩形面积并的问题了。对于竖放,就是纵向延长M-1个单位。所以重点就是求矩形面积并,就是扫描线的原创 2016-03-11 18:31:17 · 458 阅读 · 0 评论 -
CDOJ 1091 秋实大哥の恋爱物语 KMP
给两个数字串A和B判断能否使B的每一个数能经过加或减某一整数,与A的某一段重合。当时做的时候,刚刚了解KMP,想了很久也不知道该怎么做,还是听了讲解之后才知道。需要处理一下,因为B能加减某一个数,所以不能枚举加减哪个数,但是B究竟应该和A的第几个开头的子串重合呢,也无法枚举。然后,,,只需要存储B的每一个数与前一个数的差(第一个数除外),然后A也如此原创 2016-03-11 20:01:37 · 485 阅读 · 0 评论 -
CDOJ 1092 韩爷的梦 字符串哈希
就是字符串哈希求个数,因为内存限制很小,所以只能把所有的哈希值存下来,然后排序,去重,就可以不知为什么,我的p选的是1e9+7,mod是1e9+9,就会WA,然后两个换一下。p是1e9+9,mod是1e9+7,就过了,2333原来字符串哈希也不难。。。。去年的时候,,,还是十分懵逼的小白。。。。什么都看不懂。。。代码:#include #include #include #i原创 2016-03-11 21:52:51 · 689 阅读 · 0 评论 -
CDOJ 1065 全都是秋实大哥 KMP
给你一个字符串,求它各个前缀的最小循环节长度,和输出它本身的最小循环节用KMP算法的next数组,,,现在也不是很理解,,先贴代码。。。代码:#include #include #include #include #include using namespace std;#define maxn 3000003char str[maxn];int n, then原创 2016-03-14 19:21:49 · 462 阅读 · 0 评论 -
CDOJ 1131 男神的礼物 石子合并
代码:#include #include #include #include #include using namespace std;int dp[100][100][2];void max(int a, int b);int main(){ int T, n, a; scanf("%d", &T); while (T--) { memset(dp, -1, s原创 2016-04-01 12:42:49 · 263 阅读 · 0 评论 -
CDOJ 1133 菲波拉契数制 01背包
代码:#include #include #include #include #include using namespace std;int Fib[26];int Num[100001];int A[100001][26];int dp[26][2];void MakeFib();void MakeAllNum();int main(){ int T, n;原创 2016-04-01 12:45:05 · 373 阅读 · 0 评论 -
2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组
K - 郭大侠与甲铁城有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5我的做法是离线树状数组首先把区间保存下来,按右端点升序排序,然后我们建树状数组,同时也开一个last数组记录所有颜色的最后的出现位置,初始为0,即没有出现,然后我们对于每个r,就从1(或上次更新到的位置)更新到这个r,然后我们更新时,对于这个点原创 2016-05-01 14:33:01 · 461 阅读 · 0 评论 -
2016 UESTC Training for Data Structures L - 郭大侠与苦恼 CDOJ 1284 map+启发式合并
L - 郭大侠与苦恼题目简单,就是给你一棵树,然后问异或值为0的简单路径有多少条好难,好麻烦,想了好久才想明白按dfs的顺序来map+启发式合并,后来想找个题的大概框架和树形01背包相似,都是用dfs来实现的,只不过树形01背包dfs后的过程是背包的合并,这个是map的合并,还是启发式合并(就是把size小的合并到size大的上),然后我们这里维护的是pre[u],就是从根原创 2016-05-01 14:35:23 · 599 阅读 · 0 评论 -
2016 UESTC Training for Data Structures M - 卿学姐失恋了Ⅱ CDOJ 1350 汉诺塔 模拟
M - 卿学姐失恋了Ⅱ给你一个合法的汉诺塔状态,问你能否在M秒之内把他们都放到一根柱子上,圆盘总数是20首先我们可以知道,我们最后要放到的那根柱子一定是0号盘子,就是最大的盘子,所在的柱子,为什么这样呢,因为不这样的话,我们就要移动0号盘子,我们想移动0号盘子,那么其他所有的盘子都必须移到某一根柱子上,这时我们可以把0号盘子移到另一根柱子上,然后再把其他所有的盘子移到0号盘子所在的柱子原创 2016-05-01 14:37:00 · 555 阅读 · 0 评论 -
2016 UESTC Training for Data Structures N - 秋实大哥搞算数 CDOJ 1074 栈 表达式求值
N - 秋实大哥搞算数给一个表达式,无括号,保证合法,long long以内,整数运算,求值栈 表达式求值的经典问题,首先设置一个开始和结束符号#,他们的优先级是最低的,然后开两个栈,运算符栈和运算数栈,如果当前要放的运算符优先级高的话,就放进去,然后继续模拟,如果当前要放的运算符优先级低的话,就取出栈顶的运算符,和运算数栈顶的两个数,进行运算,然后继续检查,直到栈空或者栈顶运算符原创 2016-05-01 14:38:21 · 390 阅读 · 0 评论 -
2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 CDOJ 1344 线段树/树状数组
O - 卿学姐种美丽的花给一个区间,等差数列更新,单点查询我们可以开一个线段树记录这个点被更新的次数,然后因为是区间更新,所以我们需要一个lazy,lazy表示这个区间的被更新的数列的首项是多少,还有一个cnt,表示公差,因为两个数列加和到一起时,公差也会相加,所以就是这样了,然后lazy下放的时候,也是计算下两个子区间的首端点的位置是多少,相当于把这个数列分为两个子数列然后我们就原创 2016-05-01 14:40:11 · 676 阅读 · 0 评论 -
2016 UESTC Training for Data Structures P - 浑身难受 CDOJ 1276 树状数组
P - 浑身难受maya,camp上搬来的神题,作为一名智障一共二十四种情况,然后每种倒序一下可以得到另外一种,所以可以简化成12种,然后我这个智障就写了十二种,首先分为3类,1, 1和4不相连,就n^2枚举2和3的位置,然后1和4的所在的区间用按值树状数组维护,1那里就是查询区间有多少比个比2小的值,4那里就是查询有多少个比3大的值(总点数减去的就是啦),然后乘一下就可以原创 2016-05-01 14:41:37 · 327 阅读 · 0 评论 -
2016 UESTC Training for Data Structures Q - 昊昊爱运动 II CDOJ 1259 线段树+bitset
Q - 昊昊爱运动 II题意,区间长度N,N为1e5,运动种数为M,MQ次操作,Q,每次可以把一个区间的运动都换成x,或者查询一个区间的运动种数 在放宽了时限和内存之后,bitset就直接搞过去了 之前因为卡的太紧,我就用两个long long模拟的bitset,另外线段树也没有存左右端点,是在更新和查询的过程中用形参来保存的 具体做法就是每个节点存一个bits原创 2016-05-01 14:43:07 · 608 阅读 · 0 评论