摘要: 第一次发现指针这么好用#include<cstdio>#include<cstring>#include<algorithm>#include<ctime>using namespace std;#define maxn 100007#define rep(i,x,y) for(int i=x;i< 阅读全文
posted @ 2017-04-17 16:25 OcahIBye 阅读(199) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio> #include<cstring> int main() { int a[10000]; scanf("%d",a);//这里相当于大小a[0] for(int i=1;i<=a[0];i++) scanf("%d",a+i);//按顺序进行读入 for(int i 阅读全文
posted @ 2017-04-17 14:54 OcahIBye 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 粗略的试了一下,大概是没有问题的#include<cstdio>#include<cstring>#include<time.h>#include<stdlib.h>#define random(x) (rand()%x)#define maxn 100007using namespace std; 阅读全文
posted @ 2017-04-17 00:34 OcahIBye 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 又是一个晚上,美好的青春都用来调试了其实正解和我原来想的非常不一样,我本来是想用下标表示下标,后来突然发现不对,如果你下标不变,交换的时候只交换值的话,左右子树不一样大,就出问题了。后来就连着下标一起交换,诶诶诶那这样你怎么让我找点啊,我本身建树的时候优先级就是按照下标来的啊。后来一拍脑袋想起来中序 阅读全文
posted @ 2017-04-16 17:48 OcahIBye 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 恢复内容开始 大概就是判断合法的括号序列的问题,进行翻转使其成为合法的括号序列。 1.前缀和的做法:非常妙啊,左括号和右括号分别即为1和-1,合法的组合累加和一定为非负数,而不合法的情况就是出现了右括号在左括号前面,从出现-1,一直到下一次相加为零全部翻转我们一定能得到合法的序列。 2.好像可以用d 阅读全文
posted @ 2017-04-16 17:47 OcahIBye 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 省选前的晚上,非常爽啊 void dfs(int u) { static counter=0; int children=0; visit[u]=1; dfn[u]=low[u]=++counter; while(遍历每一个有边连接的点v) { if(!visit[v]) { fa[v]=u; ch 阅读全文
posted @ 2017-04-14 23:18 OcahIBye 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 哈哈哈哈这是省选前一天我要疯了 因为学了其他的stl,stack的用法纯粹是自己脑补出来的,居然是对的,好神啊 #include<cstdio> #include<stack> #include<algorithm> using namespace std; int main() { stack<i 阅读全文
posted @ 2017-04-14 22:41 OcahIBye 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 恢复内容开始 #include<stdio.h> #include<stdlib.h> #include<time.h> #define random(x)(rand()%x) int main() { int n; srand((int)time(0)); scanf("%d",&n); for( 阅读全文
posted @ 2017-04-14 22:39 OcahIBye 阅读(177) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio>#include<cstring>#include<algorithm>#define maxn 10000000//往大的开也不会死的using namespace std;int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int ra 阅读全文
posted @ 2017-04-14 00:45 OcahIBye 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 一篇写的非常好的博客,非常容易理解。 http://www.cnblogs.com/en-heng/p/4002658.html 省选前两天,我还在看新的算法,吃枣药丸 阅读全文
posted @ 2017-04-13 22:46 OcahIBye 阅读(110) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio> #include<vector> #include<queue> using namespace::std; struct cmp { bool operator ()(int &x,int &y) { return x<y; } }; priority_queue 阅读全文
posted @ 2017-04-13 17:06 OcahIBye 阅读(98) 评论(0) 推荐(0) 编辑
摘要: [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。 类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边 阅读全文
posted @ 2017-04-13 10:49 OcahIBye 阅读(134) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; #define maxn 1000 #define min(x,y) x<y?x:y int n,m,map[max 阅读全文
posted @ 2017-04-12 22:03 OcahIBye 阅读(275) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; #define maxn 10007 #define min(a,b) a<b?a:b int n,capaciti 阅读全文
posted @ 2017-04-12 13:50 OcahIBye 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 码题过程极其曲折艰难,硬是熬了两天,问了N个大神无数次,说起来都是泪,这是我A的第一道NOI的题目,同样第一次编splay的模板题感觉以后不会再忘了,吓得我思路都清晰了,不愧我debug数个小时,诶终于......这是一个有血有泪的教训啊 ,在没理清思路之前不要码题啊,果然如某m性选手所说think 阅读全文
posted @ 2017-04-12 01:17 OcahIBye 阅读(120) 评论(0) 推荐(0) 编辑