HDU/HDOJ
五彩斑斓的黑橘猫
这是一个最坏的时代,也是一个最好的时代。
展开
-
HDU 1205 吃糖果
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1205思路:鸽巢原理证明: 1.把某种糖果看做隔板,如果某种糖果有n个,那么就有n+1块区域,至少需要n-1块其他种糖果才能使得所有隔板不挨在一块..也就是说能吃完这种糖果.至少需要其他种类糖果n-1块..(鸽巢原理) 2.数量最多原创 2012-10-23 20:58:47 · 4374 阅读 · 1 评论 -
HDU 1203 I NEED A OFFER!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203思路:简单的01背包 总费用看作背包容量,申请费用看作每个背包的重量,价值为至少有一份offer的概率 状态转移方程:dp[j]=max(dp[j] ,1-(1-dp[j-a[i].val])*(1-a[i].p));#include#原创 2012-09-17 09:53:37 · 776 阅读 · 0 评论 -
HDU 1159 Common Subsequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159思路:dp 最长公共子序列问题记 Xi=﹤x1,⋯,xi﹥即X序列的前i个字符 (1≤i≤m) Yj=﹤y1,⋯,yj﹥即Y序列的前j个字符 (1≤j≤n) 假定Z=﹤z1,⋯,zk﹥∈LCS(X , Y)。 若Xm=Yn(原创 2012-09-18 10:09:36 · 537 阅读 · 0 评论 -
HDU 2159 FATE
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159思路:二维背包 将经验看作价值有动态转移:dp[ i ][ j ]=max(dp[ i ][ j ],dp[ i-r[ k ] ][ j-1 ]+v[ k ]) .v[k]表示杀第k种怪一只所得的经验,将耗去r[k]忍耐度。#include#原创 2012-09-17 16:37:09 · 958 阅读 · 0 评论 -
数字的字符串处理
在一些情况下,我们可能需要把一个字符串中的数字提取出来,这时候如果自己写函数就太麻烦了,c语言标准库中有一些弄好的函数供我们使用。现在我们来一起学习一下吧。1、atoi(char* buf),atof(char* buf)。这两个函数一看名字就猜到了,前者是转换成int,后者是转换成double。我们以atoi为例讲下它的用法。头文件转载 2012-09-17 16:15:35 · 525 阅读 · 0 评论 -
HDU 1069 Monkey and Banana
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069题意:把给定的长方体(不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽都比下面长方体的长和宽短;求这些长方体能叠加的最高的高度.(其中(3,2,1)可以摆放成(3,1,2)、(2,1,3)等).思路:其实就是求最长的单调递减序列。在长和宽的递减下,求最原创 2012-09-17 09:22:21 · 5492 阅读 · 0 评论 -
HDU 1171 Big Event in HDU
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171思路:多重背包转化成01背包#include#include#define max(a,b) (a)>(b)?(a):(b)int dp[125000];int v[1001],c[1001];int main(){ int n,i,j,k,sum,t;原创 2012-09-15 19:14:12 · 612 阅读 · 0 评论 -
HDU 1009 FatMouse' Trade
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009思路:贪心先买性价比最高的物品,知道钱花光。#include#include#includeusing namespace std;struct node{ double w,v,p;}a[1005];bool cmp(node b,no原创 2012-10-06 15:59:06 · 811 阅读 · 0 评论 -
HDU 2571 命运
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571思路:dp[ i ][ j ] + = ( dp[ i ][ k ] , dp[ i - 1 ][ j ], dp[ i ][ j - 1 ]);( k 为 j 的真因子)#include#define INF -123456789int dp[22][1003];原创 2012-09-15 15:24:25 · 1349 阅读 · 0 评论 -
HDU 2084 数塔
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084简单的贪心思想:把最大的数添加进来s[i][j]+=max(s[i+1][j],s[i+1][j+1]);#include#define max(a,b) (a)>(b)?(a):(b)int s[100][100];int main(){ int c,n,原创 2012-09-15 14:17:35 · 816 阅读 · 0 评论 -
HDU 1807 Super Jumping! Jumping! Jumping!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087一个最大上升子序列问题dp[i] 记录了在i之前且在i位置上的最大上升序列和,dp[i]等于前面a[j]#include__int64 dp[1010],maxn,t;int a[1010];int main(){ int n原创 2012-09-15 16:28:43 · 711 阅读 · 0 评论 -
HDU1505/POJ1964 City Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505和HDU 1506类似,用a[i][j]表示 在i高度j位置上的最大高度HDU 1506的解题报告:http://blog.csdn.net/qinmusiyan/article/details/7981306#include#define N 1002原创 2012-09-15 13:58:21 · 716 阅读 · 0 评论 -
HDU 1506 Largest Rectangle in a Histogram
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506重点:从左到右,对于每个点,记算出他所能向左和向右延伸的最大边界#include__int64 max,ans;struct node{ int l,r; __int64 v;}a[100010];int main(){ int i,n;原创 2012-09-15 09:55:09 · 893 阅读 · 0 评论 -
HDU 1287 破译密码
破译密码Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2436 Accepted Submission(s): 1080Problem Description有个叫“猪头帮”的国家,采用一种简单的文法原创 2012-10-04 14:34:49 · 2305 阅读 · 0 评论 -
HDU 2612 Find a way
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612思路:对Y和M分别进行一次BFS , 求出Y,M到可达点的步数并保存下来那么只要找出Y和M到KFC的步数和的最小值就基本解决问题了。#include#include#include#includeusing namespace std;#define原创 2012-10-03 21:38:17 · 1039 阅读 · 0 评论 -
HDU 2795 Billboard
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795线段树问题:思路:当前访问的结点的最大值小于给定值,直接返回-1。否则,左子树的最大值大于当前值,那么访问左子树,小于则访问右子树,直到叶子结点结束。其中h=min(h,n) (RE两次, >.#include#includeusing name原创 2012-09-13 20:22:23 · 486 阅读 · 0 评论 -
HDU 1257 最少拦截系统
本来这题我想的是最大拦截导弹序列和最少拦截序列个数,但没怎么如何代码实现。 然后想每次删除递减序列,删减的次数就是拦截系统的个数,居然AC了。#include#includeusing namespace std;int main(){ int a,n,i,c,t; vector v; while(cin>>n) { c=0; f原创 2012-08-16 17:31:57 · 456 阅读 · 0 评论 -
HDU2955 Robberies
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955是一道简单的背包问题,最重要的是找动态转移方程,可以将所用银行里的钱看作背包容量,每一家银行的钱看作重量,不被抓到的概率看作价值,则转移方程为:dp[ j ]=max( dp[ j ] , dp[ j - bag[ i ].v]*( 1- bag[ i ].p原创 2012-09-14 16:04:33 · 3815 阅读 · 0 评论 -
HDU 1176 免费馅饼
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176思路:据说是DP题(时间dp) 动态转移:dp[ i ][ j ]+=max(dp[ i+1 ][ j-1 ],dp[ i+1 ][ j ],dp[ i+1 ][ j+1 ]);#include#include#includeusing name原创 2012-09-17 11:40:16 · 646 阅读 · 0 评论 -
HDU 2844/POJ 1742 Coins
题目链接: 1)http://poj.org/problem?id=1742 2)http://acm.hdu.edu.cn/showproblem.php?pid=2844 思路:多重背包+二进制优化#include#includeint dp[100010];int c[110],v[1原创 2012-09-18 09:20:46 · 701 阅读 · 0 评论 -
HDU 1517 A Multiplication Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1517题意:2 个人玩游戏,给定一个数n,从 1 开始,轮流对数进行累乘一个数(2~9中取),直到第一次等于或超过n为赢.思路:1)找规律如果n是 2 ~ 9 ,Stan 必胜。如果输入是 10~18 ,不管第一次Stan 乘的是什么,Stan原创 2012-09-25 10:57:37 · 2789 阅读 · 4 评论 -
HDU 3368 Reversi
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3368题意:题意:给出了一个棋盘的状态,现在放一颗黑棋,问最多能把多少颗白旗翻转了,翻转的规则是:这颗黑棋和另一颗黑棋连线之间都是白旗,则这些白旗都能被翻转.思路:DFS#include#includeint d[8][2]={-1,0, -1,1,原创 2012-09-26 12:43:23 · 837 阅读 · 0 评论 -
HDU 1495 非常可乐
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495题意:输入a,b,c三个数,分别代表可乐,和两个杯子,三个容器可以互相倒,问能不能把a平分,能的话输出最小步数,不能就输出NO。思路:分别对6种倒法进行BFS#include#include#include#includeusing na原创 2012-09-25 20:53:45 · 2697 阅读 · 0 评论 -
HDU 2209 翻纸牌游戏
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2209思路:DFS+回溯#include#include#define INF 1<<30int a[25],cnt[25];int ans,temp,len;bool myok(){ int i; for(i=0;i<len;i++) if(a原创 2012-09-26 09:18:40 · 2318 阅读 · 3 评论 -
HDU 2897 邂逅明下
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2897题意:一堆石子n个,A,B两人轮流从中取,每次取的石子必须在区间[p,q]内,若剩下的石子少于p个,取石者须全部取完。最后取石子的者输。给出n,p,q,问先取者是否有必胜策略?思路:巴什博弈变形证明:假设先手为A,后手为B,初始n个,除最后一次每次取原创 2012-09-24 15:56:52 · 2884 阅读 · 1 评论 -
HDU 3544 Alice's Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3544思路:博弈后者会尽量选前着切后其中小的一块来切,那么先手须尽量取中间来切。#includeint main(){ int T,c=0,n,i; __int64 a,b,x,y; scanf("%d",&T); while(T--) {原创 2012-09-25 09:12:29 · 1697 阅读 · 0 评论 -
HDU 3951 Coin Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3951题意:给你n个硬币排成一圈,编号1-n,只能翻转连续的1~k个的硬币。翻最后一枚硬币者赢。思路:博弈 1) 若k=1,则一次只能去翻一枚,奇数先手赢,偶数后手赢。 2)若k>1:原创 2012-09-25 10:01:25 · 1126 阅读 · 0 评论 -
HDU 1035 Robot Motion
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1035思路:简单的模拟,按照矩阵中路径给出的指令走就是了,输出走的步数或者循环状态的步数#include#includeint map[15][15],a[15][15];int n,m,k,kind,link;bool flag;void Init(){ me原创 2012-09-24 10:05:08 · 617 阅读 · 0 评论 -
HDU 2717 Catch That Cow
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2717思路:简单的bfs搜索,每个位置只有三个方向#include#include#includeusing namespace std;#define N 100001bool s[N];struct node{ int x,time;};bool l原创 2012-09-24 09:01:55 · 814 阅读 · 0 评论 -
HDU 1258 Sum It Up
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1258思路:搜索DFS注意:搜索过程中,为了避免重复输出,需要记录前一层搜索的起点,下一层递归搜索的起点不能与前一层记录的点一样#include#includeint a[103],b[103],n,m;bool v[103],flag;void原创 2012-09-21 09:15:11 · 925 阅读 · 0 评论 -
HDU 1312 Red and Black
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312Red and BlackTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4306 Accepted S原创 2012-09-20 15:51:11 · 571 阅读 · 0 评论 -
HDU 1518 Square
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1518思路:DFS+剪枝这题一直想了好久没做出来,最后想到DFS,交了两次都TLE了 (+ . +)|||............没办法,看别人的解题报告了,也是DFS ,有些地方优化了,终于AC了 ^0^……#include#includeus原创 2012-09-20 20:06:14 · 903 阅读 · 0 评论 -
HDU 2952 Counting Sheep
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2952思路:简单搜索,我用DFS做#include#include#includeusing namespace std;char sheep[103][103];int n,m;void Init(){ int i; for(i=0;i<=n+1;i+原创 2012-09-20 16:16:09 · 608 阅读 · 0 评论 -
HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191思路:多重背包问题; 1)直接多重背包 #include#include#define max(a,b) (a)>(b)?(a):(b)int dp[101];int n,m;struct node{ int p,原创 2012-09-20 09:12:42 · 1043 阅读 · 0 评论 -
HDU 2830 Matrix Swapping II
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2830此题与HDU1505City Game类似枚举所有的行,然后对于每个行,记录到这行为止每列连续的1的个数,我们可以把每列看做宽度为1,连续个数看做它的高度。然后问题就可以看做在一些高度可能为0的相邻矩形中找到最大矩形,即最原创 2012-09-19 16:15:18 · 609 阅读 · 0 评论 -
HDU 2577 How to Type
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577思路:动态规划(dp) 令a[i]为输入第i个字符后CapsLock打开状态,b[i]关闭;则有如下: 1)若第i个字符为小写原创 2012-09-18 21:10:05 · 531 阅读 · 0 评论 -
HDU 2845 Beans
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2845思路:动态规划 对于一行来说,相邻的数不可同时取,容易得到状态转移方程: dp[i]=max(dp[i-2]+a[i],dp[i-1]); 然后取每一行的最大得b[i] ,又可看作一行相同处理原创 2012-09-19 09:04:49 · 1082 阅读 · 0 评论 -
HDU 1195 Open the Lock
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195思路1:单项BFS三个方向:加1,减1,相邻交换,其中9+1=1,1-1=9,最左边不与最右边相邻#include#include#include#includeusing namespace std;struct node{ int nu原创 2012-10-04 09:40:33 · 1849 阅读 · 0 评论 -
HDU 1372 Knight Moves
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372思路:简单的BFS ,Knight移动有八个方向在国际象棋中Knight称“马”或“骑士”,Knight的走法和中国象棋中马相同,同样是走“日”字,或英文字母大写的“L”形:即先向左(或右)走1格,再向上(或下)走2格;或先向左(或右)走2格,再向上原创 2012-10-03 09:45:37 · 5124 阅读 · 0 评论 -
HDU 4287 Intelligent IME
简单的字符串问题思路:map容器或字典树解决#include#include#includeusing namespace std;char tmp[27]="22233344455566677778889999";map v;char ch[5001][7],s[7];int main(){ int T,i,n,m,j; scanf("%d",&T原创 2012-09-12 14:45:50 · 622 阅读 · 0 评论