- 博客(13)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 hdu 4284 TSP问题
注意重边,真坑。裸的TSP#include #include #include#includeusing namespace std;int n,m;int money;int maps[105][105];int dp[17][1<<17];void debug(int x,int y){ printf("dp[%d][%d]=%d\n",x,y,dp[x
2013-10-29 14:30:07 785
原创 hdu 4671 Backup Plan 构造
真尼玛坑题,三个人读了1个多小时才懂意思。给n个服务器,m个任务,让你给每个任务构造一个优先级队列,每个任务会优先选择排在前面的服务器为它服务。我们要使服务器任务均匀分摊,也就是说得到最多任务的服务器的任务数不能比得到最少任务的服务器任务数多的超过1。现在,有一台服务器会坏掉(那么需要它服务的任务就会往队列后选择下一个服务器)很容易想到,只有第一列和第二列的数字有效,后面的
2013-10-24 21:45:37 692
原创 2054 Color a Tree 贪心
思路参考:http://www.cnblogs.com/yu-chao/archive/2012/02/19/2358565.html感觉挺难的一道贪心,一开始想到的只是C大的要先选,仔细一想就会发现是错的。无奈只有看网上的题解,然后觉得真心想不到这种贪心策略。#include#include#include#include#include#include#
2013-10-22 22:09:22 733
原创 hdu 4705 树形dp
题意:树上任意三个点不在一条路径上,统计这样的三点集合有多少种。三个点构成的路方案数 S = C(n,3)=n*(n-1)*(n-2)/6用S减去三个点在一条路径上的数目就是答案。枚举中间点作为第二个点,在它的第K棵子树上找一个点作为第一个点,在剩下的,没有枚举过的结点里,找一个点作为第三个点。数目相乘。这样问题就变成了统计结点的子节点问题,简单的树形dp。#include
2013-10-19 02:22:40 1128
原创 hdu 3225 Flowers Placement 二分图匹配+dfs
#include #include #include #define maxn 300005#define lson num<<1,s,mid#define rson num<<1|1,mid+1,e#include#include#includeusing namespace std;#define N 205bool vis[N];
2013-10-18 09:48:24 1299
原创 hdu 4099 Revenge of Fibonacci 字典树+大数
将斐波那契的前100000个,每个的前40位都插入到字典树里(其他位数删掉),然后直接查询字典树就行。此题坑点在于1、字典树的深度不能太大,事实上,超过40在hdu就会MLE……2、若大数加法时,保存的位数过少,就会导致低位误差,累积起来就可能导致前40位产生错误,解决办法是提高精度。#include#include#include#includeusi
2013-10-15 01:09:56 1254 1
原创 hdu 4091 Zombie’s Treasure Ches 贪心
其实挺水的,贪心策略:选择性价比最高的先选,剩下的n%lcm+lcm的就枚举a,b的数量,注意从size大的开始枚举,不然超时。#include#include#include#include#include#includeusing namespace std;typedef long long ll;ll n,c1,w1,c2,w2;ll gcd(ll a,ll b)
2013-10-14 21:03:08 675
原创 hdu 3721 Building Roads 树的直径
题意,移动一条边,使得树的直径最小。首先枚举拆掉的边, 拆掉边后,原图变成2颗树,然后重新连接两颗子树的某两个结点, 那么,此时答案(新树的直径)只有可能有3种情况。1、直径完全在1子树中。2、直径完全在2子树中。3、直径经过了 重新建立的那条边,也就是贯穿了2颗子树。用这3种的最大值更新ans。求树的直径的方法可以通过dfs或者bfs,O(n)时间求出。
2013-10-12 20:12:39 1130 1
原创 hdu 3722 Card Game 二分图的最大权匹配
题目可以转化为2个集合,x集合和y集合,其中的元素是1-n个字符串。首先预处理点与点的边权,然后直接用二分图的最大权匹配模板。#include#include#define N 210#define inf 0x3fffffffint map[N][N],match[N],lx[N],ly[N],sx[N],sy[N],d[N],n;int find(int x){
2013-10-09 17:13:31 1003
原创 hdu 3720 Arranging Your Team 枚举
不可能解可以直接判断。搭配产生的附加分可以用一个二维数组保存。枚举1442,4种类型的人,因为总人数只有23个,所以可以搜索暴力枚举,然后保存最优解。#include #include #include #include #include #include #include #include #include #include #include
2013-10-07 23:40:51 1338
原创 hdu 3729 I'm Telling the Truth 二分图匹配
裸的二分图匹配。需要输出方案。#include#include#include#include#includeusing namespace std;#define M 100005#define N 65bool vis[M];vector g[N];int now[M];int n,m;int dfs(int k){ for(int i=0;i
2013-10-07 23:37:41 857
原创 hdu 4749 Parade Show KMP
题目意思,给你两个串,让你求出第一个串中有多少个紫串,这个子串和第二个串满足:任意一个数字在其中的相对位置都一样。 串与串不能重叠,求最多有多少个。其实就是给你一个文本串一个模式串求有多少个匹配的问题,典型的KMP,但这里所谓的“匹配”,不是指两个数字相同,而是指两个数字在期中对位置等价。由此可以想到,我们可以用一个函数,代替KMP中 s[i]!=p[i]这条语句,而这个函数,就是
2013-10-07 02:25:02 1616
原创 hdu 4756 最小生成树
最小生成树建图,然后枚举点,树上dp求出每个点对应的最小值。再统计答案。#include #include#include#include#include#include#includeusing namespace std;#define INF 2000000000#define N 1005double sum;double dis[N][N];dou
2013-10-05 23:55:01 1100
为什么我的sublime的Preferences变成了灰色不可选
2016-07-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人