JIBANCANYANG

并非所有流浪者都迷失了自我。

nerrc 2015 J.Jump (神构造)

分析:先随机出一个n/2n/2的情况出来,期望步数是2nCn/2n\frac{2 ^n}{C_{n}^{n/2}}. 把其中一个位翻转,相同的个数要么为n / 2 + 1,要么为n/2 -1,显示结果都是0.如果把其中两位翻转结果就有n/2 + 2, n/2, n/2-2三种情况,第二种是可以鉴...

2016-10-24 09:53:52

阅读数 366

评论数 0

hihocoder 第120周 后缀数组 + 单调队列

分析:求出高度数组,用单调队列维护区间最小值。高度数组的区间最小值的意义就是这些排名相邻的后缀的最长公共前缀。实际上是把所有字符串划分为后缀。这里的是可重叠子串。#include <cstdio> #include <cstring> #include <iostre...

2016-10-19 11:04:38

阅读数 297

评论数 0

Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence 贪心 + RMQ

分析:固定长度为mm的区间不断右移动,只要这个区间内没有一个被选的元素就选择其中一个最小的,利用ST表的RMQ来做到。 这样求出必须要选择的最大的字母的次数,然后比它小的都要选。#include <cstdio> #include <cstring> #include &...

2016-10-09 17:50:37

阅读数 266

评论数 0

Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing 模拟

分析:把所有的点按照他们所在地斜线分类,斜线形如y=x+b,y=−x+by=x+b,y=-x+b。然后模拟整个运动过程,每次都是一个斜线到另一个斜线的变换,最多有O(max(n,m))O(max(n, m))的复杂度。 比赛的时候快速想出了整个思路,并且紫色渡劫成功。欢迎读者关注Codeforc...

2016-10-09 13:30:43

阅读数 337

评论数 0

hdu 4135 容斥

分析:互质的经典容斥,没啥可说的。#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define p...

2016-10-04 15:29:40

阅读数 370

评论数 0

hdu 2204 容斥原理

分析:根据指数乘法原理:xab=xabx^{ab}={x^a}^b 所以指数必须是质数,切质数显然应该小于等于2632^{63}。 但是这些质数并不是完全互质的,所以要用容斥原理来做。 这里计算一个指数有多少个可行的数使用的开根号运算符pow(n,1.0/x)+1e−8pow(n, 1.0 ...

2016-10-04 14:59:07

阅读数 267

评论数 0

Codeforces Round #374 (Div. 2) C. Journey dp

分析:dp[i][j]表示在i点已经经过j个点最小花费时间是多少。 这里wa了整场,因为j应该是外层循环而不是i#include <cstdio> #include <cstring> #include <iostream> #include <algo...

2016-10-03 09:19:35

阅读数 188

评论数 0

hdu 1796容斥原理

分析:就是区间不互质的个数,但是这里注意mm个数不一定都是素数,所以用lcm扩展增加,保证每次增加是素数。#include <cstdio> #include <cstring> #include <iostream> #include <algorith...

2016-09-26 22:33:26

阅读数 218

评论数 0

hdu2841 容斥

分析:整数平面坐标系在原点连线上的点,第一对互质,其它都是倍数。 所以就是[1,n][1,n]和[1,m][1,m]间互质的数的个数。 枚举[1,n][1,n]的数,分解质因数,容斥不互质的求反即可。复杂度O(n2phi(n))O(n2^{phi(n)})#include <cstdio...

2016-09-26 00:16:06

阅读数 216

评论数 0

poj2836 状态压缩dp

分析:两个点形成矩形可定时连接对角线的顶点。 预处理所有可能矩形的面积和他们能覆盖的点O(n3)O(n^3)。 dp[s]dp[s]表示当前覆盖情况的最小面积和,枚举加入每个矩形即可O(n22n)O(n^22^n)。 注意两点连线平行坐标轴的情况和矩形顶点必须是整数这个条件。#include...

2016-09-25 16:19:42

阅读数 204

评论数 0

hdu 1695 欧拉函数 + 容斥原理

分析:本质是求区间内与某个数互质的数的个数,如果区间比这个数小用欧拉函数。比这个数大用全集减去不互质的个数。不互质的个数的计算方法是对当前数进行因数分解,然后求能被p1∪p2∪......∪pnp_1 \cup p_2 \cup ......\cup p_n整除的数的个数,显然用容斥。#inclu...

2016-09-23 17:22:47

阅读数 213

评论数 0

hdu3929 容斥+扩展Lucas定理

分析:根据扩展lucas定理,(1+x)n(1+x)^n含有的奇数项的个数是nn的二进制表达中数字1的个数。 i & -i得到的是ii的二进制表达最右边的11的位置代表的十进制值。我们每次都减去它一个1,这样就有个函数可以算1的个数。 函数实现如下:int get1(int x) { ...

2016-09-23 00:11:45

阅读数 294

评论数 0

hdu5072 数论 + 容斥

分析:求同色三角形的个数,我们用的是逆转换成求不同色三角形的个数,对于每个顶点,只要和它相连的两个边不同色,它就一定可以组成一个不同色三角形,而且一个三角形会被两次计算。所以一个顶点对不同色三角形的贡献是:prime∗(n−1−unprime)/2prime * (n - 1 - unprime)...

2016-09-21 11:42:18

阅读数 237

评论数 0

poj 3254 状压dp

分析:对于一个序列dp的惯用套路是一个元素一个元素的添加,而对于一个二维数组是一行一行的添加,而且要用一个二进制压缩来记录当前行的各种状态。 这里dp[i][s]dp[i][s]表示前ii行,第ii行状态为ss时一共有多少种方法。ss不是任意的而是有很多生成条件,我先预处理除了所有满足不相邻的状...

2016-09-20 10:01:27

阅读数 163

评论数 0

hdu5073 贪心 + 公式拆解

分析:我来就大胆猜了一个很有道理的结论,一定是连续的n−kn - k个不变,然后扫一遍计算。很巧的一个贪心。#include <cstdio> #include <cstring> #include <iostream> #include <algorit...

2016-09-19 22:54:07

阅读数 184

评论数 0

poj 2441 状压dp

分析dp[i][s]dp[i][s]表示前ii头牛,已经选了ss状态的仓库的方案数,显然dp[i][s]dp[i][s],是由dp[i−1][s−t]dp[i - 1][s - t]转移而来,这时候可以优化成一维的。#include <cstdio> #include <cstr...

2016-09-19 14:59:57

阅读数 171

评论数 0

Codeforces Round #371 (Div. 2) E. Sonya and Problem Wihtout a Legend(技巧 + 离散化dp)

分析:首先,如果只是改变成非严格递增子序列,我们可以用离散化dp来做。 dp[i][j]dp[i][j]表示:前ii个数,第ii个数以原序列中第jj大的数结尾的最小花费。转移的时候维护一个前缀最小值,就可以实现O(1)O(1)转移,O(n2)O(n^2)状态的dp。 但是这里是严格单调递增。我...

2016-09-18 20:49:44

阅读数 327

评论数 0

hdu 5884 二分 + 前k优化

分析:大多数人都可以直接想到二分, 然后用优先队列维护每次取前kk大的合并。 但是这样复杂度多了一个lognlogn会TLE。这里想到一个很好的性质,就是合并之后的数,一定比之前合并的数大,所有就把合并之后的数加入一个队列。对原数组也排序处理,这样就得到了两个有序数组,每次在头尾取前kk大即可。...

2016-09-18 11:26:14

阅读数 267

评论数 0

Codeforces Round #371 (Div. 2) C. Sonya and Queries (01trie树)

分析:一看奇偶相互间隔,01trie树直接上,然后调试了整场…….最后Xcode单步调试才查出一个语句顺序错误,还是思维模型不真实。调试好之后只有30s提交wa5,然后发现数据是long long急忙改,还是没来得及,赛后把改了long long的交了就过了。。。 还有本场终于上紫色了JIB...

2016-09-14 12:48:25

阅读数 252

评论数 0

poj 3276 开关反转

分析:通过性质分析,把本来很复杂的问题简化了。#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #de...

2016-09-14 00:14:23

阅读数 246

评论数 0

提示
确定要删除当前文章?
取消 删除