摘要:
他都告诉你能拆了 那就拆呗。把每个重量拆成$a*2^b$的形式 然后对于每个不同的b,先分开做30个背包 再设f[i][j]表示b<=i的物品中 容量为$ j*2^i+W\&((1<<(i-1))-1) $(就是这一位是j+W的前i-1位)的最大权值(这个容量没必要填满) 然后f[i][j]就可以从 阅读全文
摘要:
给每一个联通块黑白染色(一条边两端点不同色),看是否能染 然后选那个出现次数比较少的颜色 阅读全文
摘要:
少女填坑中... 欧拉路径/欧拉回路 欧拉路径是一条经过图中所有边且只经过一次的路径(类似于一笔画问题);欧拉回路的话就是起点和终点相同的欧拉路径 存在条件 考虑有向图时欧拉回路存在的条件:由于每条边都要经过,所以每个点的入度和出度都要相等 然后再考虑欧拉路径:可以假装有一条从终点到起点的边,加上这 阅读全文
摘要:
这题我是离线做的 设i位置的数上次出现的位置是pre[i](如果第一次出现那就是0) 可以想到,用线段树维护一个区间的pre的最小值,如果它小于区间左端点,那这个数就是一个合法的答案 但直接这样做是错的 考虑1,2,3,4,[1,1],5,虽然前一个1的pre在区间外面,但他后面还有一个1啊 所以可 阅读全文
摘要:
题意:无向联通图,求一条最长的路径,路径长度定义为u到v必须经过的边的个数 如果把强联通分量都缩成一个点以后,每个点内部的边都是可替代的;而又因为这是个无向图,缩完点以后就是棵树,跑两遍dfs求直径即可 阅读全文
摘要:
设f[i]是以i为开头的好子序列的个数 那么有$f[i]=\sum\limits_{j=i+a[i]+1}^{N+1}{f[j]*C_{j-i-1}^{a[i]}}$(设f[N+1]=1)就是以i为开头选出一个好子数组的每种情况*再把它拼到后面的一个好子序列的数量 随便用什么方法预处理一下组合数就行 阅读全文
摘要:
考虑如果数字范围没有这么大的话,直接做一个差分数组就可以了 但现在变大了 所以要用一个map来维护 阅读全文