- 博客(7)
- 收藏
- 关注
原创 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三种情况,第二种是可以鉴别的。 利用这个关系可以枚举其中任意一个是0或者1,找其它n -1个位和它的二元组的情况来求得关系即可
2016-10-24 09:53:52 576
原创 hihocoder 第120周 后缀数组 + 单调队列
分析:求出高度数组,用单调队列维护区间最小值。高度数组的区间最小值的意义就是这些排名相邻的后缀的最长公共前缀。实际上是把所有字符串划分为后缀。这里的是可重叠子串。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define pr(x) cout <<
2016-10-19 11:04:38 475
原创 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence 贪心 + RMQ
分析:固定长度为mm的区间不断右移动,只要这个区间内没有一个被选的元素就选择其中一个最小的,利用ST表的RMQ来做到。 这样求出必须要选择的最大的字母的次数,然后比它小的都要选。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue
2016-10-09 17:50:37 445
原创 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))的复杂度。 比赛的时候快速想出了整个思路,并且紫色渡劫成功。欢迎读者关注Codeforces id:JIBANCANYANG。#include <cstdio>#include <cstri
2016-10-09 13:30:43 517
原创 hdu 4135 容斥
分析:互质的经典容斥,没啥可说的。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define pr(x) cout << #x << ": " << x << " " #define pl(x) cout << #x << ": " << x
2016-10-04 15:29:40 534
原创 hdu 2204 容斥原理
分析:根据指数乘法原理:xab=xabx^{ab}={x^a}^b 所以指数必须是质数,切质数显然应该小于等于2632^{63}。 但是这些质数并不是完全互质的,所以要用容斥原理来做。 这里计算一个指数有多少个可行的数使用的开根号运算符pow(n,1.0/x)+1e−8pow(n, 1.0 / x) + 1e-8加上浮点误差避免。#include <cstdio>#include <cstr
2016-10-04 14:59:07 423
原创 Codeforces Round #374 (Div. 2) C. Journey dp
分析:dp[i][j]表示在i点已经经过j个点最小花费时间是多少。 这里wa了整场,因为j应该是外层循环而不是i#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <queue>#include <string>#include <cmath>#include <vect
2016-10-03 09:19:35 319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人