HDU解题报告
文章平均质量分 69
muximuxi525
有些事情暂时可以放下但是绝不能放弃
展开
-
Hdu2159 Fate
题目大意:打怪,还有最后一级.但是不想升了..忍耐度有限m,问在杀怪上线为s的情况下能否获取n经验而通关思路:二维背包(基于basic完全).AC Program:#include#include#include#includeusing namespace std;int exp[105],tol[105];int dp[105][105];int n,m,原创 2013-02-07 21:09:46 · 847 阅读 · 0 评论 -
HDU1022 Train Problem I
题目大意:水题一枚,但是自己很水,所以模拟了蛮久.囧.栈模拟.开了三个栈oo1,oo2,oo3.oo2保存要求火车离开的顺序oo3模拟火车进站的顺序oo1是辅助栈,为了方便提取进站的头一列车.学数据结构的时候没好好写写伪代码,所以模拟的思路一开始一塌糊涂.后来认认真真的写一遍伪代码,思路清晰多了:(1)如果oo3栈不为空,并且栈顶元素和oo2栈顶元素相等的话,那么两个栈都开原创 2013-03-16 11:35:59 · 931 阅读 · 1 评论 -
hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
题目大意:悼念512...思路:多重背包...不优化也看过,数据弱...AC Program:#include#include#includeusing namespace std;int n,m;int v;int p[110],h[110],c[110];int dp[110];void ZeroOnePack(int cost,int weight)原创 2013-01-07 21:58:12 · 796 阅读 · 0 评论 -
HDU 2095 兔龟赛跑
题目大意:兔子和乌龟赛跑,乌龟可以骑电动车,并且在路途中建立充电站,每次充电消耗t时间,每次充电后可以骑c距离,问比赛结果思路:dp不能只是看i-1充电站的状态,因为有可能是在之前(0-i-1)的充电站直接充了电就直达当前所在站点的.所以对于每个充电站,要重新扫一遍.dp[i]表示到达i站所用的时间最少是多少.dp[i]一定是由前面的某一个站点充电后到达的最小值.但不一定是i-1这个站原创 2013-04-09 11:12:48 · 938 阅读 · 0 评论 -
腾讯马拉松编程大赛第0,1,5场解题报告
第O场A题:简单模拟题.注意一点就是本身的值和魅力值没有关系.另外就是"如果某位置的邻居和该位置主人性别不同,则总分加上邻居魅力值的绝对值,否则减去;"这个减去的也是绝对值.B题:多维完全背包C题:DAG背包问题D题:反过来想,对于每一个小孩子i,从其好朋友选1个,从其非好朋友选一个,那么就是a[i]*(n-1-a[i])(类似二维数组组合);因为算了两遍所以除以2,总数就原创 2013-03-27 21:21:30 · 824 阅读 · 0 评论 -
HDU 1011 Starship Troopers
题目大意:给出一张树形的地图,然后每个节点就是一个洞,每个洞里面有bugs和brain,现在给出我方有m个骑兵,每个骑兵可以消灭20个bugs,经过的洞穴不能再回头,要收服每个洞穴里面的brain就必须消灭每个洞穴里面的全部bugs,求最大的brain 思路:树形DP.第一次做很纠结,dp的路很漫长..一开始各种纠结,所幸跟羽哥讨论了一便之后思路清晰蛮多了,感谢羽哥...嘿嘿对于x原创 2013-04-10 15:43:30 · 1130 阅读 · 2 评论 -
HDU1074 Doing Homework
题目大意:给出n分homework,每份homework有截止时间 以及需要做多少天,一份homework超出截止时间一天就罚一分,问怎么安排do homework使得罚分最少 思路:第一次状态压缩DP.也很纠结...这次跟文东,鑫固讨论了下,多理解了下下因为总共有15份的homework,所以就有15!的安排方案,暴力肯定超时,但是如果用2进制来dp的话,2^15的状态数,可以接受.原创 2013-04-13 11:29:17 · 895 阅读 · 0 评论 -
HDU 4501 小明系列故事——买年货
题目大意:小明有在商场碰上了促销,小明刚好是会员,会员可以利用money,积分,免费拿k件的方式买衣服.小明看上了商场上的n件物品,并对它们标出了相应的花费,以及价值.求小明最多能买价值多少的衣服.思路:多维DP.01背包扩展一下就可以了,麻烦的是有一点在状态转移方程我用四维写的,其实三维更省空间,这里懒惰了.Dp[i][j][k][g]=max(Dp[i-1][j][k][g],Dp原创 2013-04-28 08:28:14 · 890 阅读 · 0 评论 -
HDU 2087 剪花布条 && HDU 1686 Oulipo
HDU 2087 题目大意:略思路:剪花步条的话.其实就是匹配完成之后,令j=1的话就可以了,(注意我的next数组不同于一般人的,我的next[1]=0的)这样就是实现在下一个位置继续匹配 AC Program:#include #include #include #include #include #include #include #include #原创 2013-04-28 08:46:02 · 789 阅读 · 0 评论 -
HDU 3068 最长回文串
题目大意:如题思路:manacher算法,第一次没听懂..这次终于弄懂了..跟扩展KMP很像....先把在博客上看到的思想贴出来:其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长,原创 2013-04-28 21:06:52 · 2374 阅读 · 0 评论 -
HDU1385 period
题目大意:就是给出一个串S,对于其长度为2以上的前缀,如果是可以子串周期性拼成的,那么按照前缀长度大小顺序输出相应的子串和周期数(周期至少为2)找规律(知道了就是常识而不是规律了).这个规律又是和next数组相关.满足这个规律就可以了:PS:我的next[1]=0; 下面简单解释:比如:先举两个是的例子:(1)如果前缀后缀如下图一样是相等的话,那么i-(next原创 2013-04-28 08:57:14 · 1169 阅读 · 0 评论 -
HDU 1711 Number Sequence
题目大意:KMP模板题思路;顺手再多敲了下模板,但是一开始wa了,囧..原来我一开始用string来把所有输入都接收再KMP,直接被搞死的,string也是有容忍度的(见代码注释出)..囧..提醒自己一下AC Program:#include #include #include #include #include #include #include #include #原创 2013-04-28 09:16:03 · 779 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace
题目大意:给出一个原串长度至少为3,问怎么样在两边添加字符使得成为周期串(周期为2以上),要求添加的字符最少思路:其实还是一道next数组的灵活运用而已,自己想了几种情况,枚举了下,再利用next数组求了几下..呵呵1A,爽.1.已经是完整周期的(1)abab 如果含有周期的,那么直接输出0即可,注意先排除next为1的情况2.还不是完整周期的 (1)ab原创 2013-04-28 09:36:40 · 882 阅读 · 0 评论 -
HDU 2222 Keywords Search
题目大意:如题 AC自动机模板题一道.思路:自己根据思想码了一遍,各种调试,然后对照原模板再调,,最后发现...差不多拷贝原模板了,嚓,,,,其实就是建立trie树,然后用过队列建立失败指针,也是KMP思想,利用前缀...失败指针尽量找深度深的,就是找最近的(我自己理解最近这个名词..)最后查询的时候,那么如果有路径就一直下,下不去的时候就找父亲的失败指针,看看这个失败指针有没有含原创 2013-04-28 21:15:43 · 797 阅读 · 0 评论 -
HDU 1879 继续畅通工程
题目大意: n个村庄,两两有路,有一些已经建成,有一些未建成,问求使得任意两个村庄都可以连通的最小费用思路:已经建成的路令其费用为0,求最小生成树即可.解法一:这里用最简单的prim+邻接矩阵:果断很慢O(n^2)450msAC Program:#include #include #include #include #include #include typedef l原创 2013-05-07 20:17:02 · 805 阅读 · 0 评论 -
HDU1010 && 多校联合第一场H题
HDU1010题目大意:狗狗在指定的时间不迟不早走到终点.思路:奇偶剪枝+DFS杭电这道题的输入有点坑,scanf+getchar()矩阵输入是不一定的.有可能是在一行输入.用了cin过的.o(╯□╰)o... AC program:#include#include#includeusing namespace std; char map[10][10];int t原创 2013-03-20 10:01:42 · 888 阅读 · 0 评论 -
HDU1175 连连看 DFS
题目大意:除了不能出界,其余就像玩游戏一样.思路:有几个注意的地方:(1)如果是给出同一点的判断能否抵消的,答案应该是否(2)如果两点不相等的话也不行(3)如果两点都是0的话也不行我是用DFS做得,一开始TLE,后来有一个犀利的剪枝,200ms.NICE.剪枝就是考虑在成功之前的状态:如果转折数已经达到2,但是还没有到达目的地,这应该要跳出.(成功与失败就在一线之差!)原创 2013-03-28 15:44:37 · 877 阅读 · 0 评论 -
HDU 2137 circumgyrate the string
题意:打印出旋转字符串思路:有几个trick:(1)横着打出来的要顶格(2)竖着打出来的要有空格在前面(3)打印出字符之后没有空格出现了(好久没切过题了,这样的题目老早要挂在word哪里工具--选项--显示所有的该死的东西的)(4)n为负数代码胡乱码,真心恶心,自己的代码是要好好修一下了.一维的简单更优雅.#include#include#inclu原创 2013-01-24 23:25:26 · 579 阅读 · 0 评论 -
HDU 2087 剪布条
题目大意:剪出多少个子串思路:其实朴素的字符串子串查找也是可以过的,因为是O( len(S)*len(T) )的时间效率,但是KMP更快O( len(S)+len(T) )! AC program: #include#include#include#include#includeusing namespace std;char s[1005],t[1005]原创 2012-09-04 17:24:16 · 720 阅读 · 0 评论 -
第一次与sscanf亲密接触 HDU 2106
Sample Input31(2)2(3)3(4)411(10)11(2)11(3)11(4) Sample Output623 题目大意&&思路:进制转换的水题,括号内是说明括号前的数是几进制表示的,最后输出他们的和;sscanf很优雅很喜欢,虽然更强大的还有正则表达式,但是用她在比赛中应该已经收效不少~~大爱~~A原创 2012-10-02 10:53:03 · 733 阅读 · 0 评论 -
HDU 3826 Squarefree number
题目大意:如果一个数含有平方因子,则不是平方自由数,反之则是平方自由数。思路:在这题了解到一些实用的知识:若n能被一个数的平方整除,它肯定能被一个素因子的平方p^2整除,为什么呢?因为如果能被一个偶数的平方整出 由于偶数=2*x 一定含有质数2 故能被质素2的平方整出假如 一个数能被 一个奇数的平方整除 奇数=质数*x 故能被质素的平方整出然后求在100W内的素数,为什么是这个原创 2012-08-30 18:18:22 · 724 阅读 · 0 评论 -
HDU1597
题目大意:就是拼串,注意到第n个串,就有多少长度的数,每9个数一个循环。求最后的串中第n个数思路:超级水题,但是有一点很坑爹,2^31次方,int类型过不去!WA了5次,还以为是精度问题。先用等差数列的求和公式求出(解一元二次方程)n在第几串字符串中,再求出在该串中排第几,就可以通过模9来解决问题program:#include#include#include#incl原创 2012-08-29 22:24:36 · 712 阅读 · 0 评论 -
HDU1788 Chinese remainder theorem again
题目大意:开始还真准备用同余线性方程组做了,后来仔细一看~~哟~~可以优化~~哈。思路:因为N%M1=M1-aN%M2=M2-aN%M3=M3-a即:N%Mi=Mi-a,所以 N%Mi+a=Mi,所以N+a和0同余于Mi(i=1,2,3……),特别要记住:能够化成和0同余的一定要变式,因为这样简单多了,完全转化为求Mi的最小公倍数,即是:N+a= (Mi的最小公倍数)原创 2012-09-26 11:03:05 · 736 阅读 · 0 评论 -
HDU1599 find the mincost route
题目大意&&思路:求出最小环,模板撸过~~~(floyd在求出最短路径的同时把最小环也求出来) AC program:#include#include #include #include #includeusing namespace std;#define inf 1000000000int mm[105][105];int dd[105][105]; int n,原创 2012-10-03 15:33:56 · 837 阅读 · 0 评论 -
HDU 1086
母串AZAZAZA子串AZAJ------ AZA题目大意:找出母串有多少子串,子串位置不可重合,但是可以重叠。思路:其实这是利用了一个很不起眼的巧妙来解决问题的,其实在第一个AZA匹配完毕之后,在常规的KMP匹配当中早已跳出,但是在这里先不跳出:void kmp(){ int i=1,j=1,cnt=0; while(i //不起眼儿的巧原创 2012-09-05 09:05:05 · 553 阅读 · 0 评论 -
HDU 1002 JAVA
换行注意下,然后就是输入的时候定义一个cin即可,后续就拿着cin去接着即可。类名必须Main。java的while(cin.hasNext())相当于!=EOF。输出的时候换成string类即可 import java.io.*;import java.util.*;import java.math.*;import java.text.*;public class M原创 2012-10-24 17:10:31 · 881 阅读 · 0 评论 -
HDU 1005 Number Sequence
题目大意&&思路:矩阵快速幂: a b * f(n-1) f(n) 1 0 f(n-2) = f(n-1) 所以: ( a b )^(n-2) * f(2) = f(n)原创 2012-10-28 21:33:19 · 611 阅读 · 0 评论 -
HDU 1171 Big Event in HDU
题目大意:hdu计算机学院分离为2部分,所有设施也应该要分为2部分,求在尽可能的分成相等的2部分,A部分不小于B部分的前提下价值A和价值B..所有设施给出的模式是: 每类设施有m件,同一类的设施价值相同.思路:多重背包问题,转化为01背包解决,更加高效的方法can't code and know noting...不过时间效率是O(V*Σlog[num[i]]),not in this O(原创 2013-01-04 19:07:16 · 774 阅读 · 2 评论 -
HDU1203 I NEED A OFFER!
题目大意:就是给出该学生攒下的总money 还有各校的学费以及该学生能上该学校的概率,求该学生能接到至少一份offer的最大概率思路:也就是求该学生没有得到一份offer的最小概率..01背包..注意边界值..#include#include#include#include#includeusing namespace std;double dp[10005];int wei原创 2013-01-04 14:31:18 · 543 阅读 · 0 评论 -
HDU 1059 Dividing
题目大意:Marsha and Bill准备平分他们共同的收集物:marbles;求能否做到完全平分.相同价值的marbles可能有多个.思路:多重背包问题.但是要优化,直接转化为01背包因为:O(7*20000*60000),必定tie了!所以必定得优化,但是单调队列优化的算法不会,只好把用二进制优化的多重背包模板摸过去..下面蓝色字部分来自.其中红色部分是算法优化核心..转化为01背包原创 2013-01-06 21:02:42 · 687 阅读 · 0 评论 -
HDU2844 Coins
题目大意:HIBiX想买一个很nice的watch,他有一堆coins,HiBix估计这个表的价格不会超过m,所以就打算用硬币拼出在m价格以内的价格数以备付款.来一个"苹果式还债",哈哈... 现在HiBiX问这堆硬币可以堆出多少钱值(在m以内)思路:用多重背包的装满思想,就是对于每一个V,都尽量的去装.如果装满的就是能够拼出的相应价格,但是有一点有点蒙.看代码最后处....原创 2013-01-06 22:24:34 · 1002 阅读 · 0 评论 -
HDU 3033 I love sneakers!
寒假回家第一题:这几天忙家务. o(-)_(-)o,然后累了不睡觉,竟然看电视剧,然后又无聊看不下去,每天不切题真心不习惯了,有点痒...题意:Iserlohn 准备收集自己喜欢的运动鞋.呵呵.Iserlohn 有m 钱,然后准备去买k个品牌的运动鞋,对于每种品牌的鞋子,Iserlohn 至少要买一双,现在求Iserlohn 能买到的运动鞋子的最大价值是多少.思路:分组原创 2013-01-23 21:47:21 · 808 阅读 · 0 评论 -
HDU 2063 过山车
题目大意:男女搭配,二分图模板题思路:匈牙利算法.O(n*m)时间效率.枚举女生集合里面的每一个女生,每次都去找增广路径,增广路径:(1)两个点没有匹配过的,(2)出发点和终点没有匹配过的,和已经匹配过的交替呈现 这里DFS搜就是了. AC Program: #include #include #include #include #include #in原创 2013-05-08 22:28:15 · 981 阅读 · 0 评论