CDOJ
文章平均质量分 72
sky-edge
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 · 598 阅读 · 0 评论 -
CDOJ 1085 基爷与加法等式 DFS
就是给一个由字母组成的加法等式,问这个等式有多少种情况,相同字母代表相同数字,不同字母代表不同数字,不存在前导0.呃,就是DFS搜索,但是刚开始我的姿势不对,就T了。刚开始我是就枚举前面的所有情况,然后看得到的和能不能组成最后的和。然后,这个搜索姿势很智障地T了。。。然后就去度娘了,,,发现要按每一位进行搜索,就是搜索所有的个位数,然后查看和的个位数是否能满足,再依次搜索十位,百位。。原创 2016-04-01 12:32:06 · 463 阅读 · 0 评论 -
CDOJ 414 Eight Puzzle 八数码
貌似当时都是双向BFS写的,现在自己写,就想先写单向的,然后就先是MLE,然后发现标记数组太大,于是学了一发康托展开,然后就是TLE,然后就发现需要记录状态,怎么记录呢,改了改发现就改成DFS的记忆化搜索了,然后又去学姿势,发现是从终点开始往回BFS,就能把所有情况都找到,并且BFS的过程中就可以记录下来,然后就AC了。在这过程中也发现了一篇好文章,八数码八境界广搜+哈希+打表 代码:原创 2016-03-29 00:18:59 · 511 阅读 · 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 · 568 阅读 · 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 · 606 阅读 · 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 · 508 阅读 · 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 · 586 阅读 · 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 · 600 阅读 · 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 · 624 阅读 · 0 评论 -
CDOJ 1066 Palindromic String 字符串哈希/马拉车算法
就是一个一直求回文串的题,,,回文值就是递归定义的,如果它是回文串,就是它的那个子串的回文值+1,不是就是0。然后我还自做聪明地写了一个快速幂,结果被卡了,一看当时的讲解,直接一个预处理数组就好,,,唉,,窝还是智障啊具体不想写了,有时间再来补代码:#include #include #include #include using namespace std;#d原创 2016-03-24 20:54:07 · 610 阅读 · 0 评论 -
CDOJ 215 吴队长征婚 DFS+剪枝
吴队长征婚这件事因为请客而没有传出去(虽然他忘了请一个队吃饭),于是吴队长高兴地玩起了木棒。吴队长拿了一些长度相同的木(guang)棒(gun),随机的把它们截成了NN段,每一段最长50。现在他想把这些木棒还原成原来的状态,但是他忘记了原来的木棒有多少根,也忘记了每一根有多长。请帮助他设计一个程序,帮他计算之前木棒可能的最小长度。输入数据保证每一段木棒长度都大于0。输入有多组数据,每组数据分为原创 2016-03-21 23:37:10 · 6858 阅读 · 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 · 634 阅读 · 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 · 353 阅读 · 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 · 376 阅读 · 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 · 436 阅读 · 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 · 353 阅读 · 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 · 330 阅读 · 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 · 523 阅读 · 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 · 790 阅读 · 0 评论 -
CDOJ 1091 秋实大哥の恋爱物语 KMP
给两个数字串A和B判断能否使B的每一个数能经过加或减某一整数,与A的某一段重合。当时做的时候,刚刚了解KMP,想了很久也不知道该怎么做,还是听了讲解之后才知道。需要处理一下,因为B能加减某一个数,所以不能枚举加减哪个数,但是B究竟应该和A的第几个开头的子串重合呢,也无法枚举。然后,,,只需要存储B的每一个数与前一个数的差(第一个数除外),然后A也如此原创 2016-03-11 20:01:37 · 554 阅读 · 0 评论 -
CDOJ 1058 秋实大哥与家 线段树+扫描线
有一个W*H的矩阵 ,里面有n个家具,相互之间互不重叠。现在有一个1*M的家具,想问有多少种放法(横放,竖放都可以)对于每个矩形(家具),我们把它横向向x轴正方向延长M-1个单位,然后,所有剩下的没有被覆盖的点就对应一个可以放新家具的位置,有多少个点就有多少种横放的放法。所以问题就变成了,总面积-矩形面积并的问题了。对于竖放,就是纵向延长M-1个单位。所以重点就是求矩形面积并,就是扫描线的原创 2016-03-11 18:31:17 · 526 阅读 · 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 · 585 阅读 · 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 · 496 阅读 · 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 · 456 阅读 · 0 评论 -
CDOJ 1061 秋实大哥与战争 暴力/set
链接: http://www.acm.uestc.edu.cn/#/problem/show/1061题意:就是有一排士兵,在某个时刻,某个士兵可能会死,序列就会从这里断开,在某个时刻,某个士兵可能会被复活,然后查询任意时刻,这个士兵所在的序列长度。解:说实话,我对这个题有恐惧感,因为看他们讨论时感觉好怕怕的样子,然后自己写了一发,最暴力的方法,然后改了一个傻逼笔误,就过了,跑的时间也原创 2015-12-20 17:08:13 · 687 阅读 · 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 · 548 阅读 · 0 评论 -
CDOJ_1063 秋实大哥与妹纸(堆结构)
秋实大哥与妹纸致中和,天地位焉,万物育焉。秋实大哥是一个追求中庸的人。虽然秋实大哥的仰慕者众多,但秋实大哥不喜欢极端的妹纸。所以他想从所有仰慕自己的妹纸中挑选出一个符合中庸之道的。每一个妹纸对秋实大哥的仰慕程度可以用一个整数ai来表示,秋实大哥想要找出这些数的中位数。计算有限个数的数据的中位数的方法是把所有的同类数据按照大小的顺序原创 2015-07-13 23:59:20 · 811 阅读 · 0 评论 -
CDOJ 763 树上的鸟儿(水题/模拟题)
树上的鸟儿Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)作为电子科大的一员,大家都知道,我们校园有很多高大的银杏树,现在小明正在观察一棵树上的鸟儿,他发现了一些规律。在这个树上,有一些雄鸟和雌鸟(小明很厉害,能分得出鸟儿的雄雌),假如来了一只雄鸟,它会原创 2015-07-09 00:34:48 · 759 阅读 · 0 评论 -
CDOJ 1074 秋实大哥搞算数(栈_表达式求值)
秋实大哥搞算数Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)秋实大哥大学物理挂科了,于是在下学期的前两周的某一天要悲剧的补考。为了不给学校的挖掘机大楼做贡献,秋实大哥决定在假期里努力复习。当然,良好的计算能力也是非常必要的,毕竟是涉及计算自己做多少分的题能够通过考试的原创 2015-07-08 20:47:04 · 852 阅读 · 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 · 1076 阅读 · 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 · 970 阅读 · 0 评论 -
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 · 1516 阅读 · 0 评论 -
2016 UESTC Training for Data Structures I - 郭大侠与线上游戏 CDOJ 1339 pb_ds黑科技
I - 郭大侠与线上游戏就是给你一个队列,支持队尾插入和队头弹出,或者询问当前队列里的数的中位数别人跟我讲stl黑科技能过,然后我就套pb_ds,就过了这个pb_ds只在linux下可以,但是评测姬一般都是linux下的,所以都能用,本地用就用mingw,然后我用的是Tree-Like Container,可以查询区间第k大,然后k就取中位数就好了 如果不用这个黑科技的原创 2016-05-01 14:29:14 · 647 阅读 · 0 评论 -
CDOJ 1145 韩爷的情书 欧拉路径
呼,,,欧拉路径,,终于弄懂了。。什么坑爹的fluery算法,,md,,欧拉路径本身的一个算法就很简洁而且非常准确重边,自环,都支持,有向图,无向图都可以,当然,貌似混合图的话得用最大流呃,这个算法的前提是已知有一条欧拉路径了,判断有没有欧拉路径很好想,就不赘述了void Euler(int u){ for (int v = minv; v <= maxv; ++v) {原创 2016-08-01 18:08:03 · 637 阅读 · 0 评论 -
CDOJ 1147 秋实大哥带我飞 最短路径条数 dijkstra就可搞
啊,就是说给你一个图,让你求从1到n的最短路径条数,模1e9+7图的边权可能为0或者正数,边和点都可以重复走最短路径条数为无穷则输出-1啊,那个边权全为正的情况好说,边和点也不可能重复走就是如果边权为0的话,它可以沿着这个边无限次数的来回走,然后就是无穷了嗯,看题解什么队列搞阿,网上搜了都是DFS,,后来感觉dijkstra就可以搞阿,,看到网上果然有一个这么搞的,代码太丑就没原创 2016-07-31 22:54:40 · 1039 阅读 · 2 评论 -
CDOJ 1146 秋实大哥与连锁快餐店 Prim 最小生成树
嗯,题意就是说,平面坐标系上有n个点,它们可以形成一个完全图,距离就是两点的欧几里德距离然后其中有一些点是旗舰店,然后现在想连一些边,使得所有的点都与至少一个旗舰店连通,然后问最小的边权和显然就是最小生成树了但是这是稠密图(其实我觉得即使稠密图,Kruskal的表现应该也很好,因为并查集部分的操作应该是近乎常数的吧),所以prim会更好开始时用的Kruskal,直接MLE了,发现是原创 2016-07-31 19:25:32 · 680 阅读 · 0 评论 -
CDOJ 1150 排名表 拓扑排序
http://www.acm.uestc.edu.cn/#/problem/show/1150就是说有n个人,编号1-n,他们有一个排名表,然后已知m条信息,每条信息为a b,表示a在b前面然后叫你写出一个满足这m个条件的排名表,如果有多个的话,尽可能使1的名次最小,这个条件下,尽可能使2的名词最小,依次类推然后从1-n输出每个人的名次 (确实,被这个坑了一次,眼瞎然后原创 2016-07-31 17:06:59 · 460 阅读 · 0 评论 -
CDOJ 1144 Big Brother 二分图匹配
二分图匹配#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define maxn 202#defi原创 2016-07-31 15:51:41 · 545 阅读 · 0 评论 -
CDOJ 1143 传输数据 最大流
最大流#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;//ISAP+bfs 初始化+栈优化#原创 2016-07-31 15:45:56 · 385 阅读 · 0 评论 -
2016 UESTC Training for Data Structures R - Japan CDOJ 383 树状数组 逆序对
R - Japan坐标有n个城市,右边有m个城市,城市都是按序号排序的,然后有K条连线,然后问连线的交点有多少个也是类似于逆序数,不过跟E题不同的是不用考虑在左端点或者右端点的交点,只考虑交在中间的,也不用离散化首先我们把每条线段按左端点升序排序,左端点相同按右端点升序排序然后因为我们只数交点在中间的,所以我们首先找到同一个左端点的序号范围,假设当前为[i,j),序号编号是从0开始原创 2016-05-01 14:44:27 · 572 阅读 · 0 评论
分享