上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 26 下一页
摘要: n的规模可以状压,f[x][y][S]表示x行,y列,S集合的巧克力能否被切割。预处理出每个状态S对应的面积和sum(S),对于一个合法的状态一定满足x*y=sum(S),实际上只有两个变量是独立的。而且有x,y等效与y,x,那么这里取max(x,y)。转移的时候枚举S的非空真子集,横着切或者竖着切... 阅读全文
posted @ 2015-09-29 18:48 陈瑞宇 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 如果状态定义为序号和重量的话,决策就是下一个垃圾捡或者不减,但是状态数太多了。如果只定义序号作为状态的话,决策就变成从前面的某个j一直捡到i才送回垃圾。这就变成了一个区间选最小值的问题,用单调队列维护。复杂度O(n)#includeusing namespace std;const int maxn... 阅读全文
posted @ 2015-09-29 17:59 陈瑞宇 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 这是一个零和博弈,最高得分只和序列以及谁先手有关。d[i][j],表示i到j的序列当前取的这个人的最高得分,转移以后状态是新的区间和另一个人取,从中取最小值。决策的最小值也可递推。#includeusing namespace std;const int MX = 101;int d[MX][MX]... 阅读全文
posted @ 2015-09-29 17:47 陈瑞宇 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 直接LCS是时间复杂度是O(p*q)的,但是序列元素各不相同,只要把其中一个序列映射成有序的,另外一个序列再做相同的映射,没有的直接删掉,就变成了求另一个序列LIS。#includeusing namespace std;int read(){ char c; while(c=getchar(... 阅读全文
posted @ 2015-09-29 17:40 陈瑞宇 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 先枚举两个矩形,每个矩形横着放或竖着放,把一边拼起来,如果不是拼起来有缺口就尝试用第三个矩形去补。如果没有缺口就横着竖着枚举一下第三个矩形和合并的矩形x或y拼接。#includeusing namespace std;const int N = 300+5;int ax[3][2],ay[3][2]... 阅读全文
posted @ 2015-09-28 21:41 陈瑞宇 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 按身高排序,每个人前面最高的人数有上限,如果超出上限说明impossible,每次考虑最小的人,把他放在在当前的从左往右第k+1个空位因为要求字典序最小,所以每次k和(上限-k)取min值。没有修改操作,只有删除,可用线段树维护空位数量s,每次类似名次树判断一下第k个空位在哪颗子树上(原来这叫划分树... 阅读全文
posted @ 2015-09-27 20:45 陈瑞宇 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 定义f[i]表示以i为开头往后的最长上升子序列,d[i]表示以i为结尾的最长上升子序列。先nlogn算出f[i],从i-L开始枚举f[i],表示假设i在最终的LIS中,往[0,i-L)里找到满足ai>aj中dj值最大的。用dj+f[i]更新。但是这样会少考虑一种情况,即i-L以后都不在最终的LIS里... 阅读全文
posted @ 2015-09-27 18:18 陈瑞宇 阅读(330) 评论(5) 推荐(0) 编辑
摘要: 从D+1开始,对于一个数x,区间[x,x+lowbit(x))内的数字的二进制位上1的数量整体来说是单调不减的,因此可快速得出1在这个区间的取值范围。每次判断一下有没有和[s1,s2]有没有交集,一旦发现解就贪心最小的一个。复杂度是O(T*log(ans-D))#includeusing names... 阅读全文
posted @ 2015-09-27 18:12 陈瑞宇 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 每次操作是独立的,而且顺序并不影响,作用在同一个结点上的d可以叠加,所以令x(u) = sigma(dui).最后就是要确定所有的x(u)。因为m越大,满足条件的边就越少,二分答案m。对于一条边a->b,可以列出一个不等式d(a,b) +x(a)-x(b)>=m,移项可得x(b)-x(a)0,意味着... 阅读全文
posted @ 2015-09-26 19:01 陈瑞宇 阅读(435) 评论(0) 推荐(0) 编辑
摘要: Hold Your HandTime Limit: 1500/1000 MS (Java/Others)Memory Limit: 65535/102400 K (Java/Others)Total Submission(s): 169Accepted Submission(s): 38Proble... 阅读全文
posted @ 2015-09-25 00:18 陈瑞宇 阅读(299) 评论(0) 推荐(0) 编辑
摘要: E. Kefa and Watchtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputOne day Kefa the parrot was walk... 阅读全文
posted @ 2015-09-24 00:13 陈瑞宇 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 用spfa,和dp是一样的。转移只和最后一个吃的dish和吃了哪些有关。把松弛改成变长。因为是DAG,所以一定没环。操作最多有84934656,514ms跑过,实际远远没这么多。脑补过一下费用流,但是限制流量不能保证吃到m个菜#includeusing namespace std;typedef p... 阅读全文
posted @ 2015-09-23 09:41 陈瑞宇 阅读(240) 评论(0) 推荐(0) 编辑
摘要: dfs一遍,维护当前连续遇到的喵的数量,然后剪枝,每个统计孩子数量判断是不是叶子结点。#includeusing namespace std;const int maxn = 2e5+5;int a[maxn];int head[maxn],nxt[maxnm) return; int ch ... 阅读全文
posted @ 2015-09-23 09:36 陈瑞宇 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 排序以后枚举尾部。尺取,头部单调,维护一下就好。排序O(nlogn),枚举O(n)#includeusing namespace std;typedef long long ll;//#define LOCALconst int maxn = 1e5+5;struct Node{ int m,... 阅读全文
posted @ 2015-09-23 09:34 陈瑞宇 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 有点麻烦的递推,递推的原则:向小的问题方向分解,注意边界。字符串的递推式为定义f为Si中的总方案数首先可以得到fi=fi-1+fi-2+组合(si-2,si-1)然后考虑Si-2和Si-1之间的组合为了得到小的问题,进行拆分为了以后表示的方便和逻辑上的清晰,把Si~Si之间的组合总长度定义出来因为这... 阅读全文
posted @ 2015-09-22 22:23 陈瑞宇 阅读(412) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 26 下一页