ACM做题笔记
Cifer
这个作者很懒,什么都没留下…
展开
-
ACM HDOJ 汉诺塔IV
汉诺塔IVhttp://acm.hdu.edu.cn/showproblem.php?pid=2077Problem Description还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面。xhd在想如果我们允许最大的盘子放到最上面会怎么样呢?(只允许最大的放在最上面)当然最后需要的结果原创 2011-12-04 10:29:49 · 2276 阅读 · 0 评论 -
ACM HDOJ 汉诺塔III
汉诺塔IIIhttp://acm.hdu.edu.cn/showproblem.php?pid=2064Problem Description约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。现在我们改变游戏的原创 2011-12-03 22:18:09 · 2323 阅读 · 0 评论 -
ACM HDOJ 汉诺塔V
汉诺塔Vhttp://acm.hdu.edu.cn/showproblem.php?pid=1995Problem Description用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下原创 2011-12-05 10:31:17 · 2864 阅读 · 0 评论 -
ACM HDOJ 下沙的沙子有几粒?
下沙的沙子有几粒?http://acm.hdu.edu.cn/showproblem.php?pid=1267Problem Description2005年11月份,我们学校参加了ACM/ICPC 亚洲赛区成都站的比赛,在这里,我们获得了历史性的突破,尽管只是一枚铜牌,但获奖那一刻的激动,也许将永远铭刻在我们几个人的心头。借此机会,特向去年为参加ACM亚洲赛而艰苦集训了近半年原创 2011-12-07 16:21:58 · 664 阅读 · 0 评论 -
POJ 1611 The Suspects
The SuspectsTime Limit: 1000MS Memory Limit: 20000KTotal Submissions: 13789 Accepted: 6543DescriptionSevere acute respiratory syndrome (SARS), an atypical pneumonia原创 2012-03-10 10:41:40 · 456 阅读 · 0 评论 -
POJ 1014 Dividing (多重背包)
题目链接:.........题目大意:有6种价值的大理石(为1~6), 先给出每种价值的大理石若干, 求能不能将它们平分。思路:背包9讲中的模板套着打就ok了, dp[j]表示重量为j时的价值, 这里重量等于价值。 这题和上一道题很像(.........), 也可以用f[j]记录重量为j时是否出现过。code:#include #原创 2012-07-16 15:29:39 · 807 阅读 · 0 评论 -
HDOJ 1712 ACboy needs your help (分组背包)
题目链接:。。。。。。。。。题目大意:有n门功课用A[i][j]表示第i门功课花j天完成得到的profit, 给出m天, 要求在m天内得到的最大profit状态方程:dp[j] = max(dp[j], dp[j-k]+A[i][k])code:#include #include int main(){ int i = 0, j = 0,原创 2012-07-14 13:18:11 · 418 阅读 · 0 评论 -
HDOJ 1385 Minimum Transport Cost(dijkstar+字典路径||floyd+字典路径)
题目链接:。。。。。。。。。题目大意:开始时输入n表示一个n*n的矩阵, 该矩阵表示从i到j要多少钱, 然后输入经过每个城市时要的税, 起点和终点不需要缴税。要求输出最小花费路径, 并是字典顺序。Ps:法克, 输出格式时比如1到1是 Path: 1, 而不是Path: 1-->1;就这个法克错一下午啊!code:dijkstar+字典路径#include #i原创 2012-07-12 16:52:34 · 504 阅读 · 0 评论 -
HDOJ 2602 Bone Collector(0-1背包)
题目链接:。。。。。。。。。新手第一道0-1背包问题动态方程:dp[j] = max(dp[j], dp[j-V[i]]+W[i]) j为容量, 最后的dp[v]就为求的答案。code:#include #include int main(){ int i = 0, j = 0, t = 0, n = 0, v = 0; int W[100原创 2012-07-09 22:05:54 · 714 阅读 · 0 评论 -
HDOJ 1596 find the safest road (d||s)
题目链接:.........直接模版code:#include int n = 0, used[1002];double map[1002][1002], dis[1002];void dijkstar(int u, int v){ int i = 0, j = 0, k = 0; double min = 0; for(i = 1; i<=n;原创 2012-07-17 11:31:33 · 1318 阅读 · 0 评论 -
POJ 2240 Arbitrage (spfa)
题目链接:( ̄▽ ̄)思路:它的题意是判断有没有正权回路,起点没有规定是哪个点(没读清楚wa了n次, 不是从第一个点判断正权回路)Ps:第一道spfa题~( ̄▽ ̄~)(~ ̄▽ ̄)~code:#include #include typedef struct{ int v, next; double p;}node;node edge[10000];i原创 2012-05-02 22:11:21 · 480 阅读 · 0 评论 -
HDOJ 1175 连连看 (bfs)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~思路:用bfs一次把这个方向上能到的点入队code:#include int m = 0, n = 0, front = 0, rear = 0, map[1002][1002], used[1002][1002];int X1 = 0, Y1 = 0, X2 = 0, Y2 = 0;int dir[4][2] = {{-原创 2012-05-17 19:15:43 · 663 阅读 · 0 评论 -
POJ 1742 Coins (背包)
题目链接:.........题目大意:给出n种面值的硬币, 和这些硬币每一种的数量, 要求求出能组成的钱数(小于等于m)Ps:用多重背包的方法做在poj上超时了(hdoj行), 然后在网上看到一个方法, 用f[j]表示能组成这价值为j的钱和不能(0与1), 用used[j]表示当前这种面值为j时用了A[i]多少次。code:#include #include原创 2012-07-16 13:47:43 · 621 阅读 · 0 评论 -
POJ 1384 Piggy-Bank (完全背包)
题目链接:。。。。。。。。。题目大意:给出n种面值的硬币,每种面值的硬币有一定的重量, 给出存钱罐的净重和存钱罐装满的重量, 要求求出存钱罐里最少有多少钱完全背包求解code:#include #include int main(){ int i = 0, j = 0, t = 0, e = 0, f = 0, n = 0, p[502], w[原创 2012-07-14 19:19:22 · 541 阅读 · 0 评论 -
HDOJ 1074 Doing Homework (状态压缩)
题目链接:。。。。。。。。。题目大意:给出每项作业, 有它的截止时间和完成它要花的时间, 如果在截止时间后完成, 要扣学分, 让找出最佳的做作业顺序,使扣得学分最少。思路:状态压缩,用2进制表示作业的完成情况, 0代表未完成, 1代表完成,共有n个作业, 那么所有作业完成的情况就是2的n次方减1code:#include #include struc原创 2012-07-08 17:41:56 · 607 阅读 · 0 评论 -
HDOJ 1245 Saving James Bond
题目链接:............思路:岛为起点,把每个两个坐标距离小于人能跳的距离加入图中(用邻接矩阵存),点到岸边的距离小于人能跳得距离也加入图中,就成了最短路问题(这里用dijkstra算法)。code:#include #include #include #include typedef struct{ int v, next; dou原创 2012-05-17 22:16:50 · 598 阅读 · 0 评论 -
HDOJ 1272 小希的迷宫 (并查集)
题目链接:(=^ ^=)思路:判断2点是不是在一个集合(是的话不行, 不是可以), 如果不在一个集合最后还要判断所有的点是不是在一个集合。(以下用一个集合中的点数与出现的点数判断)(wa了半天结果是数组开小了 纠结)code:#include #include int rank[100002], father[100002], used[100002], flag原创 2012-04-27 11:18:29 · 434 阅读 · 0 评论 -
HDOJ 今年暑假不AC (贪心)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~思路:按结束时间排序code:#include #include typedef struct{ int x, y;}node;node num[102];int cmp(const void *a, const void *b){ return (*(node *)a).y-(*(node *)b).y;}int原创 2012-04-14 19:45:17 · 1173 阅读 · 0 评论 -
HDOJ 1213 How Many Tables
Problem DescriptionToday is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the frien原创 2012-03-10 11:04:41 · 626 阅读 · 0 评论 -
HDOJ 2089 不要62
题目链接:。。。。。。。。。code:#include int num[1000000];//记录1~j的要排除数的个数int main(){ int i = 0, n = 0, m = 0, flag = 0, cur = 0, sum = 0; for(i = 1; i<1000000; i++) { cur = i;原创 2012-07-12 18:00:37 · 529 阅读 · 0 评论 -
HDOJ 1873 看病要排队 (结构体快排)
题目链接:( ¯ □ ¯ )思路:用结构体排序, 按优先权从小到大, 如果优先权一样按ID号从大到小排code:#include #include typedef struct{ int level, num;}node;node quene[4][4004];int count1 = 0, count2 = 0, count3 = 0;int c原创 2012-04-24 14:58:38 · 859 阅读 · 0 评论 -
HDOJ 3790 最短路径问题
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~code:#include #include #define Max 0xfffffffint n = 0, m = 0, s = 0, t = 0, map[1002][1002], cost[1002][1002], used[1002];int dis[1002], cost2[1002];void dijkstra(){原创 2012-04-04 18:06:20 · 530 阅读 · 0 评论 -
HDOJ 1495 非常可乐 (bfs)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~用bfs广搜,用2维数组used[102][102]来记录2杯子出现过的状态(判重),如果可乐量为奇数这种情况不可能分成相等的2份code:#include #include int s = 0, n = 0, m = 0, used[102][102], flag = 0;typedef struct{ int a,原创 2012-04-06 20:35:27 · 669 阅读 · 0 评论 -
HDOJ 1789 Doing Homework again (贪心)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~code:#include #include #include typedef struct{ int dl, re;}node;node num[1005];int used[1005], n = 0, sum = 0;int cmp(const void *a, const void *b){ return原创 2012-04-14 18:04:05 · 451 阅读 · 0 评论 -
POJ 3253 Fence Repair (堆排序)
题目连接:~( ̄▽ ̄~)(~ ̄▽ ̄)~用堆排序建立小根堆每回选取2个最小的值相加,再把得到的值放回堆中排序code:#include int num[20009], n = 0;__int64 sum = 0, sum2 = 0;void sift(int l);void heapsort();int main(){ int i = 0; while原创 2012-04-17 16:18:13 · 674 阅读 · 0 评论 -
POJ 1321 棋盘问题 (dfs)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~水过~code:#include #include int n = 0, k = 0, sum = 0, count = 0,used[10];//用used来标记每列是否有棋子出现过char map[10][10];void dfs(int row)//传的是当前是第几行{ int i = 0; if(count原创 2012-04-07 11:04:23 · 458 阅读 · 0 评论 -
POJ 1182 食物链
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~思路:用并查集,用rank[x]表示该节点与父节点的关系,rank[x] = 0表示同类 , rank[x] = 1表示吃 ,rank[x] = 2表示被吃在网上看了半天的向量法,图都没有个,看都看不懂,还是画图就懂了(没图没真相ㄟ(▔,▔)ㄏ )原创 2012-04-04 10:27:40 · 445 阅读 · 0 评论 -
POJ 2488 A Knight's Journey (dfs)
DescriptionBackgroundThe knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the world. Whenever a knight moves, it is two原创 2012-04-01 21:04:23 · 430 阅读 · 0 评论 -
HDOJ 1874 畅通工程续 (最短路)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~就是个最短路的问题又wa了ˋ^ˊ... 要判重边不说了,居然测试中有自己到自己的路ㄟ(▔,▔)ㄏ 初始化时要弄成0或s == t时输出0。code:#include #define Max 0x7fffffffint map[202][202], dis[202], used[202], n = 0, m = 0, s =原创 2012-04-06 14:14:49 · 376 阅读 · 0 评论 -
HDOJ 1548 A strange lift (bfs)
Problem DescriptionThere is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 <= Ki <= N) on every floor.The lift have just two buttons: up and down.When yo原创 2012-03-20 15:34:18 · 569 阅读 · 0 评论 -
HDOJ 2181 哈密顿绕行世界问题 (dfs)
一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Input前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m=1.m=0退出. Output输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后个一个: 后列出经过原创 2012-03-24 10:59:15 · 1239 阅读 · 0 评论 -
hdoj 1035 Robot Motion
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~code:#include int count1 = 0, count2 = 0, m = 0, n = 0;typedef struct{ char ch; int used, count;}node;node map[12][12];void mo(int x, int y){ if(xm || yn)//找到出口;原创 2012-03-20 19:43:20 · 436 阅读 · 0 评论 -
HDOJ 1546 Idiomatic Phrases Game
题目链接:............题目大意:规则就是成语接龙中的规则, 在这以4个16进制为一位汉字,首尾的4个数相同则能连上(每个汉字前的时间表示找到下一个汉字花的时间),找能连上的最短时间思路:生成图后用dijkstar.....水过code:#include #include #define inf 0x7fffffff;int n = 0,原创 2012-05-22 19:17:37 · 572 阅读 · 0 评论 -
HDOJ 2544 最短路
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~code:#include #include #define Max 0xfffffffint n = 0, m = 0, map[102][102], dis[102], used[102];void dijskstra(){ int i = 0, j = 0, k = 0, min = 0; for(i = 2;原创 2012-04-04 12:21:25 · 379 阅读 · 0 评论 -
POJ 1101 The Game (bfs)
题目连接: ~( ̄▽ ̄~)(~ ̄▽ ̄)~相邻的两个的segments为1,注意格式问题,wa了半天就在这2点上,郁闷code:#include #include int X1 = 0, Y1 = 0, X2 = 0, Y2 = 0, w = 0, h = 0, count2 = 0;char map[80][80];int dir[4][2] = {{-1, 0},原创 2012-04-02 16:24:33 · 476 阅读 · 0 评论 -
HDOJ 1166 敌兵布阵 (线段树)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~哎~ 不会树状数组郁闷........╮(╯Д╰)╭code:#include typedef struct{ int l, r, count;}node;node tree[4*50005];void Init(int root, int left, int right){ int m = (left+righ原创 2012-04-07 19:41:41 · 472 阅读 · 0 评论 -
POJ 1988 Cube Stacking
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~code:#include int father[30001], num[30001], under[30001];//father存放根节点,num存放当前这个堆有多少个方块,under[i]存放第i个方块下有几个int find(int x){ int item = father[x];//记录上回合并时x所指向的根节点 if原创 2012-04-03 14:29:15 · 368 阅读 · 0 评论 -
UVa 146 ID Codes
题目链接:(—_—) zZ题目大意:给出一个字符串, 要求求它的下一个按字典序排列的字符串思路:字典序的排列最终是由大到小, 那么我们只需从后往前找, 找出第一个不是由大到小排列的字母A,那么这个找到的字母A就要往后移, 在后面找一个比当前字母A大的字母B, 然后交换这两个字符,由于字母A原来的位置已经换成了字母B, 那么就要重新对B字母后面的字符串进行字典序排列(就是找出原创 2012-07-18 13:34:11 · 830 阅读 · 2 评论 -
HDOJ 1254 推箱子(bfs+dfs)
题目连接:ヽ(ˋ▽ˊ)ノ思路:每个点不止可以走一次, 而是可以可以从不同的方向到达一次,(wa了n多次)code:#include #include typedef struct{ int x, y, count; int xx, yy;}node;node step, quene[1000];int map[10][10], used[原创 2012-04-21 20:11:59 · 551 阅读 · 0 评论 -
HDOJ 1251 统计难题 (trie)
题目链接:(—_—) zZ字典树code:#include #include #include typedef struct node{ struct node *next[27]; int count;}trie;trie *root = NULL;char str[12];int len = 0;void create_trie原创 2012-07-17 20:38:30 · 457 阅读 · 0 评论