- 博客(37)
- 资源 (5)
- 收藏
- 关注
原创 BZOJ4517 排列计数 [组合数][错排]
4517: [Sdoi2016]排列计数Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1360 Solved: 841[Submit][Status][Discuss]Description求有多少种长度为 n 的序列 A,满足以下条件:1 ~ n 这 n 个数在序列中各出现了一次若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有
2017-09-22 22:15:09 343
原创 BZOJ2720 列队春游 [期望][数学]
2720: [Violet 5]列队春游Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 215 Solved: 152[Submit][Status][Discuss]DescriptionInputOutputSample InputSample Output HINTSource #include<bits/s
2017-09-22 17:40:04 801
原创 BZOJ4170 极光 [二维线段树]
4170: 极光Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 198 Solved: 100[Submit][Status][Discuss]Description"若是万一琪露诺(俗称rhl)进行攻击,什么都好,冷静地回答她的问题来吸引她。对方表现出兴趣的话,那就慢慢地反问。在她考虑答案的时候,趁机逃吧。就算是很简单的问题,她一定也答不上来。"
2017-09-22 16:49:02 506
原创 BZOJ2725 故乡的梦 [神题][Dinic][Dijsktra][BFS][Heap][Tarjan]
2725: [Violet 6]故乡的梦Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 715 Solved: 222[Submit][Status][Discuss]DescriptionInputOutputSample Input6 7 1 2 1 2 3 1 3 4 2 4 5 1 5 6 1 1 3 3 4 6
2017-09-22 12:00:38 390
原创 BZOJ2721 樱花 [线性筛]
2721: [Violet 5]樱花Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 646 Solved: 378[Submit][http://www.lydsy.com/JudgeOnline/problemstatus.php?id=2721‘>Status][http://www.lydsy.com/JudgeOnline/bbs.php?id
2017-09-22 08:54:33 435
原创 BZOJ2809 dispatching [左偏树]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站 2809:
2017-09-22 08:20:11 261
原创 BZOJ1864 三色二叉树 [树形DP]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站
2017-09-21 17:58:29 314
原创 BZOJ2160 拉拉队排练 [manacher][前缀]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站
2017-09-21 17:51:47 277
原创 BZOJ4300 绝世好题 [递推]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站
2017-09-21 17:45:07 338
原创 BZOJ2435 道路修建 [DFS][内嵌汇编]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站
2017-09-21 17:33:57 318
原创 BZOJ3922 Karin的弹幕 [线段树]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站
2017-09-21 17:28:55 334
原创 BZOJ3037 创世纪 [贪心][树形DP]
毫不容易写完了树形DP,竟然发现自己的rank那么落后,后来才得知这是一道贪心可做题。。。GG贪心做法对于每个入度为0的点能控制的点,如果它之前没有被支配,那么选它一定是最优的。为什么?… 先更新所有入度为0的点,则剩下的点一定能构成几个简单环。而对于每个有n个点的简单环,最多只能选n/2个点。计算出所有环统计答案。#include<iostream>#include<cstdio>#incl
2017-09-21 17:24:37 430
原创 BZOJ4987 Tree [树形DP]
4987: TreeTime Limit: 10 Sec Memory Limit: 256 MBSubmit: 11 Solved: 8[Submit][Status][Discuss]Description从前有棵树。找出K个点A1,A2,…,Ak。使得∑dis(AiAi+1),(1<=i<=K-1)最小。Input第一行两个正整数n,k,表示数的顶点数和需要选出的点个数。接下来n-l行每行
2017-09-20 16:37:57 799
原创 BZOJ4403 序列统计 [Lucas]
手推公式: 令M=R−L+1M=R-L+1, 则答案为: ∑Ni=1CM−1i+M−1=∑MN+M−1\sum^N_i=1 C^{M-1}_{i+M-1}=\sum ^M_{N+M}-1 模数较小,O(mod)O(mod)的预处理,预处理逆元就可以配合LucasLucas定理O(log)O(log)地计算了。#include<set>#include<cstdio>#include<cs
2017-09-20 16:14:22 254
原创 BZOJ3791 作业 [DP]
一段序列用K种不同的颜色染色最多染成2∗K−12*K-1段。。。我一开始写成2∗K2*K。。。貌似还与某人讨论过。。 dp[i][j][k]dp[i][j][k]表示染到了第i个作业,共染了j段,当前染的颜色为k(k为0/1) 如果当前颜色和上一段一样,dp[i][j][k]=max(dp[i][j][k],dp[i−1][j][k]+(a[i]==k))dp[i][j][k]=max(dp[i
2017-09-20 15:16:25 239
原创 BZOJ3143 游走 [期望][高斯消元]
本人蒟蒻,反正本只会用高斯消元做这道题,求出每个情况的系数,上期望算法乱搞就行了。 注意高斯消元的for循环,起止点很乱,最好手动推一推。#include<bits/stdc++.h>using namespace std;const int N=505,M=250500;const int eps=1e-9;int mp[N][N],d[N],a[M],b[M],m,n;double
2017-09-20 14:58:46 262
原创 BZOJ2342 双倍回文 [manacher][set]
手写字符串读优莫名RE,改成scanf就AC了,莫(m)队(d)指(z)针(z)。。。枚举x为对称轴,即枚举第一个wR的最后一位。 找规律发现len(x+1,y)∗4len(x+1,y)*4能更新答案,仅当y−p[y]<=xy-p[y]<=x且y<=x+p[x]/2y<=x+p[x]/2按照y−p[y]y-p[y]排序一下,递推x的时候将符合1式的y插入set,在set中查找x+p[x]/2x+p
2017-09-20 14:16:52 231
原创 BZOJ3236 作业 [莫队算法][树状数组]
先用莫队离线对询问排序后维护两个树状数组,记录两个询问的答案,对于第二个询问,可以再开一个数组,记录每个数出现的次数。#include<bits/stdc++.h>#define lowbit(x) (x&-x)using namespace std;const int N = 100005;int n,m,a[N],ans1[N*10],ans2[N*10],cf[N],cs[N],num
2017-09-20 12:24:37 333
原创 BZOJ4569 萌萌哒 [倍增][并查集]
没想到这两个东西还可以这么用,我们可以用f[i][j]f[i][j]表示[i,i+2j−1][i,i+2^j-1]这一段区间属于哪一个集合,没有则等于0. 那么每次合并我们可以把这个限制拆成log个区间,依次合并起来。 若f[i][j]f[i][j]和f[s][t]f[s][t]同属一个集合,那么f[i][j−1]f[i][j-1]和f[s][t−1]f[s][t-1],f[i+2j−1][j−
2017-09-20 11:43:27 320
原创 BZOJ1050 旅行comf [kruskal]
最小生成树的模板题,有点暴力。。。枚举生成树上的边,求MAX与MIN。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 100005;template<class T>inline void read(T &res){ st
2017-09-20 10:37:00 286
原创 BZOJ2140 稳定婚姻 [Tarjan]
经典题目,注意字符串长度要离散化,否则就会有O(L2)O(L^2)的复杂度加成。。。 用map就行了,然后男连女,求强连通判断就行了。 然后就是Tarjan裸题。#include<map>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int
2017-09-20 09:58:51 435
原创 BZOJ1051 受欢迎的牛 [Tarjan]
忘了是单向边,思考自己怎么会错了10分钟。。。 本题就是tarjan完了后记录每个scc的到达次数,若为scc-1则满足条件。 所以说根本就不需要缩点怎么麻烦的操作,许多Tarjan缩点的题都是这样,不需要真正的缩点。 记住了。。。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using na
2017-09-20 09:15:31 329
原创 BZOJ1119 SLO [置换]
其实这道题是置换群的入门题,看起来就是一个裸的DFS+统计,处理数组C[i]的时候类似时间戳的正反的处理方式。总之就是比较玄学吧。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 1000005;long long vis[N],a
2017-09-20 08:39:43 286
原创 BZOJ1123 BLO [Tarjan][点双连通分量]
就是点双连通分量的裸题,我们记录一个siz,如果某个点可以搜到low比它的deep值大的点的话,显然是产生了一个分割后的连通块。#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>#include<map>#include<set>#
2017-09-20 08:14:56 454
原创 UOJ NOIP2015 斗地主 [搜索]
爆搜+平时打斗地主的技巧就行了,该出什么就出什么。。。。。还是回去打斗地主吧。#include<cstdio>#include<cstring>int cnt1[100],cnt2[100],t,n,ans;const int len[]={0,5,3,2};int solve(int x=0){ for(int i=0;i<=4;++i)cnt1[i]=0; cnt1[5]
2017-09-19 17:45:48 375
原创 UOJ35 后缀排序[后缀平衡树]
这是blog主sb时,打上的后缀平衡树版本的code#include<cstdio>#include<cstring>#define N 200010#define LL long longint n,m,len,x,y,t,k;int ch[N][2],rd[N],cl[N],cnt,root,rank[N],sa[N],height[N];LL rk[N];int s[N];in
2017-09-19 17:40:53 610
原创 BZOJ3101 N皇后 [模拟]
N皇后方案输出。 找规律模拟即可。#include<bits/stdc++.h>using namespace std;int main(){ register int n, i; while(scanf("%d", &n)!=EOF){ if(n%6!=2&&n%6!=3){ for(i=2;i<=n;i+=2)printf("%d\n
2017-09-19 17:36:49 342
原创 NOIP2016 愤怒的小鸟 [状压DP]
预处理每两个鸟的斜率,然后枚举每个鸟的状态,复杂的n∗2nn*2^n。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const double eps=1e-10;int n,m,t,g;int f[20][20],dp[3
2017-09-19 17:34:37 634
原创 BZOJ1116 CLO [并查集]
判断一个联通图合法的依据就是枚举到x,y时有find(x)==find(y),那么就打标记就行了。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;template<class T>inline void read(T &res)
2017-09-19 17:05:09 360
原创 BZOJ1237 配对 [DP]
找一找规律就可以发现,只会存在2个交叉或者3个交叉的情况,更多的交叉情况会在之前就被处理掉。 DP一下就行了。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;template<class T>inline void read(
2017-09-19 17:01:59 365
原创 BZOJ1088 扫雷Mine [递推]
#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;template<class T>inline void read(T &res){ static char ch;T flag=1; while((ch=getc
2017-09-19 16:58:39 364
原创 NOIP模拟 NYG的背包 [高山算法]
终于我的贪心过了,方法与题解不同,我每次记录历史最高值h,若当前x<=h则可以,然后判定几个特殊条件,AC了。高山算法是什么?自行百度,本人无厘头命名,貌似是时间空间最优的方法。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 100
2017-09-19 16:48:29 533
原创 BZOJ4518 征途 [nlogn做法][斜率优化]
我们设x>y,且j由x转移比y转移更优,则 f[i−1][x]+(sum[j]−sum[x])2<f[i−1][y]+(sum[j]−sum[y])2f[i−1][x]+(sum[j]−sum[x])^2<f[i−1][y]+(sum[j]−sum[y])^2 化简得 f[i−1][x]+sum[x]2−(f[i−1][y]+sum[y]2)sum[x]−sum[y]<2∗sum[j]\fra
2017-09-18 10:15:14 489
原创 BZOJ3252 攻略 [树链剖分][不用线段树]
真心不知道这道题写线段树的人怎么想的,网上居然没有长链剖分的题解,哎,这道题就是一道标准的长链剖分,不带合并,deep存边权,sort取前k大就行了,SCOI2016 day1 t1的原版,我无力吐槽。 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;temp
2017-09-18 09:42:14 567
原创 BZOJ4538 网络 [树链剖分]
那么对于每个询问我们只要判断权值大于K的路径的交是否都过x即可。路径的交还是路径,路径交满足结合律。可以离线拿个线段树维护一下即可,以权值为关键字,每个点记录该段区间的路径交 一道很标准的链交题,树链剖分+数据结构动态维护链上信息。转化信息时通过链交即可传递。 总之树链剖分练手。#include<bits/stdc++.h>const int N = 101005;using namespa
2017-09-18 09:25:37 502
原创 BZOJ2006 超级钢琴 [贪心][RMQ][堆]
当我们已经确定了所选区间的右端点,我们可以将区间和转变为前缀相减的形式,然后求[l,r]的最大值也就是求s[r]-s[l-1]的最大值,因为r确定,而l只能在一段固定的区间,我们就RMQ了。然后我们对于每个可行的右端点都找出最优的左端点,把它们扔到优先队列里一个一个取出来就行了,很容易避免删除操作,因为加入原来x的左端点可以在[a,b]中选择,我们与其从[a,b]中去掉y,不如将[a,b]分裂成[a
2017-09-18 09:17:29 575
原创 BZOJ3730 震波 [点分治][点分序]
重来都不知道有个东西叫做点分序。。。考试多半GG,还以为可以用启发式合并平衡树乱搞,哎我还是太naive了,这道题就是依据点分治的顺序来进行操作,一道经典题。#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>#define N 200010#define M 2000
2017-09-18 09:11:25 692
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人