- 博客(102)
- 收藏
- 关注
原创 【BZOJ3926】【ZJOI2015】诸神眷顾的幻想乡
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005#define MAXP 4000005#define MAXC 10struct Suffix_Automaton { int child[MAXP][MAXC]; int father...
2018-03-31 20:17:14 184
原创 【BZOJ2618】【CQOI2006】凸多边形
【题目链接】点击打开链接【思路要点】半平面交模板题。时间复杂度\(O(N*M*LogNM)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;const double eps = 1e-7;const double pi = acos(-1);template <typena...
2018-03-31 20:13:51 196
原创 【BZOJ2865】字符串识别
【题目链接】点击打开链接【双倍经验链接】【BZOJ1396】识别子串【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005struct Segment_Tree { int lc[MAXN], rc[MAXN], ans[MAXN]; int root, size, n...
2018-03-31 16:47:58 519
原创 【BZOJ1396】识别子串
【题目链接】点击打开链接【双倍经验链接】【BZOJ2865】字符串识别【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005struct Segment_Tree { int lc[MAXN], rc[MAXN], ans[MAXN]; int root, size, ...
2018-03-31 16:47:12 481
原创 【CodeForces605C】Freelancer's Dreams
【题目链接】点击打开链接【思路要点】显然有如下线性规划:$$ \left\{\begin{aligned}Minimize\quad \sum_{i=1}^{N}x_i\\Constraints\quad \sum_{i=1}^{N}a_ix_i≥p \\Constraints\quad \sum_{i=1}^{N}b_ix_i≥q\end{aligned}\right.$$其对偶问题为:$$ \...
2018-03-31 16:41:49 387
原创 【BZOJ3277】串
【题目链接】点击打开链接【双倍经验链接】【BZOJ3473】字符串【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define MAXL 100005struct Suffix_Automaton { map <char, int> child[MA...
2018-03-31 11:20:25 185
原创 【CodeForces666E】Forensic Examination
【题目链接】点击打开链接【思路要点】这个题写得我很爽啊。想法其实不难,建立多串后缀树,然后将询问离线,用线段树合并来回答询问。后缀的前缀是子串,母串的一个子串可以通过从后缀树上某个表示母串对应后缀的节点向上倍增得到。时间复杂度\(O(|S|Log|S|)\)(\(|S|\),\(Q\),\(M\),\(\sum|T|\)同阶)。【代码】#include<bits/stdc++.h>u...
2018-03-31 11:15:35 324
原创 【BZOJ3473】字符串
【题目链接】点击打开链接【双倍经验链接】【BZOJ3277】串【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define MAXL 100005struct Suffix_Automaton { map <char, int> child[MAXN...
2018-03-29 20:36:59 344
原创 【BZOJ4709】【JSOI2011】柠檬
【题目链接】点击打开链接【思路要点】分出的区间应当头、尾元素均为\(s_0\),否则可以使不是\(s_0\)的元素自成一段来使答案更优。因此,我们将每个位置按照\(s_i\)分类,分别处理。考虑\(i<j\)且\(s_i=s_j\),一旦在某个位置\(k\),决策点\(i\)优于决策点\(j\),那么决策点\(i\)就会始终优于决策点\(j\),这是由于转移方程中出现次数上具有平方,因此较靠...
2018-03-29 20:33:08 451
原创 【BZOJ1563】【NOI2009】诗人小G
【题目链接】点击打开链接【思路要点】该DP具有决策单调性,以此优化DP即可。时间复杂度\(O(NLogNLogP)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void chkmax(T &x, T y) {x = ...
2018-03-29 13:42:45 286
原创 【BZOJ2780】【SPOJ8093】Sevenk Love Oimaster
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define MAXL 360005struct Suffix_Automaton { map <char, int> child[MAXN]; int father[MAXN...
2018-03-28 14:10:21 230
原创 【BZOJ4852】【JSOI2016】炸弹攻击
【题目链接】点击打开链接【思路要点】爬山算法,随机十个起始点,然后爬山取最大值。时间复杂度\(O(Cnt*(N+M))\),其中\(Cnt\)为爬山迭代次数。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 15;const int MAXM = 1005;const double VALUE = 1...
2018-03-28 14:07:00 449
原创 【BZOJ4566】【HAOI2016】找相同字符
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 800005#define MAXC 26struct Suffix_Automaton { int child[MAXN][MAXC]; int father[MAXN], depth[MAXN];...
2018-03-27 20:50:40 226
原创 【BZOJ2178】圆的面积并
【题目链接】点击打开链接【思路要点】将X轴根据整点分成若干段,对每一段横坐标用自适应Simpson积分计算面积。时间复杂度\(O(Cnt*NLogN)\),其中\(Cnt\)为自适应Simpson积分的迭代次数。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;const int INF = ...
2018-03-27 20:46:18 1167
原创 【BZOJ3998】【TJOI2015】弦论
【题目链接】点击打开链接【思路要点】后缀自动机模板题。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define MAXC 26#define STARTC 'a'char alpha[MAXC];struct Suffix_Automaton { str...
2018-03-27 19:58:48 263
原创 【BZOJ1502】【NOI2005】月下柠檬树
【题目链接】点击打开链接【思路要点】一个平面图形在平行光下的投影为它本身。因此,问题实际上是求解若干个圆以及他们每相邻两个的外公切线组成的图形的面积并。可以用自适应Simpson积分来解决这个问题。时间复杂度\(O(Cnt*N)\),其中\(Cnt\)为自适应Simpson积分的迭代次数。【代码】#include<bits/stdc++.h>using namespace std;...
2018-03-27 19:52:34 280
原创 【BZOJ4700】适者
【题目链接】点击打开链接【思路要点】显然的一点是可以将各点的\(D_i\)替换为\(\lfloor\frac{D_i-1}{ATK}\rfloor+1\),即需要的攻击次数。首先考虑没有秒杀怎么做,我们需要确定一个攻击顺序,依次攻击并消灭敌人。如果我们已经确定了一个顺序,如果交换\(i\)和\(i+1\)能够使得方案更优,那么应当有\(A_{i+1}*D_i>D_{i+1}*A_i\),即\...
2018-03-26 16:06:32 616
原创 【BZOJ1095】【ZJOI2007】Hide 捉迷藏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005struct info {int home, value; };bool operator < (info a, info b) { return a.home < b.home ...
2018-03-25 18:11:04 205
原创 【BZOJ2253】纸箱堆叠
【题目链接】点击打开链接【思路要点】树套树,KDTree,CDQ分治都能做。CDQ分治的话需要注意这里要求“严格小于”,取中点时应当保证左右两边第一维坐标不会相等。时间复杂度\(O(NLog^2N)\)或\(O(N\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;t...
2018-03-25 18:07:12 382
原创 【BZOJ3963】【WF2011】MachineWorks
【题目链接】点击打开链接【思路要点】按照\(G_i\)对机器排序,斜率优化DP即可。时间复杂度\(O(NLog{N})\)。也可以按\(D_i\)排序,用Splay或CDQ分治支持询问。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005struct info {long long d, p, r, ...
2018-03-25 17:01:21 257
原创 【BZOJ4872】【SHOI2017】分手是祝愿
【题目链接】点击打开链接【思路要点】几点显然的性质:1、最少的操作次数为从大向小一次操作亮着的灯泡共用的次数。2、上述的操作的灯泡集合是唯一的,并且操作顺序不影响结果。3、操作集合外的灯泡后,一定要再操作一次,将其复原。由此,我们首先求出最小操作次数\(cnt\),令\(f_i\)为操作集合中有\(i\)个灯泡,期望的操作次数。则有\(\begin{equation} \left\{ ...
2018-03-24 11:50:09 579
原创 【BZOJ3110】【ZJOI2013】K大数查询
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】//树套树#include<bits/stdc++.h>using namespace std;#define MAXN 50005#define UTRAL 16000005struct Node {int lc,rc,tag;long long len,sum;};int n,m,N,size,BIT[MAX...
2018-03-23 20:50:19 159
原创 【BZOJ4873】【SHOI2017】寿司餐厅
【题目链接】点击打开链接【思路要点】挺裸的最大权闭合子图。若选取区间\([L,R](L<R)\),则必须选取区间\([L,R-1]\),\([L+1,R]\)。区间\([i,i]\)的权值应当减去\(a_i\),这里是考虑额外代价的\(cx\)部分。同时,选取任何一个或多个\(a_i=j\)的区间\([i,i]\),会额外付出\(m*j^2\)的代价,由区间\([i,i]\)向\(j\)连边...
2018-03-23 20:44:35 201
原创 【CodeForces906D】Power Tower
【题目链接】点击打开链接【思路要点】欧拉拓展定理:\(a^{\phi(n)}\equiv a^{2\phi(n)}(Mod\ n)\)。而\(\phi(\phi(n))<\frac{n}{2}\)(\(\phi(奇数)=偶数\),\(\phi(偶数)≤\frac{偶数}{2}\)),所以至多有\(O(LogP)\)个不同的模数,模数就会变成1。所以,对于每个询问,只有前\(O(LogP)\)...
2018-03-23 15:51:03 472 2
原创 【BZOJ1997】【HNOI2010】Planar
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 20005int f[MAXN], x[MAXN], y[MAXN], home[MAXN], value[MAXN];bool circle[MAXN];int F(int x) { if (f[x]...
2018-03-23 15:18:39 189
原创 【BZOJ4870】【SHOI2017】组合数问题
【题目链接】点击打开链接【思路要点】原问题可等价于在\(Nk\)个物品中选出\(pk+r(p\in Z)\)个的方案数。矩阵乘法即可,时间复杂度\(O(k^3LogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXLOG = 63;const int MAXN = 55;template <t...
2018-03-23 15:12:19 297
原创 【BZOJ2199】【Usaco2011 Jan】奶牛议会
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 3005vector <int> a[MAXN];int n, m;bool visited[MAXN];char ans[MAXN];void work(int x) { visite...
2018-03-22 20:32:33 242
原创 【BZOJ3884】上帝与集合的正确用法
【题目链接】点击打开链接【思路要点】欧拉拓展定理:\(a^{\phi(n)}\equiv a^{2\phi(n)}(Mod\ n)\)。而\(\phi(\phi(n))<\frac{n}{2}\)(\(\phi(奇数)=偶数\),\(\phi(偶数)≤\frac{偶数}{2}\)),所以至多有\(O(LogP)\)个不同的模数,模数就会变成1,然后直接用欧拉定理计算即可。时间复杂度\(O(T...
2018-03-22 20:28:53 157
原创 【BZOJ1823】【JSOI2010】满汉全席
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5000vector <int> a[MAXN];int n, m, timer, tot;int dfn[MAXN], low[MAXN], belong[MAXN];int Stack[...
2018-03-22 20:18:05 174
原创 【BZOJ4869】【SHOI2017】相逢是问候
【题目链接】点击打开链接【思路要点】欧拉拓展定理:\(a^{\phi(n)}\equiv a^{2\phi(n)}(Mod\ n)\)。而\(\phi(\phi(n))<\frac{n}{2}\)(\(\phi(奇数)=偶数\),\(\phi(偶数)≤\frac{偶数}{2}\)),所以至多有\(O(LogP)\)个不同的模数,模数就会变成1,所以经过\(O(LogP)\)次修改后,被操作数...
2018-03-22 20:14:13 450
原创 【BZOJ3709】【PA2014】Bohater
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005struct info {long long cost, value; int home; };int n, sa, sb, ans[MAXN], point;info a[MAXN], b[...
2018-03-22 13:38:34 192
原创 【BZOJ4868】【SHOI2017】期末考试
【题目链接】点击打开链接【思路要点】枚举工作结束的时间,根据A和B的大小关系计算该时间的最小代价。时间复杂度\(O(NLogN+MLogM+Ti)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void chkmax(T &a...
2018-03-22 13:35:55 279
原创 【BZOJ3566】【SHOI2014】概率充电器
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 500005#define EPS 1e-12struct edge {int dest; double p; };vector <edge> a[MAXN];unsigned father...
2018-03-21 19:35:49 197
原创 【BZOJ4538】【HNOI2016】网络
【题目链接】点击打开链接【思路要点】对树进行DFS序标号,令节点\(i\)的DFS序为\(dfn_i\),\(i\)子树内的节点DFS序范围为\([dfn_i,rit_i]\)。对于路径\((a,b)\),节点\(x\)不影响\((a,b)\)的条件是满足以下之一:1、\(dfn_{lca(a,b)}\in(dfn_x,rit_x]\)。2、\(dfn_a\notin[dfn_x,rit_x]\)...
2018-03-21 19:31:46 265
原创 【BZOJ4204】取球游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1005#define MAXLOG 32int n, m, K;double f[2][MAXN], matrix[MAXLOG][MAXN][MAXN];int main() { scanf("%...
2018-03-20 20:02:53 223
原创 【BZOJ4540】【HNOI2016】序列
【题目链接】点击打开链接【思路要点】询问一个区间内不方便用线段树维护信息,可离线,考虑莫队。这样的话,我们希望支持快速询问\(f(l,r)=\sum_{i=l}^{r}Min_{j=l}^{i}\{a_i\}\)和\(g(l,r)=\sum_{i=l}^{r}Min_{j=i}^{r}\{a_j\}\)。用单调栈处理出每个数向左/向右第一个小于它的数,并倍增。询问时在倍增数组上二分,可以得到\(O...
2018-03-20 19:57:46 225
原创 【BZOJ1419】Red is good
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005double f[2][MAXN];int n, m;int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n...
2018-03-20 15:44:51 224
原创 【BZOJ4537】【HNOI2016】最小公倍数
【题目链接】点击打开链接【思路要点】首先对所有边按照\(A\)值排序,并分块。对于每个块,我们处理\(A\)值在该块内的询问。假设我们正在处理第\(i\)块,那么我们将第1到\(i-1\)块的边取出,并按\(B\)排序,然后按\(B\)从小到大的顺序处理本块内需要处理的询问。当处理一个询问时,先加入\(B\)值比它小的边,用并查集维护联通性与联通块内\(A\)和\(B\)的最大值。然后我们可能要额...
2018-03-20 15:42:01 294
原创 【BZOJ5103】【POI2018】Ró?norodno
【题目链接】点击打开链接【思路要点】分开考虑每个颜色,每一个点对一个\(K*K\)的正方形有贡献,但同一种颜色的贡献至多为1。从上到下扫描矩阵,我们需要维护一些正方形的进入和删除。由于正方形边长固定,每次贡献实际产生变化的是一个区间。用线段树支持前驱后继的查找即可确定产生变化的区间。每处理完一行,用差分+前缀和统计本行的答案。时间复杂度\(O(N*M*LogM)\),BZOJ老年机太慢了,卡不过去...
2018-03-19 20:21:55 453
原创 【BZOJ2333】【SCOI2011】棘手的操作
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 300005#define INF 1e9struct Node { int lc, rc; int maxnum, tag;};Node a[MAXN * 2];int n, q, timer,...
2018-03-19 14:03:24 211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人