上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 69 下一页
摘要: 简单矩阵快速幂。 if(m==1) MOD=10; if(m==2) MOD=100; if(m==3) MOD=1000; if(m==4) MOD=10000; 剩下的就是矩阵快速幂求斐波那契数列第n项取模 #include<cstdio> #include<cstring> #include< 阅读全文
posted @ 2016-02-29 21:54 Fighting_Heart 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 矩阵快速幂。 首先得到公式 然后构造矩阵,用矩阵加速 取模函数需要自己写一下,是数论中的取模。 #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<algorithm> using namespac 阅读全文
posted @ 2016-02-29 20:59 Fighting_Heart 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 区间DP。 这题好难想....做区间DP专题的时候,第一题看的就是这题,发现不会然后一直没去做,直到今天专题中其余的题都切完了再看这题...依旧无头绪,还是看了题解....看了也发现好难。。。 #include<cstdio> #include<cstring> #include<cmath> #i 阅读全文
posted @ 2016-02-29 13:42 Fighting_Heart 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 区间DP。 区间DP专题做到现在,发现这题思路最难......自己想出来方法正确性应该没问题,但时间复杂度高达26000000..都不敢写了。 最终看了题解,发现真的不在我目前能力范围之内......编码量很少,但思维成分高。。。 首先:dp[i][j]表示把[i,j]空白串刷成t串[i,j]所需的 阅读全文
posted @ 2016-02-29 09:04 Fighting_Heart 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 区间DP。dp[i][j][h][k]表示[i,j]这段区间染色,左端点为颜色h,右端点为颜色k的方案数。 递推式很容易写出来。注意中间过程爆int。 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #in 阅读全文
posted @ 2016-02-28 19:12 Fighting_Heart 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 区间DP。 首先求凸包判断是否为凸多边形。 如果是凸多边形:假设现在要切割连续的一段点,最外面两个一定是要切一刀的,内部怎么切达到最优解就是求子区间最优解,因此可以区间DP。 #include<cstdio> #include<cmath> #include<cstring> #include<al 阅读全文
posted @ 2016-02-28 10:02 Fighting_Heart 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 区间DP。 首先很容易想到送货顺序是起点不断向两边扩展的。这样可以用区间DP做。 但是,如果我们这样设计dp,dp[i][j][X]表示[i,j]这一段区间都送完,最终在左端点、右端点的最小花费,是有后效性的。 为什么有后效性? 如果有一种方案得到的dp[5][8][0]较小,但走的总路程较多,另一 阅读全文
posted @ 2016-02-27 09:48 Fighting_Heart 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 区间DP。 我们先给人编号,从左到右编号1到n。 对于整段区间,必然有一个人是最后上场的,假设是编号为S的最后上场, 因为是栈维护的顺序,那么编号1至S-1这S-1个人,必然是第1--S-1个上场的(具体顺序不知), 而编号S+1至n这些人必然是第S--n-1个上场的(具体顺序不知)。 假设我们知道 阅读全文
posted @ 2016-02-25 22:04 Fighting_Heart 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 神题。同学指教。1秒AC。。。http://blog.csdn.net/jtjy568805874/article/details/50724656 #include<cstdio> #include<cstring> #include<ctime> #include<algorithm> usin 阅读全文
posted @ 2016-02-24 08:55 Fighting_Heart 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 很简单的博弈题.....算几组能得到规律了。 某个状态先手要赢 等价于 之前有一种状态是后手赢,先手可以保证让现在这个状态到达那个状态 #include<cstdio> #include<cstring> #include<ctime> #include<algorithm> using names 阅读全文
posted @ 2016-02-24 08:53 Fighting_Heart 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 状态压缩。 每一个人所需的物品对应一个数字,统计一个每个数字有几个。每一种提供物品的状态也对应一个数字,然后暴力判断。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn 阅读全文
posted @ 2016-02-24 08:49 Fighting_Heart 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 最长上升序列变形。LIS线段树写法。 #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<vector> #include<queue> #include<algorithm> #include<i 阅读全文
posted @ 2016-02-23 09:58 Fighting_Heart 阅读(234) 评论(0) 推荐(0) 编辑
摘要: DP。 具体做法:dp[i][j]表示长度为 i 的括号串,前缀和(左括号表示1,右括号表示-1)为 j 的有几种。 状态转移很容易得到:dp[i][j]=dp[i - 1][j + 1]+dp[i - 1][j - 1],表示 i 这位分别放上右括号和左括号。 然后就是要处理题目的问题了: 我们可 阅读全文
posted @ 2016-02-23 09:53 Fighting_Heart 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 2014浙江省赛题。 简单递推。f[i]表示加入第 i 个数字之后答案的新增加量。即以 i 位置作为区间的结尾对答案作出的贡献。 那么很容易得到,f[i]=f[i-1]+a[i]*(i-pre[a[i]]),pre[a[i]]表示a[i]上一次出现的位置。 然后把f[1]到f[n]加起来就是答案了。 阅读全文
posted @ 2016-02-22 22:23 Fighting_Heart 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 2015浙江省赛B题。我用了枚举+二分。。时间复杂度o(64*n),1900ms跑过的。应该有更好的方法。 #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<vector> #include<qu 阅读全文
posted @ 2016-02-22 19:00 Fighting_Heart 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 如果原图不连通,直接输出0. 如果原图连通,删除X条边之后要保证新图连通,再看数据是n+1条边-->因此,最多只能删去两条边。 因为n=100,可以枚举进行验证,枚举删去每一条边是否连通,枚举删去每两条边是否连通,验证是否连通可以用并查集,可以BFS。 #include<cstdio> #inclu 阅读全文
posted @ 2016-02-21 20:15 Fighting_Heart 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 先把偶数行换了,再把偶数列换了,这样能得到相同的颜色,次数为n/2+m/2次,但是为什么为最小值,不会证明,直觉。 #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<vector> #includ 阅读全文
posted @ 2016-02-21 20:11 Fighting_Heart 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 计算前两盘A赢,最后一盘B赢的情况下,B获得的球的值总和大于A获得的球总和值的概率。 存储每一对球的差值有几个,然后处理一下前缀和,暴力枚举就好了...... #include<cstdio> #include<cstring> #include<cmath> #include<string> #i 阅读全文
posted @ 2016-02-20 16:21 Fighting_Heart 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 构造AC的。左右两边都先不用6的倍数,然后哪边数字大那一边往回退一下,然后再比较哪边数字大.......直到结束 #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<vector> #include 阅读全文
posted @ 2016-02-20 16:18 Fighting_Heart 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 瞎搞题。。。凭直觉+猜测写了一发,居然AC了。。 #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<vector> #include<queue> #include<algorithm> #inc 阅读全文
posted @ 2016-02-20 16:17 Fighting_Heart 阅读(191) 评论(0) 推荐(0) 编辑
上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 69 下一页