
HDU
MissAnnLucky
Cease to struggle cease to live.
展开
-
HDU 1003 Max Sum
#include#include#includeusing namespace std;int num[100010];int main(){ //freopen("in.txt","r",stdin); int cas,n,sum,max,start,end,pos; scanf("%d",&cas); for(int j=1; j<=cas; j++原创 2013-07-25 23:30:56 · 505 阅读 · 0 评论 -
HDU 1239 Calling Extraterrestrial Intelligence Again 素数表
每次遇到这样的题都无从下手,其实根据题意分析一下,并不难,模拟就可以了。这个题先构造100000以内的素数表,然后根据条件判断就OK。#include#include#include#define MAXN 100010using namespace std;bool prime[MAXN];void intline(){ prime[1]=false; prim原创 2013-08-15 09:54:25 · 678 阅读 · 0 评论 -
HDU 1203 贪心或者DP
贪心策略是申请offer需要的钱越少越好,而成功率越高越好,所以按照需要的钱和成功率的比值从小到大排序,依次选择。#include#include#include#include#define MAXN 10010using namespace std;struct node{ int money; double p,r; bool operator<(c原创 2013-08-15 11:23:38 · 520 阅读 · 0 评论 -
HDU 2136 Largest prime factor 3种求素数表的方法
总结了3种求素数表的方法第一种:void intline(){ memset(prime,true,sizeof(prime)); prime[1]=false; prime[0]=false; for(int i=2; i*i<MAXN; i++) { for(int j=2; j*i<MAXN; j++)原创 2013-08-15 17:34:54 · 750 阅读 · 0 评论 -
HDU 1207 汉诺塔问题
转载于http://qianmacao.blog.163.com/blog/static/203397180201211555939662/http://acm.hdu.edu.cn/showproblem.php?pid=1207思路是借鉴网上一大牛的,写的很完美了,所以一句没改变体汉诺塔 问题描述:在经典汉诺塔的基础上加一个条件,即,如果再加一根柱子(转载 2013-08-16 10:21:13 · 524 阅读 · 0 评论 -
HDU 3848 DFS 树形DP
给你一棵树,找出两个叶子之间的最短距离。 第一种是个纯dfs+稍微的剪枝,从每一个叶子出发,dfs直到找到一个新的叶子,更新最短距离。781ms#include#include#include#include#include#define MAXN 10001#define INF 2147483647using namespace std;int原创 2013-08-28 20:06:44 · 582 阅读 · 0 评论 -
HDU 3853 概率DP
参考 http://www.cnblogs.com/zhj5chengfeng/archive/2013/03/01/2939423.html http://www.cnblogs.com/andyzhang2068/archive/2011/07/20/2111239.html 看到这个题知识感觉到很麻烦,没有往DP这原创 2013-08-29 07:20:38 · 563 阅读 · 0 评论 -
HDU 3849 无向图的割顶和桥模版题
原理在lrj训练指南P312,模板!不连通图的割边是0!!所以这个题要先判断是否是连通的。另外因为要求是按照输入顺序输出,所以不得不说保存数据很麻烦。#include#include#include#include#include#include#include#includeusing namespace std;typedef pair Pair;int n,m,tot转载 2013-08-29 17:17:33 · 776 阅读 · 0 评论 -
HDU 1025 最长递增子序列
求最长递增子序列nlogn的算法:(转载于http://www.felix021.com/blog/read.php?1587)最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS原创 2013-08-30 17:05:30 · 550 阅读 · 0 评论 -
HDU 4195 几何
题意,有一个n多边形,且是正多边形,从中任取3点构成一个三角形。告诉你这3个点的坐标,求满足条件的最小的n。 基本思路,暴力,从i(3#include#include#include#include#define eps 1e-6#define pi acos(-1)using namespace std;struct node{原创 2013-09-05 15:39:17 · 597 阅读 · 0 评论 -
HDU 3650 贪心+二分
( 这个题数据量比较小,所以类似于模拟也可以做。) 按照起始时间排序,然后从最小的起点开始,找在这一天内能够观看的所有节目,写了个二分优化了时间。 #include#include#include#include#define MAXN 110using namespace std;typedef struct node{ int原创 2013-10-09 19:46:14 · 566 阅读 · 0 评论 -
HDU 1054Strategic Game 贪心
这个题与http://blog.youkuaiyun.com/anqier0468/article/details/9453567看起来没什么联系,但是贪心策略是一样的,(做这个题时还是没想起来),从度数为1的结点a开始算起,因为删除这个度数为1的结点肯定不如删除与它相连接的结点b效率高,所以一定是在与它相连的结点b上房哨兵,然后删除与b相连的边,直到没有度数为1的结点。特别注意只有一个结点时输出1。原创 2013-08-14 10:35:29 · 641 阅读 · 0 评论 -
HDU 1051 Wooden Sticks 贪心
题意理解错了,这个题是找有多少个递增的子列,并不是第一次的sticks是(1,2),只要是后面的stick的len>1,wei>2就可以了,应该是后面是stick1#include#include#include#include#include#define MAXN 5010using namespace std;struct node{ int len,wei,原创 2013-08-13 18:47:15 · 496 阅读 · 0 评论 -
HDU 4379 The More The Better
真是个奇葩的题目!卡了N次。 1.并不一定是连续的子串,这个题相当于从n个数中挑出符合条件的数。 2.很容易超时,我超时的原因是用了 maxx=max(maxx,num);而换成 maxx=maxx>num?maxx:num;就不会超时。 3.思路:找出的子串中任意的两个相加都L/2的数中最小的一个即minn,最后如果min原创 2013-07-28 10:18:34 · 496 阅读 · 0 评论 -
HDU 4432 Sum of divisors
#include#include#includeusing namespace std;int n,m,digit[100];int ans;void comp(int a){ int aa=a; memset(digit,0,sizeof(digit)); int i=0; while(a) { digit[i]=a%m;原创 2013-07-25 23:38:38 · 499 阅读 · 0 评论 -
HDU 4430 A very hard Aoshu problem DFS 数学式子
比赛结束后,听人家说才知道是个dfs的题,枚举=的位置,然后看两边的结果有没有相同的,有就ans++,等号两边的每个位置要么放上+,要么不放。另外因为题目中说1+11=12和11+1=12是2种,所以不能只存等号左边的结果12,还要存能得到的12的个数,我直接用vector存的,扫面一遍有相同的就加1.#include#include#include#include#include#原创 2013-08-06 14:45:04 · 589 阅读 · 0 评论 -
HDU 3952 2011阿里巴巴程序设计公开赛
这个是2011阿里巴巴程序设计公开赛中的一个题,我们用这套题打了一场组队赛,最后却输在了这个题上,其实看了解题报告http://hi.baidu.com/kerrynit/item/85c865090210ed0aebfe3872很好做,只是比赛时不容易证明这个思路。摘自解题报告:1002 Fruit Ninja类型:几何(简单)假设有一条线穿过一些水果,那么我们将原创 2013-08-19 11:13:50 · 763 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!最长上升子序列
一开始题意理解错了,不一定是连续的子序列,只要是升序就可以,理解题意后,以为两个循环枚举起点就可以了,于是写了下段代码:#include#include#includeusing namespace std;int main(){ freopen("in.txt","r",stdin); int n,num[1010],cur; long long int s原创 2013-07-25 20:22:21 · 458 阅读 · 0 评论 -
HDU 2602 Bone Collector (01背包)
http://www.cnblogs.com/fly1988happy/archive/2011/12/13/2285377.html中的一句话:1、要求“恰好装满背包”时的最优解:在初始化时除了f[0]为0其它f[1..V]均设为-∞,这样就可以保证最终得到的f[N]是一种恰好装满背包的最优解。如果不能恰好满足背包容量,即不能得到f[V]的最优值,则此时f[V]=-∞,这样就原创 2013-08-12 11:47:50 · 449 阅读 · 0 评论 -
HDU 1114 Piggy-Bank 完全背包
一开始把INF初始化为0x7fffffff,第三组样例不过,其实在d[j-w[i]]+p[i]这里溢出了。#include#include#include#include#include#define MAXN 10010using namespace std;const int INF =1000000001;int main(){ //freopen("i原创 2013-08-12 20:05:40 · 581 阅读 · 0 评论 -
HDU 1016 Prime Ring Problem 搜索
#include#include#include#includeusing namespace std;int cir[25],n;bool vis[25];setst;bool isprime(int n){ for(int i=2; i*i<=n; i++) if(n%i==0) return false; return原创 2013-08-13 13:23:36 · 481 阅读 · 0 评论 -
HDU 1009 贪心
一开始以为浮点数有精度损失,在输出那里写 printf("%.3lf\n",sum+0.0001);结果WA了。不需要考虑精度损失。#include#include#include#include#include#define MAXN 5010using namespace std;struct Node{ int j,f; double p; b原创 2013-08-13 19:22:54 · 535 阅读 · 0 评论 -
HDU1102 Constructing Roads 最小生成树
基本算是最小生成树的模板题,对于已经建好的路,把它的长度标记为0就可以了。这个题比较坑的地方是输入是有多组数据的,还有数组越界有可能返回的是WA,注意数组的大小。如果全部存下,应该是n*n+n*(n+1)/2.#include#include#include#include#include#define MAXN 105using namespace std;int p[MAX原创 2013-08-13 20:52:09 · 471 阅读 · 0 评论 -
HDU 4722 WA求大神指教(已经更正)
规律很容易发现,从10开始,每10个数,有一个满足条件。即19,28,37,46,55,64,73,82,91,109,118,127,136,145,154,163,,,,,,, 代码如下:#include#include#include#define LL long longusing namespace std;int main(){// fre原创 2013-09-20 10:16:24 · 770 阅读 · 3 评论