上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 27 下一页
摘要: 他都告诉你能拆了 那就拆呗。把每个重量拆成$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]就可以从 阅读全文
posted @ 2018-10-27 22:14 Ressed 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 给每一个联通块黑白染色(一条边两端点不同色),看是否能染 然后选那个出现次数比较少的颜色 阅读全文
posted @ 2018-10-27 21:55 Ressed 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 少女填坑中... 欧拉路径/欧拉回路 欧拉路径是一条经过图中所有边且只经过一次的路径(类似于一笔画问题);欧拉回路的话就是起点和终点相同的欧拉路径 存在条件 考虑有向图时欧拉回路存在的条件:由于每条边都要经过,所以每个点的入度和出度都要相等 然后再考虑欧拉路径:可以假装有一条从终点到起点的边,加上这 阅读全文
posted @ 2018-10-27 21:52 Ressed 阅读(496) 评论(0) 推荐(1) 编辑
摘要: 这题我是离线做的 设i位置的数上次出现的位置是pre[i](如果第一次出现那就是0) 可以想到,用线段树维护一个区间的pre的最小值,如果它小于区间左端点,那这个数就是一个合法的答案 但直接这样做是错的 考虑1,2,3,4,[1,1],5,虽然前一个1的pre在区间外面,但他后面还有一个1啊 所以可 阅读全文
posted @ 2018-10-27 21:19 Ressed 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 题意:无向联通图,求一条最长的路径,路径长度定义为u到v必须经过的边的个数 如果把强联通分量都缩成一个点以后,每个点内部的边都是可替代的;而又因为这是个无向图,缩完点以后就是棵树,跑两遍dfs求直径即可 阅读全文
posted @ 2018-10-27 21:09 Ressed 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 设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为开头选出一个好子数组的每种情况*再把它拼到后面的一个好子序列的数量 随便用什么方法预处理一下组合数就行 阅读全文
posted @ 2018-10-27 21:05 Ressed 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 考虑如果数字范围没有这么大的话,直接做一个差分数组就可以了 但现在变大了 所以要用一个map来维护 阅读全文
posted @ 2018-10-27 20:58 Ressed 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 先把区间按照长度从小到大排序,然后用尺取法来做 大概就是先一点一点把区间算上 直到某个点被覆盖了m次,然后一点一点把最前面的区间扔掉,直到没有点被覆盖m次,这样反复做(相当于是它选择的区间左右端点在那里摩擦) 判断有没有点被覆盖m次可以用线段树来做 阅读全文
posted @ 2018-10-26 19:12 Ressed 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 首先,应该尽量让吃饭慢的排在前面,先按这个排个序 然后再来决定每个人到底去哪边 设f[i][j]是做到了第i个人,然后1号窗口目前的总排队时间是j,目前的最大总时间 有这个i和j的话,再预处理出前i个人的排队总时间sum[i],可以知道在2号窗口的排队时间是sum[i]-j 拿着两个去更新答案就行了 阅读全文
posted @ 2018-10-22 22:27 Ressed 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 单调栈维护栈顶为高度最大的 记下来栈中每个元素入栈时顶掉的最靠左的一个位置(如果没顶掉就是它本身),那么在它出栈的时候,它所带来的面积就是(出栈位置-记录位置)*高度 (可能会有加一减一之类的细节) 阅读全文
posted @ 2018-10-22 22:23 Ressed 阅读(230) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 27 下一页