贪心
我的妹妹syf
我的妹妹不可能那么胖
展开
-
UVA 1093 Castles
题目大意:太长不想说,自己看吧。发现留守和死亡是没有区别的,那么把它们一起考虑。考虑只有一个点的情况,那么这个点需要的人数就是max(a,b+c),但是死亡的人数是b+c那么我们先把需要的人数和死亡的人数做一个pair。然后考虑枚举起点,算总的需要人数。每个点的死亡人数就是它的死亡人数加上所有子树的死亡人数。但是这个点的需要人数并不是这个。不难发现,当完成一个子树后,多余的原创 2017-07-11 10:54:23 · 569 阅读 · 1 评论 -
ZOJ 3305 Get Sauce
题目大意:有M串数字,每个数字都在[1,N]之间,找出一个M的子集,使里面所有的数没有重复,且子集大小最大,输出最大的大小。M为了方便处理,由于N不难发现,对于一个数A,如果在M中存在另一个数B,B的每一位1在A中都为1,那么取A显然就没有意义了。于是我们就把互为子集的数去掉。新学了一种枚举子集的方法QwQsort(num,num+m);for(int i=0;i<m;i原创 2017-07-05 16:12:27 · 428 阅读 · 0 评论 -
codeforces 571B
#include#define N 300100using namespace std;inline int read(){ int f=0,a=0;char ch=getchar(); while(ch'9'){if(ch=='-') f=1;ch=getchar();} while(ch='0') a=a*10+ch-'0',ch=getchar(); if(f) return原创 2017-10-01 20:00:01 · 243 阅读 · 0 评论 -
NWERC 2015B/bzoj 4426 Better Productivity
#include#define N 210using namespace std;struct Node{int x,y;}a[N],b[N],c[N];int dp[N][N];int n,p,B,C;inline bool cmp1(Node a,Node b){ if(a.x!=b.x) return a.x<b.x; return a.y<b.y;}inline boo原创 2017-10-02 18:47:32 · 350 阅读 · 0 评论 -
Codeforces Round #124 (Div. 1) D. The Next Good String
#include#define N 400100using namespace std;typedef unsigned long long ULL;const ULL MOD=29;ULL cf[N],a[N];int n,m;char s[N];inline void ex(){ puts("Impossible"); exit(0);}ULL h[N];void d原创 2017-10-04 14:22:17 · 287 阅读 · 0 评论