
HDU 解题报告
恋上鱼的猫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 1053 Entropy(Hffuman编码)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1053<br /><br />题目大意:给你一个字符串,每一个字符在计算机中用8位编码表示,所以给你字符串AAAAABCD,它在计算机中要占用64位,可是为了节省内存,希望你能<br />设计出一种编码,使得内存的占用尽可能的少,即字符串的位数表示最少,输出 原本占几位,编码后占几位,二者的商<br /><br />解题思路;土土的统计每一个字符出现的次数,然后根据出现次数进行建树,原创 2011-04-20 15:49:00 · 1924 阅读 · 0 评论 -
hdu 2276 Kiki & Little Kiki 2(矩阵构造乘法)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2276<br /> <br />题目大意:有n盏灯,0表示不亮,1表示亮,如果 i-th的灯的左边灯是亮的,那么下一秒钟,i-th灯的状态要改变,0变成1,1变成0。问你在第t秒时,灯的状态时什么样的,输出来。<br /> <br />解题思路:<br /> <br />a1 = (a1+an)%2,a2 = (a1+a2)%2,a3 = (a2+a3)%2,……an = (an+an-1)%2<原创 2010-08-02 22:31:00 · 1221 阅读 · 0 评论 -
hdu 1698 Just a Hook(线段树求总区间和)
http://acm.hdu.edu.cn/showproblem.php?pid=1698#include struct Seg_tree { int left,right; int val,sum; Seg_tree(){val = 0;}}tree[400010];void CreateTree(int locate,int left,int right){ tree[locate].left = left; tree[locate].right = r原创 2010-08-01 22:27:00 · 644 阅读 · 0 评论 -
hdu 1016 Prime Ring Problem
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1016<br /> <br />题目大意:给你一个n,输出用1~n的数组成一个环,相邻两数之间的和为素数。<br /> <br />解题思路:DFS<br /> <br />#include <stdio.h>#include <string.h>#define N 41bool yes[N];/*n是否为素数,0是,1不是*/int p[N],Stack[N],s;int原创 2010-07-29 22:18:00 · 1649 阅读 · 1 评论 -
HDU 1166 敌兵布阵(线段树)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1166<br /> <br />#include <stdio.h>#include <string.h>#define GetSum(a,b) (a+b)#define N 100005int pos;/*数组指针*/int val[N];struct LineTree { int left,right; int sum; LineTree *ls原创 2010-07-31 15:22:00 · 1198 阅读 · 0 评论 -
hdu 1215 七夕节(两个代码,效率高低)
http://acm.hdu.edu.cn/showproblem.php?pid=1215解题思路:我是用到了数论上的一个求因子和的公式来求的。若n = p1^e1 * p2^e2 * ……*p3^e3(任何一个数都可以分解成素数乘积)则n的因子个数为 (1+e1)(1+e2)……(1+e3)n的各个因子的和为(1+p1+p1^2+……+p1^e1)(1+p2+p2^2+……+p2^e2)……(1+p3+p3^2+……+p3^e3)#include #include #include #de原创 2010-07-29 09:32:00 · 1319 阅读 · 1 评论 -
HDU 2648 Shopping
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2648<br /> <br />题目大意:有N个店,他们的商品价格每天都在上涨,问你 ith天有个叫memory的店,它的价格在所有商店中,有几个高过它,输出它的排名,有k个高过它,它就是第k+1名。<br /> <br />解题思路:哈希搜索<br /> <br />#include <iostream>#include <vector>using namespace std;s原创 2010-07-27 22:41:00 · 1453 阅读 · 0 评论 -
HDU 2899 Strange fuction
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2899<br /> <br />解题思路:用到一次求导求单调性,二次求导判断凹凸性,然后二分查找求极值<br /> <br />#include <stdio.h>#include <math.h>#define eps 1e-8int y;/*一次导数,递增函数*/double g(double x){ return 42*pow(x,6)+48*pow原创 2010-07-25 10:09:00 · 1649 阅读 · 0 评论 -
HDU 2612 Find a way
<br />http://acm.hdu.edu.cn/showproblem.php?pid=2612<br /> <br />题目大意:两个人,他们想在某家KCF见面,要求他们到这家KCF的时间花费最少。<br /> <br />解题思路:这道题是一道求迷宫最短路径问题,要用BFS搜索下搜索到第一条的路径就是最短路径,我们要分别以两个人为起点,对图进行两次的BFS,分别求出各自到KCF得最短距离,之后比较多个KCF的距离,输出最短的距离就好。<br /> <br />#include <string>原创 2010-07-23 21:56:00 · 3356 阅读 · 2 评论 -
HDU 1969 Pie
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1969<br /> <br />题目大意:主人家里来了F个他的朋友,他家里有好几个Pie,主人希望把Pie分出F+1份,体积一样的(主人自己也要一个),所有的Pie不需要都分完,问你每个人最大能分到多大体积的Pie。<br /> <br />解题思路:贪心+二分查找<br /> <br />#include <stdio.h>#include <math.h>#define size 10原创 2010-07-25 17:00:00 · 2004 阅读 · 0 评论 -
HDU 2289 Cup
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2289<br /> <br />题目大意:这道题就是给你一个圆台,里面装了一些水,现在告诉你圆台上下底半径,高度,水的体积,问你水的高度是多少。<br /> <br />解题思路:数学题,用到圆台求体积公式,照套就是,二分法逼近求值。<br /> <br />#include <stdio.h>#include <math.h>const double PI = acos(-1.0);原创 2010-07-23 11:24:00 · 2075 阅读 · 5 评论 -
HDU 3336 Count the string
http://acm.hdu.edu.cn/showproblem.php?pid=3336 题目大意:这道题的意思就是给你一个字符串,从中可以分离出n个的子串,统计这n个子串在字符串出现次数的和,再把结果对10007求余。 解题思路:例如:字符串 abcdabca它的子串有: a ab原创 2010-04-16 10:53:00 · 1170 阅读 · 2 评论 -
HDU 1421 搬寝室
http://acm.hdu.edu.cn/showproblem.php?pid=1421 解题思路:一道DP题 给定n个物品,每个物品有重量, 从中选出m对,使得这m对物品重量差的平方和最小。 疲劳度:m对物品重量差的平方和 分析与解题思路 先对n中物品的重量排序 令dp[i][j]表示前i个物品中选j对的最小疲劳度。 则dp[i][j]可能含有第原创 2010-03-20 11:33:00 · 8869 阅读 · 4 评论 -
HDU 1423 Greatest Common Increasing Subsequence
http://acm.hdu.edu.cn/showproblem.php?pid=1423 题目大意:就是叫你求最长公共递增子序列的长度。So就用LCIS算法做了。 #include #include const int size = 505;int a[size],b[size];int len[size];/*b字符串到第j个字符时,该字符位置处的公原创 2010-03-20 11:30:00 · 2461 阅读 · 0 评论 -
HDU 1273 How many tables
http://acm.hdu.edu.cn/showproblem.php?pid=1213 题目大意:有个人过生日,邀请了他的朋友来参加聚会,但是有些朋友认识,有些朋友不认识。假如A认识B,而B认识C,则A也认识C。他要让所有互相认识的人坐同一张桌子,问要摆几张桌子。 解题思路:典型的并查集啦,套模板。 #include #define size 1001原创 2010-03-11 14:30:00 · 1130 阅读 · 0 评论 -
HDU 2803 The Max
http://acm.hdu.edu.cn/showproblem.php?pid=2803 解题思路:一道数学题啦,就是要让你求最大值,我们只要排好V的值,让最后一个V值乘以尽可能最大的Y,剩下的V都乘以1就能最大。 #include #include using namespace std;int main(){ int a[101];原创 2010-03-11 14:39:00 · 893 阅读 · 0 评论 -
hdu 1575 Tr A(矩阵乘法快速求幂)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1575<br /> <br />#include <stdio.h>#define size 12struct node { int map[size][size];}unit/*单位矩阵*/,init/*初始矩阵*/;int n,m;/*矩阵相乘*/node Mul(node a,node b){ int i,j,k; node c; for (i原创 2010-08-02 11:17:00 · 2607 阅读 · 0 评论 -
hdu 1757 A Simple Math Problem(矩阵乘法)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1757<br /> <br /> <br />题目大意:给你一个公式f(x),叫你输出 f(k) % m的值<br /><br />解题思路:矩阵快速求幂<br /> <br />#include <stdio.h>#define size 10int n,m;struct node { int map[size][size];}unit,init,a;node Mul原创 2010-08-02 11:15:00 · 1221 阅读 · 0 评论 -
hdu 2842 Chinese Rings
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2842<br /> <br />题目大意:有n个环在一条线上,叫你把他们通通取下来最少要做几步操作,结果mod 200907.要拿下环来是有条件的,i-th环的前面的环如果通通拿下来了,那么(i+1)-th这个环,你可以放进去,也可以取下来.注意,第一个环,可以随意拿进取下,其他环就是要按照规则才能进行取下和拿进操作。<br /> <br />解题思路:构造矩阵乘法,首先要推出公式<br /> <原创 2010-08-03 21:06:00 · 1304 阅读 · 0 评论 -
hdu 3718 Similarity
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=3718<br /> <br />题目大意:求匹配数最大<br /> <br />解题思路:依次求A,B,C与D,E,F的位置匹配个数,构成矩阵,然后KM算法<br /> <br />例如:<br />A A B A B B C C C C<br />F F E F E E D D D D<br /> <br />矩阵为:<br /> D E F<br /> A 0 0 3<br原创 2011-03-30 14:43:00 · 1214 阅读 · 0 评论 -
hdu 2446 Shell Pyramid(数学的东西)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2446<br /> <br />题目大意:这道题说的是叠金字塔啦,最顶层是1,第二层是3,之后每一层的数量都是上面一层的数量加当前层数的值啦。所以呢,一层金字塔有1个球,两层金字塔有1+3 = 4个球,三层金字塔就有1+3+6 = 10个的球。现在给你一个编号s,问你它在金字塔中的第几层,第几行,第几列。例如19,它就在第四层,第四行,第三列。<br /> <br />解题思路:输入的编号太大,2原创 2010-08-17 20:59:00 · 2028 阅读 · 0 评论 -
hdu 2448 Mining Station on the Sea(最短路径+KM)
<br /> <br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2448<br /> <br />题目大意:海上有M个油田,有N个的船只和港口,N<=M,N艘船停在N个油田,油田和油田之间有距离,油田和港口之间也有距离。现在呢要你把船开会港口,每个港口只能停一艘船,问你怎么停可以使船只行驶的距离最短呢。<br /> <br />解题思路:先把船只所停的油田作为起点,做N次的最短路径,分别求出,从源点到港口的最短路径,这个就作为它们的权值,之后KM算原创 2010-08-18 22:18:00 · 2083 阅读 · 0 评论 -
hdu 2451Simple Addition Expression(排列组合)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2451<br /> <br />题目大意:有一个关于 简单加法表达式 的定义告诉你,就是 选一个数字i 如果 i+ (i+1) +(i+2) 它的和,没有任何一位进位的话,那就是 一个ie简单加法表达式。<br /> <br />例如:11+12+13就是,而 13+14+15就不是,因为它个位进位了。<br /> <br />现在给你一个n,叫你求出小于n的值中有多少个i可以构成简原创 2010-08-18 15:17:00 · 1378 阅读 · 1 评论 -
hdu 1059 Dividing(多重背包)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1059<br /> <br />解题思路:给你6种价值不一样的东西,并且每种物品都有一定的数量,现在问你,你可以把他们平均分成两份价值一样的吗??<br /> <br />解题思路:多重背包问题<br /> <br />比较笨拙的代码<br /> <br />#include <stdio.h>#include <string.h>#include <math.h>#define Ma原创 2010-08-15 21:18:00 · 3161 阅读 · 2 评论 -
hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1087<br /> <br />解题思路:求最长上升子序列和的最大值<br /> <br />#include <stdio.h>#define GetMax(a,b) a>b?a:b#define Big __int64Big dp[1005]={0};int main(){ Big Max; int i,j,n,val[1005]={0}; while (sc原创 2010-08-12 10:30:00 · 897 阅读 · 0 评论 -
hdu 2159 fate(二维完全背包)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2159<br /> <br />/*<br />dp[j][l] = Max(dp[j][l],dp[j-c[i]][l-1]+w[i])<br />它表示 用掉了j点的忍耐度,并且杀了l个怪后,所获得的最大经验数。<br />*/<br /> <br />/*dp[j][l] = Max(dp[j][l],dp[j-c[i]][l-1]+w[i])它表示 用掉了j点的忍耐原创 2010-08-11 20:13:00 · 2183 阅读 · 1 评论 -
hdu 1203 I NEED A OFFER!(01背包变型)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1203<br /> <br />题目大意:有个人想找个工作,所以呢他就要报名是吧?报名一份工作,需要付出一定的钱,同时报了这份工作你还只是有一定的概率获得这份工作。现在呢,他手头上有n元钱,问你怎么安排报名,能够使得得到一份工作的概率最大。<br /> <br />解题思路:01背包,n作为容量,概率作为价值,dp[i]为花了i元钱后,他得不到工作的概率最小。所以最后输出的结果为1-dp[n]<b原创 2010-08-11 09:14:00 · 1370 阅读 · 0 评论 -
hdu 最大报销额(01背包)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1864<br /> <br />解题思路:将报销上限设为背包容量,可报销的发票的金额扩大100倍作为价值做01背包问题求解。<br /> <br />#include <stdio.h>#include <string.h>#define max(a,b) a>b?a:bint dp[3000010];int main(){ int N,i,j,m,flag,len;原创 2010-08-10 19:17:00 · 1246 阅读 · 1 评论 -
hdu 2955 Robberies(01背包)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2955<br /> <br />题目大意:有一个小偷要偷银行的钱,可是他偷没家银行总是有一定的概率被抓,现在给了你一个概率P,只要他被抓的概率乘积不大与P,他就是安全的。问你在他安全的情况下,他最多可以偷多少钱。<br /> <br />解题思路:容量为银行钱的总和,价值就是偷到的钱,花费就是被抓的概率。<br /> <br />dp[j] = Max(dp[j],dp[j原创 2010-08-09 10:14:00 · 2114 阅读 · 1 评论 -
HDU 1316 How Many Fibs?
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1316<br /><br />题目大意:给你一个区间,[a,b],a <= b <= 10^100,叫你统计在这个区间内有多少个的斐波那契数。<br /><br />解题思路:注意到a <= b <= 10^100,也就是说我们只要打表打到某个斐波那契数的长度为100位的表就好,之后给定任何的区间都可以通过搜索表来统计。通过打表,我们可以知道,我们要求的最大的斐波那契数为第518个数,所以数组就只原创 2010-06-12 21:43:00 · 1115 阅读 · 0 评论 -
hdu 1068 Girls and Boys(最大独立集,二分匹配)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1068<br /> <br />题目大意:n个人,叫你求最大独立集,所以就是要求最大二分匹配了。 最大独立集 = 顶点数-最大匹配数<br /> <br />#include <iostream>#include <vector>#define SIZE 1005using namespace std;bool visited[SIZE];int Match[SIZE];原创 2010-08-05 17:04:00 · 791 阅读 · 0 评论 -
hdu 1532 Drainage Ditches(最大网络流)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=1532<br /> <br />解题思路:网络流模板<br /> <br />#include <stdio.h>#define Max 205int N,M;int Graph[Max][Max];int pre[Max];/*记录前驱点*/bool visited[Max];void InitGraph(){ int i,j; for(i=1;i<=M;i+原创 2010-08-07 16:53:00 · 755 阅读 · 0 评论 -
hdu 1754 i hate it(线段树入门)
解题思路:线段树啦#include #include #define GetMax(a,b) a>b?a:b#define size 200001struct seg_tree { int left,right; int max;}tree[size*4];int val[size],N,M;void build(int num,int left,int right){ tree[num].left = left; tree[num].right = ri原创 2010-08-04 20:34:00 · 580 阅读 · 0 评论 -
hdu 2254 奥运(矩阵降幂+二分求和)
<br /> <br />http://acm.hdu.edu.cn/showproblem.php?pid=2254<br /> <br />解题思路:求t1->t2天内,v1->v2一共有多少条的路径。就是要用到离散数学的可达矩阵的n次幂各元素的值就是经过n条路可以到达该点。所以说这道题说白了就是叫你求 A^t1+a^(t1+1)+……A^(t2),输出 v1v2该元素的值模2008(注意负数的处理).所以就是要用到矩阵降幂+二分求和。<br /> <br />#include <stdio.h>原创 2010-08-04 17:12:00 · 2116 阅读 · 0 评论 -
HDU 1073 Onlien Judge
http://acm.hdu.edu.cn/showproblem.php?pid=1073 题目大意:给你输入N组表达式,一个是正确的,一个是要核对的。问你这两个之间是什么关系。 #include#include #define N 10000char str1[N],str2[N];void input(char *str){ char原创 2010-03-11 14:22:00 · 2333 阅读 · 3 评论 -
HDU 3117 Fibonacci Numbers
http://acm.hdu.edu.cn/showproblem.php?pid=3117 题目大意:给定一个K(K很大很大),请你输出第K个Fibonacci数的前四位和后四位。 解题思路:这道题一开始后四位我直接就是想着去打表,我只是猜测说后四位的数字可能会形成一个周期,所以我就写了个测试代码,来测试是否存在周期,结果发现果然存在周期15000,所以就打表打出了后四位的原创 2010-03-01 20:18:00 · 2471 阅读 · 4 评论 -
HDU 2136 Largest prime factor
http://acm.hdu.edu.cn/showproblem.php?pid=2136 解题思路:用筛选法,求出输入的N值最大的素数的编号 #include#define size 1000001int prime[size];int main(){ int locate=0; int n,i,j; for(j=2;j<size;j+原创 2010-02-26 00:35:00 · 1675 阅读 · 2 评论 -
HDU 1879 继续畅通工程
http://acm.hdu.edu.cn/showproblem.php?pid=1879 解题思路:这道题给出的数据里有一些路是已经建好的,所以这条路的成本就不计入总成本中,所以把它直接设置为0。这道题要注意的就是这个了,然后又是prim算法,我晕哦,畅通工程怎么都这个算法。 #include #include #define MaxSize 105#defi原创 2009-08-19 16:08:00 · 828 阅读 · 2 评论 -
HDU 1875 畅通工程再续
http://acm.hdu.edu.cn/showproblem.php?pid=1875 解题思路:还是用到prim算法啦,只不过这道题他没给你两点之间的权值,需要自己用for循环一个个求出i点到j点的距离,时间复杂度就是O(n^2)了,之后就是标准的prim算法做啦。 #include #include #include #define INIT 99999原创 2009-08-19 10:38:00 · 620 阅读 · 0 评论 -
HDU 1102 Constructing Roads
http://acm.hdu.edu.cn/showproblem.php?pid=1102 题目大意:又是求最短路径的问题啦,只不过有些路已经建好了,现在要你计算连通所有点,还要花修路费,建好的就不用考虑了。 解题思路:已经做到麻木的类型题了,不说了。 #include #include #define MaxSize 105#define INIT 9原创 2009-08-19 16:40:00 · 465 阅读 · 0 评论