乱搞
文章平均质量分 60
我的妹妹syf
我的妹妹不可能那么胖
展开
-
ATcoder Grander Contest 17C Snuke and Spells 附题意
题目大意:N个球,每个球上有1-N之间的数字。如果当前有K个球,那么球上数字为K的所有球都会同时消失,然后继续进行这个操作。如果操作无法进行下去,就终止。你的任务是让所有球消失。不难发现,很多情况下球都会剩下一些,所以你需要在开始时修改一些球上的数字,使他们能被消完。当然,修改的次数要尽可能的少,问最小修改次数。还没完:我们有M次永久修改操作,将永久修改一个球上的数字。问每次永久修原创 2017-07-10 15:46:12 · 329 阅读 · 0 评论 -
codeforces 442D - Adam and Tree
题目大意:给一棵树上的每条边染色,每种颜色只能用一次,一次染色树上的一条链。问(从根到所有节点经过的颜色的最大值)的最小值是多少。树是通过每次加一个点得到的,问每次加点之后的最小值是多少。点数不难发现,答案肯定是小于等于直接树剖的答案,也就是log当前点数。显然能想到dp:用f[i]表示处理i的所有子树和i所需的最小颜色。如果正常染色的话,我们会尝试把f值最小的两棵子树和i原创 2017-07-12 11:45:51 · 1170 阅读 · 0 评论 -
Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A 题目忘了
题目大意:反正就是字符串覆盖,但是已经被覆盖了就不会再被覆盖了,问最终的字符串。非常显然可以用链表/并查集/线段树做。这是比较显然的做法。这里我用优先队列做了一发,效果还不错。首先需要了解堆的删除操作和离线区间加。那么我就用离线区间加的思想,开一个vector,在开始位置加入插入节点,在结束位置加入删除节点。由于修改是有顺序的,那么可以通过调用优先队列的队头来用最早的字符串覆盖。做法非原创 2017-07-13 11:20:56 · 368 阅读 · 0 评论 -
hdu 2485 Destroying the bus stations
标算未知= =但是由于数据比较水,显然是错的最大流&显然能被卡掉的迭代加深搜索&显然不可能过的A*&有理有据的模拟退火都能过(雾)我写的是个搜索+每层一次spfa,每次在最短路上搜一条边删除,看起来没问题。但是如果是这种图: / 2...k \1 - 3...k+1-n \ 4...k+2/是T的,然而。。。附代码#include#include原创 2017-07-05 09:58:49 · 264 阅读 · 0 评论 -
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 · 429 阅读 · 0 评论 -
51nod 特殊表示法
#includeusing namespace std;#define N 1001000inline void read(int &a){ char ch=getchar(); while(ch'9') ch=getchar(); a=ch-'0';}int n,m,ne;int a[N],b[N];char ans[N*2];int fib[10]={1,2,3,5,8,原创 2017-12-30 18:55:10 · 346 阅读 · 0 评论 -
AtCoder Grand Contest 003 D - Anticube
#include#define N 100100using namespace std;typedef long long LL;int prime[2200],len;int n,m,ans;LL l[N],r[N];map ma;int main(){ for(int i=2;i<2200;i++){ int fla=1; for(int j=2;j<i;j++)原创 2018-01-13 14:56:30 · 445 阅读 · 0 评论 -
AtCoder Regular Contest 077 E - guruguru
#include#define N 100100using namespace std;typedef long long LL;inline void read(int &a){ a=0;char ch=getchar(); while(ch'9') ch=getchar(); while(ch='0') a=a*10+ch-'0',ch=getchar();}int a[N]原创 2018-01-13 20:58:53 · 243 阅读 · 0 评论