摘要: #include <iostream>#include <map>#include <string>#include <cstdio>using namespace std;int main(){ map<int,string>mp; mp.insert(pair<int,string>(1,"GGGH")); mp.insert(map<int,string>::value_type(2,"FFF")); mp[3] = "UGUIHGUH"; pa 阅读全文
posted @ 2012-03-25 23:28 E_star 阅读(244) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/web/contest_show.php?contest_id=1097A题:(字符串问题)就是给定字典。然后查找错误。分三种情况1:One letter is missing (e.g.,letteris writtenleter)or too much (e.g.,letteris writtenlettter).2:One letter is wrong (e.g.,letteris writtenketter)3:The order of two adjacent letters is wrong (e.g.,letteris writte 阅读全文
posted @ 2012-03-25 18:43 E_star 阅读(337) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/contest/166这次rating终于涨了。。呵呵。。。A:水题,不过看了好长时间才看懂,才开始我的下标是从0开始的k忘减一了,结果贡献了一次wa。。。。先按解题数和罚时排序,然后统计相同名次的人的个数。。C:大部分的时间都花在了调这个程序上了,唉。。不过到了最后1Y呵呵。。。题意:给你随便的n个数,以及要求得到的中位数x.让你随便添加任意数,是的添加后的序列的中位数是x。求最少添加个数。。。思路:首先检查x是否存在序列中,如果不存在则添加x然后从小到大排序,求出中位数zh。然后将求的中位数zh与x比较,如果中位数zh>x则在左边添加比中位 阅读全文
posted @ 2012-03-24 10:50 E_star 阅读(231) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1611思路:统计出和0能够联系在一起的点,然后输出其个数View Code #include <cstdio>#include <iostream>#define maxn 30004using namespace std;int f[maxn],num[maxn];//num记录与0有联系的个数int n,m;int find(int x){ if (x != f[x]) { f[x] = find(f[x]); } return f[x];}void Union(int x,int y){ x... 阅读全文
posted @ 2012-03-23 21:32 E_star 阅读(201) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2299归并虽然知道了过程但是敲起代码来还是出现各种小错误。。。唉,,,View Code #include <cstdio>#include <iostream>#define maxn 500007using namespace std;int a[maxn];int n;int tmp[maxn];__int64 ct;void merge(int s,int m,int e){ int i = s,j = m + 1; int k = 0; while (i <= m && j <= 阅读全文
posted @ 2012-03-23 20:56 E_star 阅读(189) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3080学习:http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html才开始自己,思路搞错了,先把前两个求最长公共子序列,然后依次用最长公共子序列与2,3,4,。。。m比较求最长公共子序列。。贡献了3次wa直到看到这组数句才发现自己的错误:13AAATTTGGGTTTGGGAAAGGGTTTAAAprint:AAA按我的思路会输出TTT的。。唉。。因为前两个最长公共子序列为TTTGGG再将它与第三组比较时,就出来TTT了。而第1,2组可以得到AAA然后在于第三组的AA 阅读全文
posted @ 2012-03-22 20:55 E_star 阅读(271) 评论(0) 推荐(0) 编辑
摘要: View Code #include <stdio.h>#include <string.h>int main() { char a[5] = "ABCD"; char b[8] = "abcdefg"; char c[8] = "abcdefg"; char d[5] = "ABCD";strcpy(a,b); //长的复制给短的strcpy(c,d);//短的复制给长的printf("%d\n",strlen(a));//a的长度直接增加了printf("% 阅读全文
posted @ 2012-03-22 18:59 E_star 阅读(388) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1035开始自己把它想成了一个模拟题,就是模拟整个过程,纯暴力,不过把输入的字符串按长度排序,记录每个长度的起点终点,然后在长度范围内查找,输出时注意不能出线重复,以及按在输入序列中的出现顺序输出,所以要编号,输出时,按编号排序输出,对编号进行hash映射,判重,可是就是TLE那整的我叫个郁闷啊。。。下面这个方法很简洁明了,自己还是思维不够完善,没考虑好。View Code #include <cstdio>#include <cstring>#define maxn 10007using namespace std; 阅读全文
posted @ 2012-03-21 20:28 E_star 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 昨天晚上做了一下tc桑心啊。。。现自己对c++类不会写啊。哎。。悲剧啊。。。以后要坚持写tc锻炼自己的编码能力。300:给定一个序列,其中包括L(向左走),R(向右走),?(不确定可以玩左也可以往右)。分析题目可知:?既可以增加向左的距离,又可以增加向右的距离,?如果向左比较远那么?就全是L,如果向右距离远那么?就全是R这样就可以求出最远距离了。。500: 按照要求从(0,0)出发,到每一个点其实每个点的x+y就是从(0,0)到达这个点的步数,只要有一个满足就可以输出can,如果没有一个满足就输出cannotView Code #include <iostream>#include 阅读全文
posted @ 2012-03-21 13:12 E_star 阅读(239) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3436题意好难懂,有n个工厂加工电脑半成品,半成品电脑需要p个部件。输入p(需要的部件数) n(工厂数)Qi (工厂最大生产量) Si,1Si,2...Si,P (s表示在工厂i声场必须满足的条件1必须已经有了,0可以没有,2可以有,也可以没有)Di,1Di,2...Di,P,(经过i厂生产之后,所满足的条件1有,0木有)题目建图不好了理解,建完图后就是套最大流模板的问题了。。。首先构建网络图,一台电脑在进入生产线之前各部分的零件状态肯定全为0,离开生产线时,各部分的零件状态肯定全为1.所以源点与输入状态全为0的机器相连,输出状态全为1机器 阅读全文
posted @ 2012-03-20 19:39 E_star 阅读(303) 评论(0) 推荐(0) 编辑
摘要: A:http://acm.sdut.edu.cn/web/problem.php?action=showproblem&problemid=2216polla队长很快就做出来了。本以为是水题,可是今天看了看,也不是那么水。orz之。。自己刚开始把题意给理解错了,以为只有IXCM可以重复出现,其他只能出现一次,而且IXC只能出现三次。愚蠢啊。。。题意是给你罗马数字然后你求和后再输出罗马数字,rule里面的第二条我给理解错了。其实就是说明出现减式时只能是连续的两个其组合是I (X,C) X(L,C) C(D,M)其实根据后一个不能大于前一个的10被就能推出这个组合。。。然后 IX = 4 阅读全文
posted @ 2012-03-17 19:20 E_star 阅读(373) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1459才开始套自己的那个模板就是过不了一直TLE,最后看了别人过得修改了一下自己的模板最后1391s险过。。。本题是一个多源点,多汇点问题,建立超级源点与汇点,然后套用模板求解。。EK O(V*E^2)View Code #include<iostream>#include<queue>#include<cstdio>#include<cstring>using namespace std;const int inf=100000000;const int maxn=105;int map[m 阅读全文
posted @ 2012-03-17 11:21 E_star 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 学习地方:http://www.wutianqi.com/?p=3107EK模板:O(V*E^2)临街矩阵实现:int bfs(int s,int e){ int i; queue<int>q; CL(vt,false); CL(pre,-1);//初始化 for (i = 0; i <= n + 1; ++i) f[i] = inf;//注意这里的范围 q.push(s); vt[s] = true; while (!q.empty()){ int u = q.front(); q.pop(); for (i = 0; i... 阅读全文
posted @ 2012-03-16 21:18 E_star 阅读(335) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3020求最小路径覆盖问题 ,对于有向图最小路径覆盖 = 一边的点数 (x集或y集)- 最大匹配无向图最小路径覆盖 = 一边的点数 (x集或y集)- 最大匹配/2注意建图的细节实现。。。还有注意转化点后的取值。。View Code #include <iostream>#include <cstring>#include <cstdio>#define maxn 45using namespace std;int map[maxn*15][maxn*15],num[maxn][15];//注意这里的map坐 阅读全文
posted @ 2012-03-15 17:16 E_star 阅读(242) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3041将行与列转化为左右点集,只要出现Asteroids的点(i,j)就对i j建边,然后求最小点覆盖即可。。。View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 507using namespace std;int map[maxn][maxn];int link[maxn];bool vt[maxn];int n,m;bool dfs(int rpos){ int i; for (i = 1; i & 阅读全文
posted @ 2012-03-14 22:05 E_star 阅读(289) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3687本人强烈推荐这道题。。。才开始自己理解错了题意,以为单纯的利用优先队列每次从入度为0的队列中选出编号最小的点即可,样例过了可是无限WA最后看了看解题报告,原来我理解错了。要求序列小的要尽量靠前,而且输出的不是得到的序列,而是根据序列得到的重量。。很不错的解题报告,本人转载:在基本的拓扑排序的基础上又增加了一个要求:编号最小的节点要尽量排在前面;在满足上一个条件的基础上,编号第二小的节点要尽量排在前面;在满足前两个条件的基础上,编号第三小的节点要尽量排在前面……依此类推。(注意,这和字典序是两回事,不可以混淆。)如图1所示,满足要求的拓 阅读全文
posted @ 2012-03-14 21:03 E_star 阅读(259) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3267从后往前推,只要发现匹配的就进行匹配。dp[i] = min(dp[i) ,dp[t] + t - i - len[j])dp[i]表示在i位置至少要删掉多少个字母,t记录了完成单词匹配后的下一个位置,t - i - len[j]表示在i起始位置完成单词匹配这个中间最少要删去的单词数View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 307using namespace std;char str[6 阅读全文
posted @ 2012-03-14 09:32 E_star 阅读(239) 评论(0) 推荐(0) 编辑
摘要: A:http://acm.sdut.edu.cn/web/problem.php?action=showproblem&problemid=2372题意是给定一个n*m的矩形,初始颜色都为0(代表一种颜色)然后给你一个r*c的矩形刷子可以讲r*c内部的颜色0或者是1变为相反色(注意一共有0,1两种颜色,他俩互为相反色)。对于每一个出现的1,可定会至少被刷过一次,我们只要很据目标矩阵统计,遇到1是时就将r*c的大小的矩阵进行翻转,如果出现i+r >n 或者 j + c > m 则表明无法实现。注意这里的ij是map[i][j] = 1 的情况、、View CodeBhttp: 阅读全文
posted @ 2012-03-12 22:11 E_star 阅读(287) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/web/showproblem.php?pid=2099&cid=1088才开始掉下了中间可能有多个空格的处理,WA了好几次。。。还有这里对表达式的理解一定要透彻,表达式有三种1:常数;2:A+B形式;3:A>B的形式。。。View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 107using namespace std;struct node{ int num;//存编号 char op[10];/ 阅读全文
posted @ 2012-03-12 20:39 E_star 阅读(416) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/web/showproblem.php?pid=2098&cid=1088相当于一道模拟题吧。纠结死我了、、各种WA各种不爽。。好多情况要考虑。。自己的思维全面性,以及编码能力还是不够啊。。。最重要的一点就是要静下心来。。。不能浮躁。。。1:整个浮点数前后的空格不考虑,开始我考虑在内了所以WA了很多次。。2:分三中情况a: 只有小数点,无e(E)...b:只有e(E),无小数点。。c:既有小数点,又有e(E)..View Code #include <cstdio>#include <cstring>#include 阅读全文
posted @ 2012-03-12 16:40 E_star 阅读(657) 评论(0) 推荐(0) 编辑