2013POJ
文章平均质量分 75
lin375691011
呵呵
展开
-
POJ 2485 Highways
题目大意如下:又一个岛国没有公路,于是想修公路,通过矩阵给出每两个岛之间的距离,求最小代价建成的公路网中最长的两岛间的距离。也就算是求稠密图最小生成树的最长边。Prim算法,代码如下:#include #include const int M=505;int map1[M][M],n;#define typec int // type of costconst typec原创 2013-08-07 20:34:12 · 3809 阅读 · 0 评论 -
POJ 2531 Network Saboteur
这题一开始怎么想也想不出搜索来, 后来才明白原来是这样。这是一个DFS暴搜,呵呵……下面是代码:#include #include const int M=25;int n,map1[M][M],sum,max1;bool vis[M][M];void DFS (int m,int step){ int j; if(step==n) {原创 2013-08-21 16:44:09 · 4209 阅读 · 0 评论 -
POJ1753 Flip Game
这是一个贪心题。我用的是八皇后的算法。代码操作也差不多。下面是代码:#include int a[17],b,w,min,cut;void up(int i){ if(i-4>=0) { if(a[i-4]==0) { a[i-4]=1; w--; b++;原创 2013-07-26 19:03:34 · 7547 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine
这个题很水,后台数据相当弱,写这个只是记录一下。再次吐槽一下,那个不联通的情况(输出“disjoint”)甚至都不用输出,输出错了也没事。。用的Foyld, 0MS;贴一下代码:#include #include const int inf=1<<30;const int V=105;int in=1;int map1[V][V];int min(int a, int原创 2013-08-07 10:22:57 · 3722 阅读 · 0 评论 -
POJ 2240 Arbitrage
这个题也是十分水的题,节点最多只有30个。Floyd就可以过的哈。需要注意的是:1、不要用gets(),因为中间有空行;2、注意输出的是Yes,No。下面是代码:#include #include const int inf=1<<30;const int V=105;int n;double map1[V][V];char s[35][200];int fi原创 2013-08-07 17:22:19 · 4096 阅读 · 0 评论 -
POJ 1789 Truck History
这个题是一个最小生成树的题,题意如下:1、每一种卡车的类型是由7个字母表示的。2、每一种卡车的类型是由其他某一种卡车的类型衍生的(第一种除外)。3、某两种卡车之间衍生的代价是由这两种卡车所代表的字符串的字母不同的个数表示的。4、求怎样衍生代价最小。这是一个稠密图最小生成树题,用Prim算法比较好,因为POJ数据较水,Kruskal也不会超时。但是如果真出现2000种卡车的情原创 2013-08-07 20:20:21 · 4024 阅读 · 0 评论 -
POJ 3026 Borg Maze
题目大意:给你一个地图,求由地图上S点到其他点A的最短路径。代码操作步骤:1、记录下所有的A和S的位置。2、BFS求出任意两点之间的最短路程,建立邻接矩阵。3、Prim算法求最小生成树。下面是代码:#include #include #include using namespace std;const int M=105;struct node1{原创 2013-08-08 09:42:26 · 3891 阅读 · 0 评论 -
POJ 3436 ACM Computer Factory
这题的题目内容读起来很复杂,我来简单解释一下:为了追求ACM比赛的公平性,所有用作ACM比赛的电脑性能是一样的,而ACM董事会专门有一条生产线来生产这样的电脑,随着比赛规模的越来越大,生产线的生产能力不能满足需要,所以说ACM董事会想要重新建造一条生产线,生产线是全自动化的,所以需要机器来组成生产线,给定有多少中种机器,标准ACM用电脑有多少部份,每种机器将什么样的ACM电脑半成品处理成什么样原创 2013-08-13 10:12:05 · 4733 阅读 · 0 评论 -
POJ 1936 All in ALL
这题也是水题,暴力遍历0MS水过轻松加愉快。不解释直接贴代码:#include #include int main(){ char s1[100005],s2[100005]; while(scanf("%s",s1)!=EOF) { scanf("%s",s2); int len1=strlen(s1); in原创 2013-08-14 09:56:11 · 3809 阅读 · 0 评论 -
POJ 3007 Organize Your Train part II
大致题意:给定一个字符串,从任意位置把它切为两半,得到两条子串.定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4.现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法.这个题虽然分类是STL,但用STL肯定超时!!我用的是二叉查找树,比map好使多了,218ms水过。下原创 2013-09-18 19:58:04 · 5351 阅读 · 1 评论 -
POJ 3009 Curling 2.0
先吐槽一下:模拟神马的最讨厌了!!!!题目大意:给定一个地形图,要求类似于把冰壶从起点(标号2),移动到终点(标号3),求最小停止次数(没撞一次石块停止一次)。需要注意:1、冰壶撞到石头后,冰壶会停在石头前面,此时(静止状态)才允许改变冰壶的运动方向,而该块石头会破裂,石头所在的区域由1变为0. 也就是说,冰壶撞到石头后,并不会取代石头的位置。2、终点是一个摩擦原创 2013-08-19 17:46:49 · 3894 阅读 · 0 评论 -
POJ 1201 Intervals
这是POJ 1716 升级版。意思是差不多的,但这三个限制条件是:1、对于区间,必定有num[start]>=num[end]-这区间内至少有的点的个数;2、对于整数点,必有num[i]3、对于整数点,必有num[i+1]下面是代码:#include #include struct node{ int x,y,w;} qu[500原创 2013-10-14 11:29:22 · 4047 阅读 · 0 评论 -
POJ 1094 Sorting It All Out
这个题的题意是这样的:给定有向边,问在输入地几个边的时候出现了确定的拓扑序列或者环,如果输入完所有边还没有结果则输出 “Sorted sequence cannot be determined.” 。这里需要注意的是:1、有环和有确定的拓扑序列谁先出现输出谁。2、注意记录是在哪一个边输入之后出现的。3、如果出现有环或有确定的拓扑序列之后边还没输入完则需要输入完所有边再输出。原创 2013-08-09 09:10:29 · 3996 阅读 · 0 评论 -
POJ 3020 Antenna Placement
这题一开始真的不知道该怎么建图,由此出现了一系列的问题。题目大意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?这个题建图时需要对城市所在点与其他点的关系建图,如果在这个城市建立基站可以覆盖到另一个城市,就说明他们俩之间有联系。所以这是一个无向图,原创 2013-08-12 10:17:06 · 3994 阅读 · 0 评论 -
POJ 1459 Power Network
这题是一个标准的最大流问题。题目大意是:有n个点,其中nc个点是发电站,有np个点是用户,其他的是中转站,求最大流。问题中存在着多源点和多汇点,我们可以把这些源点和汇点当作中转站,在虚拟一个超级源点和超级汇点,EK算法上模版,G++编译器1391MS。下面是代码:#include #include #include using namespace std;const in原创 2013-08-12 20:56:29 · 4107 阅读 · 0 评论 -
POJ 1035 Spell checker
简单的字符串查找题,暴力搜索就能过。重点是细节,细节有没有!!!爆搜差不多150毫秒,我建了一个长度哈希表,成了110毫秒。下面是代码:#include #include #include char dic[10005][18],s[20];int cmp(const void *a,const void *b){ return *(int *)a-*(int *原创 2013-08-13 15:59:00 · 4170 阅读 · 0 评论 -
POJ 2488 A Knight's Journey
标准的DFS,只不过是坑爹的字典序坑到了无数人……题目大意:给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。注意事项:只有一条,那就是字典序!!!!!!!!对于马的位置,DFS搜索时需要按这个顺序来:这样搜出来的第一条路就是字典序最小的路了。还有一条就是因为这条路可以走过棋盘上的所有的点原创 2013-08-19 10:20:02 · 3811 阅读 · 0 评论 -
POJ 3422 Kaka's Matrix Travels
费用流问题,只不过这次是最大费用,建边的时候权值取相反数,按最小费用流求完之后在输出负值就行。题目大意:Kaka有一个矩阵表格,行从1到n,列从1到n,Kaka从(1,1)开始,向(n,n)走,每一个格子里都有钱w,只能向下或向右走,走到那个格子就可以拿到那个格子里的钱。问走k次最多能拿多少钱。这个题建图的时候需要拆点。每个格子都是一个点。把一个点拆成两个,两个点之间有原创 2013-11-26 20:16:37 · 4231 阅读 · 0 评论 -
POJ 1080 Human Gene Functions
最长公共子串的变形题。要初始化第一行第一列。下面是代码:#include int max(int a,int b,int c){ if(a<b) { a=b; } if(a<c) { a=c; } return a;}int find(char c1,char c2){ if(原创 2013-10-21 21:54:55 · 4180 阅读 · 0 评论 -
POJ 2388 Who's in the Middle
这也是水题一道啊,STL各种解法,水水的。于是乎借着这个题学习了一下nth_element。下面是水水的代码:#include #include using namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) { int a[10001],i; for(i原创 2013-08-14 10:22:33 · 3724 阅读 · 0 评论 -
POJ 1611 The Suspects
标准并查集模版题,不多说贴模板。#include int a[30005];int find1(int f){ while(a[f]!=f) { f=a[f]; } return f;}int main(){ int n,m; while(scanf("%d%d",&n,&m),n||m) {原创 2013-08-14 19:41:07 · 3799 阅读 · 0 评论 -
POJ 3393 Lucky and Good Months by Gregorian Calendar
这是一个讨厌的英文阅读题+讨厌的模拟题。这真是个锻炼英语阅读和代码实现能力的好题啊!!!题目大意是这样的:原创 2013-09-19 19:48:53 · 4794 阅读 · 0 评论 -
POJ 2533 Longest Ordered Subsequence
最长上升子序列,最最经典点的DP题。注意在这个题中要求是严格上升!!!下面是代码:#includeint main(){ int n,a[1005],dp[1005]; scanf("%d",&n); int i,m,j,max1=1; for(i=0; i<n; i++) { scanf("%d",&a[i]);原创 2013-09-12 20:41:21 · 3804 阅读 · 0 评论 -
POJ 1260 Pearls
DP真的是太不擅长了!!!这道题的关键就是:1、购买的珠宝数量是一定的。2、完全按照输入顺序来操作,否则会出错。3、如果a、b、c三种珠宝 ,a能被b替代,b能被c替代,则a一定能被c替代。所以我们找的是一个个不互相重叠的替代区间,及在某一区间内的珠宝都被此区间的最后一种珠宝替代。下面是代码:#include int minm(int a,int b){原创 2013-09-12 20:19:10 · 3917 阅读 · 0 评论 -
POJ 1276 Cash Machine
开学了,好长时间没写博客了哈,来个DP练练手吧。。。(瞬间霸气测漏啊!!)题目大意:给定金额,钞票种类,钞票数目。求能找开的不大于金额且与金额差最小的值。这是一个多重背包问题,可以优化成01背包二进制(感谢背包九讲!!)。下面是代码:#include struct node{ int x,y;} mon[15];const int inf=-1<<30;int原创 2013-09-04 20:11:54 · 3860 阅读 · 0 评论 -
POJ 1837 Balance
题目大意:有一个天平上有C个挂钩,分别在不同的位置上,用C个整数表示。正整数代表在原点右侧,负整数代表在左侧,就相当于一个数轴。有G个砝码,求有多少种平衡情况。思路:这是一个01背包问题。每勾上一个砝码就是一个新阶段。每一个新阶段都是在原来的出现过的状态上更新的。状态方程dp [ i ][ j+ w[ i ]*c[ k ] ]= ∑(dp[ i-1 ][ j ] );原创 2013-08-22 16:38:36 · 3739 阅读 · 0 评论 -
POJ 1416 Shredding Company
这道题是道水题,不要介意神马前导零之类的,没影响。题目大意:公司现在要发明一种新的碎纸机,要求新的碎纸机能够把纸条上的数字切成最接近而不超过target值。比如,target的值是50,而纸条上的数字是12346,应该把数字切成四部分,分别是1、2、34、6。因为这样所得到的和43 (= 1 + 2 + 34 + 6) 是所有可能中最接近而不超过50的。(比如1, 23, 4, 和原创 2013-08-21 19:26:13 · 4445 阅读 · 0 评论 -
POJ 3087 Shuffle'm Up
这题是个模拟题啊!!!题目大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去。给定输入s1和s2的初始状态 以及 预想的最终状态s12问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"。用Map都是0MS原创 2013-08-20 16:46:14 · 6155 阅读 · 0 评论 -
POJ 1426 Find The Multiple
本以为这题会很难,又是大数又是搜索的,结果仔细一研究,就是一水题……大致题意:给出一个整数n,(1 从小往大搜超不出unsigned long long型的范围,每个数都有答案,放心的DFS就行。下面是代码:#include int n,flat;unsigned long long b;void DFS(unsigned long long a,int st原创 2013-08-20 10:05:11 · 5642 阅读 · 1 评论 -
POJ 1027 The Same Game
题目大意:在一个10x15的方阵里填满了RGB三种小球,要求:1、找到最大的一片相同颜色区域,并删掉,(这片区域相同颜色球必须相邻,且相邻数大于1)。2、删除完成后,其他小球自然下落填充。先每列向下填充,空的列由右边一列平移补全。3、当区域内没有球或最大相邻区域的个数为一,游戏结束。模拟加BFS,很简单,下面是代码:#include #include cha原创 2013-10-06 12:04:36 · 4655 阅读 · 0 评论 -
POJ 3267 The Cow Lexicon
这是个DP题,很简单。题目大意:给定一个字符串和N个单词,要求从字符串中去掉最少的字符后能够被这些单词表示。直接贴代码:#include #include const int M = 605;int len[M],dp[305],l,w;char dic[M][30],s[305];void DP(){ int i,j,k; dp[0]=1; f原创 2013-08-12 18:22:18 · 4109 阅读 · 0 评论 -
POJ 2706 Connect
题目大意:题目中给出一种游戏,有黑白两种颜色的棋子,黑色为先手。给定棋盘大小,双方下的棋子的位置和顺序,问黑子下的最后一步棋是否为决定自己胜利的那一步棋(及下了这一步棋后黑棋赢,不下就不赢)。游戏规则如下:规定黑棋为先手,白棋为后手。放下棋子A后,若A的8个马步方位,至少存在1个同色的棋子,且当连接A与这些棋子时,其连线不切割已经有的线,则连接。黑棋的目标是连出原创 2013-10-10 16:25:49 · 4362 阅读 · 0 评论 -
POJ 2002 Squares
这题的题意是这样的:有一堆平面散点集,任取四个点,求能组成正方形的不同组合方式有多少。相同的四个点,不同顺序构成的正方形视为同一正方形。解题思想:建立点的哈希表,枚举任意两点,计算出符合条件的其余两点,在哈希表中寻找,找到计数加一,因为不同序列构成的视为同一个正方形,最后计数需除以四再输出。下面是代码:#include #include struct po原创 2013-08-16 09:31:01 · 3877 阅读 · 0 评论 -
POJ 2503 Babelfish
周赛的时候刚做过,还不知道是POJ的题嘞。这道题直接用Map,不会出任何问题。下面是代码:#include #include #include #include #include using namespace std;int main(){ int i,flat,in,p; map map1; char a[50],b[20],c[20];原创 2013-08-16 09:48:33 · 3990 阅读 · 0 评论 -
POJ 3253 Fence Repair
这是一个可以用哈夫曼树来解决的题,以可以用优先队列。题目大意:FJ需要修补牧场的围栏,他需要 N 块长度为 Li 的木头(N planks of woods)。开始时,FJ只有一块无限长的木板,因此他需要把无限长的木板锯成 N 块长度为 Li 的木板,Farmer Don提供FJ锯子,但必须要收费的,收费的标准是对应每次据出木块的长度,比如说测试数据中 5 8 8,一开始,FJ原创 2013-08-16 10:33:59 · 3955 阅读 · 0 评论 -
POJ 2442 Sequence
这道题的数据真强大,各种写法不是MLE就是TLE,好不容易换了这种写法终于AC了。题目大意:输入m个数集,每个含n个数,求从每个集合取一个数后,按非降序输出前n小的和。用优先队列做的,注意限制队列元素个数,否则会超时超内存的。下面是代码:#include #include using namespace std;int n,m,a[4000005],b[4000005原创 2013-08-16 19:21:29 · 5337 阅读 · 0 评论 -
POJ 1442 Black Box
这个题用优先队列很好过。题目大意:给出两种操作如下:( ADD GET ) 操作 当GET取第几大 所有已添加元素 输出的元素1 ADD(3) 0 3 2 GET 1 3原创 2013-08-17 15:56:56 · 4606 阅读 · 0 评论 -
POJ 2513 Colored Sticks
这题让我明白了POJ原来多组数据测试是这么回事啊!!大致题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。解题思路:木棒相当于边,两端相当于两个节点,建图,判断是否联通,是否是欧拉图。建图并使用并查集判断联通时需要字典树,不能用map,会超时的(吐槽它为什么这么慢!!!)。当无向原创 2013-08-17 19:31:11 · 3974 阅读 · 0 评论 -
POJ 1364 King
题目大意:国王有一个傻儿子,原创 2013-11-05 08:47:58 · 4932 阅读 · 0 评论 -
POJ 1159 Palindrome
题目大意:给出一个字符串,问添加多少个字符才可以使这个字符串成为回文串。解题办法:将字符串逆序,同原串进行最长公共子序列处理,串的长度减去最长子序的长度就是题解。注意:这个题对内存的控制十分严格,5000*5000 int型数组是开不开的,可以开short型,也可以借这个题练习一下滚动数组。下面是代码:#include int max(int a,int b){原创 2013-10-22 08:28:42 · 4126 阅读 · 0 评论