摘要:
2013 7.22 周一 算是晴吧 从临沂坐车赶回淄博,可以说大三的生活基本上开始了。 偶尔想想大学两年自己干了些什么,可能从大一的那个目标上来讲自己因为很多事把自己完完全全地废了。但是自己走过的,不会后悔,唯一该做的就是补回来。想了下剩余这两年的计划,第一个是acm,第二个是考研,第三个是技术,技术是为了大四考完研可以跟着师傅打打工@王老师,话说现在的那个钥匙链自己带着,那个情侣钥匙环送给宿舍赵四了,我想了想,我估计未来十年都用不上拿东西了--。 小总结一下,最近在家里看了下c++primer前面学的内容(给自己的记性跪了,忘了带回学校),然后各种玩(好吧这个其实放在第一位)- -。(... 阅读全文
摘要:
链接:http://wikioi.com/problem/1036/题意不写了。思路:很明显找到lca然后用两个点的深度相加-lca的深度就是这一步的最近步数。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define loop(s,i,n) for(i = s;i g[maxn]; 16 int find(int x) 17 { 18 if(set[x] != x) 19 set[x] = find(set[x]); 20 21 ... 阅读全文
摘要:
链接:http://wikioi.com/problem/1021/这题挺有意思的,虽然比较水,但是让我想起来那次百度or腾讯的一道最大流的题目,很给力,也是对最后找边进行优化,不过这题比那题简单多了,找出最短路,然后对最短路上的变进行一下标记,最后找边的时候只招最短路上的边就可以了。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define loop(s,i,n) for(i = s;i q;42 q... 阅读全文
摘要:
链接:http://wikioi.com/problem/1035/怎么说呢,只能说这个建图很有意思。因为只有m条道,然后能互相接在一起的连通,对每个点进行拆点,很有意思的一道裸费用留题。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int maxn = 350; 9 const int inf = 10000000; 10 struct node 11 { 12 int u,v,cap,flow,co... 阅读全文
摘要:
中文题意不描述。链接:http://wikioi.com/problem/1028/这题一开始很裸的最大权二分匹配。但是原来没有接触过,KM的这个最大权不大会。然后一开始以为用最大费用最大流直接就能搞,后来知道单纯的费用流解决的是二分最佳匹配,而不是最大权,QCMM然后看了一下这个http://hi.baidu.com/lerroy312/item/42e718ba58a1f8df85dd795f结果改了之后不对,不知道为什么最后用的最小费用,对边的权值取负值,结果取负值才过。。。不解。。。 1 #include 2 #include 3 #include 4 #include ... 阅读全文
摘要:
LIANJIE:http://poj.org/problem?id=3321给你一个多叉树,每个叉和叶子节点有一颗苹果。然后给你两个操作,一个是给你C清除某节点上的苹果或者添加(此节点上有苹果则清除没苹果就添加)q询问这个节点的子树上有多少个苹果。直接dfs遍历一遍,每个节点给一个时间戳,记录一下遍历玩这个节点是的始终时间戳,直接对时间戳进行询问即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define loop(s,... 阅读全文
摘要:
题意:给你一串数列,然后给你一个起终位置对,问你这个段序列里出现最多的出现了几次。思路:一段序列里,无非就是三种情况,1,一组相同的数,2两组相同,3,3组或者更多组数,这样我们队每一组数的开头结束位置记录一下,然后对每次询问判断一下几组数,分别讨论,多组的就分为第一组,最后一组,中间多组,中间直接rmq就可以了。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define loop(s,i,n) for(i = s;i 1)69 ... 阅读全文
摘要:
连接:http://poj.org/problem?id=1191思路:额,其实就是直接搞记录一下就可以了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define loop(s,i,n) for(i = s;i = 0) return dp[k][x][y][xx][yy];46 if(k == n)47 return sum[x][y][xx][yy];48 49 int i,j,ans;... 阅读全文
摘要:
连接:http://poj.org/problem?id=1054题意:就是一个格子里一条线上最长有几个青蛙(青蛙间隔相同)~。但是其实青蛙的起点重点必须是在外面。直接写一个搜就是。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define loop(s,i,n) for(i = s;i = 1 && x = 1&&y <= c)27 return 1;28 29 return 0;30 31 }32 int find( 阅读全文
摘要:
题目连接:http://poj.org/problem?id=3280题意就是给你一个字符串,含有n个字母,每个字母可以添加可以去除,添加和删除字母有花费,问组成一个回文串。思路就是每个回文串的最大子串必定有一个开头一个结尾位置,最终位置为0~len-1,这样但是每一对起始位置都会有一个回文长度,对每一个长度进行搜就可以了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define loop(s,i,n) for(i ... 阅读全文
摘要:
连接:http://poj.org/problem?id=2029题意:给你一个map,然后在上面种树,问你h*w的矩形上最多有几棵树~这题直接搜就可以。不能算是DP用树状数组也可作。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define loop(s,i,n) for(i = s;i > n && n){21 memset(map, 0, sizeof(map));22 memse... 阅读全文