上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 69 下一页
摘要: 背包变形。dp[i][j][g][h]表示前i个数字,和为j,有g个必选,有h个必不选的方案数。 答案为sum{dp[n][j][2][2]}*4 阅读全文
posted @ 2016-08-07 21:17 Fighting_Heart 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 将大于等于m的数改为1,其余的改为0。问题转变成了有多少个区间的区间和>=k。可以枚举起点,二分第一个终点 或者尺取法。 阅读全文
posted @ 2016-08-07 21:15 Fighting_Heart 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 处理出每个位置左边的最大值和右边的最大值。然后就可以o(1)计算去掉某位置的最大值了。 阅读全文
posted @ 2016-08-07 21:13 Fighting_Heart 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 只需和总和比较即可。 阅读全文
posted @ 2016-08-07 21:12 Fighting_Heart 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 后缀数组。排序之后得到height数组,然后从上到下将height>=len的都分为一组,然后找到第一组个数最多的输出即可。 阅读全文
posted @ 2016-08-06 16:52 Fighting_Heart 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 贪心。 p<=q 答案为q-p。下面说p>q的情况。 可以疯狂的减到比q大一点的那个数,然后停顿一下,然后接着减。 也可以减到比q小的最大的那个数,然后再加回来,最后加回来的过程可以用之前停顿的抵消一些。 阅读全文
posted @ 2016-08-06 14:14 Fighting_Heart 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 可以用总方案数减去经过障碍物的方案数。 先写一个判断某点是否可达的函数~ check(a,b) 再写一个某点到某点的方案数的函数~ cal(x1,x2,y1,y2) 设随便走 从(1,1)到(n,m)的方案数为P 设从(1,1)走到第i个障碍物并且不经过其余障碍物的方案数为num[i]。 那么 an 阅读全文
posted @ 2016-08-05 22:32 Fighting_Heart 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 打表找SG函数规律。 然后就可以轻松AC了... 阅读全文
posted @ 2016-08-05 15:31 Fighting_Heart 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 打表找规律。会发现答案是以1为首项,m为公比的等比数列的前n+1项和。 阅读全文
posted @ 2016-08-05 15:29 Fighting_Heart 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 先处理出每一个i位置向左最远能到达的位置L[i]。每一次询问,要找到L,R区间中的p位置,p位置左边的L[i]都是小于L的,p位置开始,到R位置,L[i]都大于等于L,对于前者,最大值为p-L,后者求一个区间最大值即可。 阅读全文
posted @ 2016-08-05 12:00 Fighting_Heart 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 矩阵快速幂。先要处理出第i列每个状态下,让该状态填满,下一列可以出现的状态。因为N较大,可以矩阵加速。 阅读全文
posted @ 2016-08-05 11:57 Fighting_Heart 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 偶数先手赢,奇数后手赢。 阅读全文
posted @ 2016-08-05 11:55 Fighting_Heart 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 暴力。 阅读全文
posted @ 2016-08-05 11:55 Fighting_Heart 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 最长公共子序列。 阅读全文
posted @ 2016-08-05 11:47 Fighting_Heart 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 每条额外的边加入到图中,会导致树上一条路径成环,假设没有其余边,那么要将新图分成两部分,如果想删一条成环路径上的边,那么必须把这条额外边也删除。 因此每条额外边加入时,只需将环上的边+1。最后看看每条边被加了几次,被加了x次,也就是说删除这条边,至少还要删除x条边才能被分成两半,如果一次都没有被加, 阅读全文
posted @ 2016-08-05 11:46 Fighting_Heart 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 可以先处理出每个a[i]最左和最右能到达的位置,L[i],和R[i]。然后就只要询问区间[ L[i],i-1 ]和区间[ i+1,R[i] ]最大值位置即可。 阅读全文
posted @ 2016-08-05 11:41 Fighting_Heart 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 数位DP。dp[i][j][state] 表示最高位为i,数字为j,i位之后k-1个为state的方案数。例如1 2 3 4四个数字,state用1234表示。 阅读全文
posted @ 2016-08-03 21:41 Fighting_Heart 阅读(221) 评论(0) 推荐(0) 编辑
摘要: dp[i][j]表示以a[i],b[j]为结尾的方案数,就是 k<i&&s<j 的dp[s][k]累加和。用个树状数组求和即可。 阅读全文
posted @ 2016-08-03 18:34 Fighting_Heart 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 预处理出每个数字前面比它小的有几个,比他大的有几个,后面比他小的有几个,比他大的有几个。 先算出最多可能产生多少对,然后减去多加的就是答案。 阅读全文
posted @ 2016-08-03 18:32 Fighting_Heart 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 开个栈弹一下。 阅读全文
posted @ 2016-08-03 18:31 Fighting_Heart 阅读(133) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 69 下一页