HDU 4435 charge-station
摘要:2012天津赛区现场赛的E题,刚才做模拟比赛的时候和安神讨论了很久,思路没理清。大致题意是 给出N个点,让你选择性地建立加油站,在第i个点建立加油站的费用为2^i-1,要使自己能从1号点经过所有点回到原点,点可以重复经过,加油费用不计,每次加油最多能跑的距离为D。输出的答案是2进制,由费用10进制转化过来就是在第i个点建立加油站,答案从右往左数第i个值就为1。第一步判断所有点都建立加油站能不能完成题目的要求,不能输出-1。能完成要求的话,我们注意到建站费用是和点的编号有关的,比如第i个点建站的费用是等于前i-1个点都建站的费用+1,二进制的规律。然后我们可以从后往前判断当前加油站能不能拆。di
阅读全文
posted @
2012-10-28 21:25
找回失去的
阅读(699)
推荐(0)
HDU 3650 Hot Expo
摘要:贪心,以时间点i开始的活动数目为beg[i],结束的记为end[i],然后每扫到一个开始和结束,数组都计数。然后统计一天同一个时间点有多少个开始就行了,遇到结束要减去。最小的天数就求出来了。/*Accepted 3650 15MS 916K 881 B C++ Yu*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;const int MAXN = 24 * 3600;int beg[MAXN + 10]
阅读全文
posted @
2012-09-17 15:28
找回失去的
阅读(234)
推荐(0)
HDU 4296 Buildings
摘要:让上面的w和s都尽可能小,即w+s升序排序,值小的放在上面。这样一来,不管是w很大s很小或者s很大w很小,都可以使得最大的PDV尽可能地小,可以用笔写写看。#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;typedef __int64 LL;const int MAXN = 100100;int n;struct Node{ LL w, s;}t[MAXN];bool cmp(const Node a,
阅读全文
posted @
2012-09-16 17:35
找回失去的
阅读(1278)
推荐(0)
HDU 4268 Alice and Bob
摘要:这是昨天网络赛的1002题,做得很伤感。昨天处理的方法上有些错误,一直没有过。今天学习了下set,STL真强大。将Alice的card标记为id=0,Bob的card标记为1。将所有的纸片按照h,w的升序排序,按照id的降序排序,也就是在相同情况下将Bob的纸片放前面。然后将Bob的纸片的w插入set,贪心选取Alice比Bob的纸片w大一点的来覆盖,然后删掉被覆盖的纸片。#include <stdio.h>#include <string.h>#include <algorithm>#include <set>using namespace s
阅读全文
posted @
2012-09-09 10:37
找回失去的
阅读(754)
推荐(0)