
ACM_算法题解
文章平均质量分 73
PWZER
我是一只小小小小菜鸟
展开
-
【树形DP】 HDU 4008 Parent and son
原题直通车:HDU 4008 Parent and son分析: 如果a、b之间存在一条边,那么把a当树根和把b当树根只在a, b这两结点的信息有所区别,其它的不变。 所以,先以任意一个点做为根的所求出每个点的最小孩子min_son、最小子孙min_des 然后,就可分别把树根转移到其它结点时,每个点的最小孩子、最小子孙求出。代码:#include原创 2014-01-15 16:55:04 · 1105 阅读 · 1 评论 -
【哈夫曼树】HDU 2527 Safe Or Unsafe
原题直通车:HDU 2527 Safe Or UnsafeSafe Or UnsafeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1267 Accepted Submission(s): 496Pr原创 2013-10-17 14:37:18 · 769 阅读 · 0 评论 -
【数位DP】 【HDU 3652】
原题直通车:HDU 3652 B-number代码:递归式://904 KB 46 ms G++ 856 B#include#include#includeusing namespace std;int digit[12], dp[12][13][3], n;int next(int l, int i) { if(l==0) { if(i==1)原创 2013-09-19 16:59:27 · 762 阅读 · 0 评论 -
HDU 1083 二分匹配 Courses
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083分析:从第一个学生开始,先假定他任某一门课的课代表,然后再看第二个学生有没有选的,如果第二个学生他所学的课都有人预定了,那再看预定这些课的那些学生,如果他们之间有人还可以选其他的课,则让那个人选其他的,让第二个人预定那个人以前定的那门课,以些类推,最后看每门课是否都有人选.这就就答案了.#原创 2013-05-05 13:17:53 · 853 阅读 · 0 评论 -
HDU SPFA算法 Invitation Cards
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1535分析: 题意:求1点到其它点的最短距离之和+其它点到1点的最短距离之和 前面一部分直接用SPFA算法求出,而后一部分可用一数组存放反向边 (所有边的方向都反一下),利用反向边SPFA求出1点到其它点距离即可。#incl原创 2013-06-25 13:56:50 · 866 阅读 · 0 评论 -
HDU 2112 单源最短路径+map映射 HDU Today
题目链接:acm.hdu.edu.cn/showproblem.php?pid=2112分析:只要将字符串映射成数字,就可以用Dijkstra算法!不过要注意的是,当起始位置相同的时候.#include#include#include#include#include#include#include#includeusing namespace std;const原创 2013-05-08 23:52:03 · 654 阅读 · 0 评论 -
HDU 1238 字符串
///http://acm.hdu.edu.cn/showproblem.php?pid=1238///题意:给出n个字符串,求出所有串的公子串的最大长度,注意的是正反都行#include#include#include#include#include#include#include#includeusing namespace std;const int inf=10原创 2013-04-14 00:54:21 · 627 阅读 · 0 评论 -
【状态压缩DP】【POJ3254】【POJ1185】 入门题
题目直达车: POJ 1185 炮兵阵地分析:列( Ⅰ、如果一行10全个‘P’,满足题意的状态不超过60种(可手动枚举)。Ⅱ、用DFS搜出所有可能表示状态的整数(二进制1表示可以放,0则不能)。Ⅲ、对每一行的地行进行状态处理(p[i]表示第i行地形的状态),二进制‘H’转1,‘P’转0;Ⅳ、用dp[i][j][k]表示第i行,且i行状态为j,i-1行状态为k原创 2013-08-11 19:46:52 · 753 阅读 · 0 评论 -
HDU 1024 最大m段子段和 Max Sum Plus Plus
题目链接:题意: 求一个数组中的m个子段(不交叉)的最大总和.原创 2013-08-11 18:28:32 · 1279 阅读 · 0 评论 -
100个动规方程
100个动规方程 1. 资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2. 资源问题2------01背包问题F[I,j]:=max(f[i-1,j-v]+w,f[i-1,j]); 3. 线性动态规划1-----朴素最长非降子序列F:=max{f[j]+1}转载 2013-04-14 13:26:47 · 796 阅读 · 0 评论 -
HDU 1069 动态规划(DP) Monkey and Banana
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069题意:有n(n不同的立方体(每种个数不限), 求能够堆多高.分析: (1) 对于每一种立方体, 假设长,宽,高互不相等, 则它放置方法有6种不同的情况(长,宽,高全排列).(2)那么,实际上可以看成是6*n种不同的立方体.(3)对这6*n种立方体的原创 2013-05-04 20:06:19 · 1430 阅读 · 0 评论 -
HDU 1506 动态规划(DP) Largest Rectangle in a Histogram
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506分析:[本题深化版HDU 1505]一开始我用暴力,总是超时.后来才用DP过的.要得到最大的面积,肯定要得到相应的长和高,而高就肯定是n个高度中的某一个,关键是找到长.我们可把每个矩形以本身的高度向两边延伸(左端L右端R)的长度算出为(R-L+1).如果f[i]>f[i-1],则L[i-1]也原创 2013-05-12 16:37:08 · 816 阅读 · 0 评论 -
codeforces #186 D 动态规划(DP)
题目链接:http://codeforces.com/contest/313/problem/D#include #include #include using namespace std;const int maxn = 310;int a[maxn][maxn]; ///a[i][j]表示从i到j的这条路的最低消耗long long dp[maxn][maxn]原创 2013-05-31 21:58:00 · 2172 阅读 · 0 评论 -
POJ 1037 DP
题目链接: http://poj.org/problem?id=1037分析: 很有分量的一道DP题!!! (参考于:http://blog.youkuaiyun.com/sj13051180/article/details/6669737 )#include #include #include #include #include #include #include原创 2013-07-23 15:56:59 · 721 阅读 · 0 评论 -
codeforces MemSQL start[c]up Round 2 - online version A(模拟/二分查找) and B (最长公共子系列)
codeforces MemSQL start[c]up Round 2 - online version原创 2013-08-04 20:05:21 · 1079 阅读 · 0 评论 -
【树形DP】 POJ 3345 Bribing FIPA
题目链接: POJ 3345 Bribing FIPA 题意: 一个国家要参加一个国际组织, 需要n个国家投票, n个国家中有控制和被控制的关系, 形成了一颗树. 比如: 国家C被国家B控制, 国家B被国家A控制, 那么B , C 会跟着A投同一家国家. 而要有些国家给它投票, 就得用若干钻石去贿赂那些国家. 最后问, 要到至少有m个国家原创 2013-08-09 17:15:25 · 773 阅读 · 0 评论 -
HDU 2795 Billboard 线段树
http://acm.hdu.edu.cn/showproblem.php?pid=2795///题意:有个h*w的框架,往里面放n个1*a(i)的小块,而且总往最上的空格里放,输入每一个小块会放到第几行中/// 如果不能放入输出-1;//////#include#include#include#include#include#include#include#inc原创 2013-04-14 16:06:12 · 475 阅读 · 0 评论 -
HDU 1033 Edge 图论简单题
http://acm.hdu.edu.cn/showproblem.php?pid=1033#include#include#include#include#include#include#include#includeusing namespace std;const int inf=10000000;int main(){ string s; while原创 2013-04-19 19:12:19 · 651 阅读 · 0 评论 -
HDU 1086 线段交点 You can Solve a Geometry Problem too
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086分析:判断AB和CD两线段是否有交点: 同时满足两个条件,1.C点D点分别在AB的两侧.(向量(ABxAC)*(ABxAD) 2.A点和B点分别在CD两侧.(向量(CDxCA)*(CDxCB)#include#include#include#incl原创 2013-05-22 21:50:06 · 794 阅读 · 0 评论 -
acm必看 请不要做浮躁的人
学acm必看请不要做浮躁的人时间:2013-04-20 15:16 来源:网络整理 作者:acmwiki.com 点击: 163 次学acm必看 请不要做浮躁的人1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多转载 2013-04-23 14:27:12 · 690 阅读 · 0 评论 -
【二维线段树】 HDU 1823 Luck and Love | HDU 4819 Mosaic
【HDU 1823 Luck and Love】原题直通车:HDU 1823 Luck and Love题意:成块(矩形)更新最大值代码:#include#include#include#include#define Lson L, mid, rt<<1#define Rson mid+1, R, rt<<1|1#define Mid (L+R)>>1using原创 2014-02-17 16:45:44 · 1246 阅读 · 3 评论 -
【数位DP】 HDU 4734 F(x)
原题直通车: HDU 4734 F(x)题意:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1, 求0.....B中F[x]代码:// 31MS 548K 931 B G++#include#include#includeusing namespace std;int digit[11], dp[11][60原创 2013-09-20 22:49:33 · 757 阅读 · 0 评论 -
HDU 1198 Farm Irrigation 广度优先搜索(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1198题意:(请进入上面链接)题型:广搜思路:我们可以用二维数组记下字母的位置,但是每个方块都有上,下,左,右四个部分,所以我们要另加一维,保存它四个方位的状态.然后逐个往下搜,只要是能连接的都将其标记,如果深搜之后都还没标记,说明它是另一块的,ans++,直到最后结果就出来了.#incl原创 2013-04-17 22:11:54 · 689 阅读 · 0 评论 -
Codeforces Testing Round #5 B DFS
题目链接: http://codeforces.com/problemset/problem/267/B#include #include #include #include #include #include #include #include #include using namespace std;const int inf = 0x7ff原创 2013-07-08 11:25:31 · 728 阅读 · 0 评论 -
【树形DP】 HDU 2196 Computer
题目链接: HDU 2196 Computer分析: 先从任意一点开始, 求出它到其它点的最大距离, 然后以该点为中心更新它的邻点, 再用被更新的点去更新邻点......依此递推 !代码:#include #include #include #include #include #include #include #inclu原创 2013-08-02 16:14:43 · 608 阅读 · 0 评论 -
HDU 1495 非常可乐 广度优先搜索(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1495题意:有一瓶体积为S的可乐,另外有两个空的体积分别是n,m的杯子,问:能否平分可乐,如果能输出最少倒多少次才能平分思路:明确目标状态是有两个杯子都是S/2,那么,只要找到这状态就行,可能从开始状态出发,把每一种出现的状态都找出来,并保存,直到找到这状态.当然,重复状态要过虑以下是AC代码:原创 2013-04-14 22:06:47 · 927 阅读 · 0 评论 -
ZOJ 3690 矩阵快速幂乘
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3690题意:有n个人站在一排,另外有m个号码,每个人都选其中的一个号码,但是有一个条件是,如果两个相邻人选了相同的号码,那么这个号码要大于k;问一共有多少种不同的选法思路: 1 2 3 4 .......表示站第n的人原创 2013-04-14 01:02:09 · 757 阅读 · 0 评论 -
HDU 1059 背包问题
///http://acm.hdu.edu.cn/showproblem.php?pid=1059///背包问题///题意:输入6个整数,分别表示1到6六个数字的个数,问能否组合成两组,这两组所有数字的总和相同#include#include#include#include#include#include#include#includeusing namespace st原创 2013-04-14 01:05:16 · 582 阅读 · 0 评论 -
【树形DP】 codeforces VK Cup 2012 Round 1 D
原题直通车: codeforces VK Cup 2012 Round 1 D题意: 一颗树有n个结点,边长度都为1,问树中距离为K的点有多少对.分析: 对于某一结点A,到它距离为k的点有两种情况: 1)、在以A为根结点的子树中; 2)、在以兄弟结点为子结点的子树中(k>=2)如图(通过父结点与兄弟结点贯通)。原创 2013-08-15 11:01:51 · 743 阅读 · 0 评论 -
HDU 1723 动态规划(DP) Distribute Message
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1723分析: 假设某时刻在i处,则下一步可以到i+1,i+2,,,,i+m,也就是说, 后面m个点都受到i点的影响,而且,到达i有几种方法,那么到达后面m个点也会有这么多方法. 另外,每个点都可能受到前面多个点的影响, 所以只要把全部相加,即是答案.#include#include原创 2013-04-30 18:28:09 · 788 阅读 · 0 评论 -
HDU 1505 动态规划(DP) City Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505分析; [HDU 1506的深化版]每输入一行,更新一次高度,就变成了1505题的问题了.[本题深化版HDU 2870]#include#include#include#include#include#includeusing namespace std;int原创 2013-05-17 16:03:13 · 840 阅读 · 0 评论 -
HDU 2577 动态规划(DP) How to Type
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577分析: 1.要想知道输入n个字母时最小的按键数,必须先求输入n-1个字母时的最小按键数.所以,要从前往后把每输入一个字母的最小按键数都算出来. 2. 每次输入时都只有两种状态(CapsLock on与off, Shift另外考虑),所以只要求出每次输入时分别在这两种状态下的最原创 2013-05-18 21:48:02 · 698 阅读 · 0 评论 -
【状态DP】 HDU 2167 Pebbles
原题直通车: HDU 2167 Pebbles题意: 有个N*N( 3<=N<=15 )方阵, 可从中若干个数, 使其总和最大. 取数要求, 当某一个数被选, 其周围8个数都不能选. 分析: 第i行第j列的选数状态,不但影响到i+1行的j列取数状态,而且影响到j-1、j+1列的选数。 如果只压缩为一种状态,判断可行性时不方便,所以我将其压原创 2013-08-12 10:20:24 · 763 阅读 · 0 评论 -
HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索
HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索原创 2013-08-08 18:34:55 · 842 阅读 · 0 评论 -
POJ 2653 线段与线段相交 Pick-up sticks
题目链接:http://poj.org/problem?id=2653分析:每输入一条线段,就将以前没有踢除的线段与之有交点的都踢除.最后留下的就是在最上面的.#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=100000+原创 2013-05-23 16:30:31 · 782 阅读 · 0 评论 -
【数位DP】 【CodeForces 55D】
原题直通车:题意:求区间[a, b]中有多少个数能整除自身的每个非0数位。分析:一个数位只有1~9种可能,而1~9的lcm=2520。满足要求的数所有数位的lcm一定是2520的因子, 所以可先求出2520的所有因子,一开始都对2520取mod,这样对结果没有任何影响,最后再对所有数 位的lcm取mod,如果为0则满足。代码:#include原创 2013-09-20 16:32:18 · 842 阅读 · 0 评论 -
【数位DP】 HDU 4722 Good Numbers
原题直通车: HDU 4722 Good Numbers 题意: 求区间[a,b]中各位数和mod 10==0的个数.代码:#include#include#include#includeusing namespace std;int f[20];long long work(long long x){ long long ret=0, u=x; i原创 2013-09-12 19:48:52 · 879 阅读 · 0 评论 -
HDU 1016 素数环 深度优先搜索(DFS)
#include#include#includeusing namespace std;int a[12]={2,3,5,7,11,13,17,19,23,29,31,37},f[20],v[20];int n;int is_prime(int x){ for(int i=0;i<13;i++) { if(x==a[i])原创 2013-04-14 01:58:56 · 671 阅读 · 0 评论 -
HDU 1010 Tempter of the Bone 深度优先搜索(DFS)
#include#include#include#include#include#include#include#includeusing namespace std;const int inf=10000000;int dx[4]={0,0,1,-1}, dy[4]={1,-1,0,0};char map[8][8];bool vis[8][8];int s原创 2013-04-14 10:35:58 · 507 阅读 · 0 评论 -
【树形DP】 HDU 1520 Anniversary party
题目链接: HDU 1520 Anniversary party分析: 虽然看一去是有向边, 但完全可以用无向边去做!#include#include#includeusing namespace std;const int maxn=6010;struct node{ int v; node *next;}tree[maxn<<1],*原创 2013-08-01 11:35:49 · 636 阅读 · 0 评论