自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ws_yzy的博客

一路艰辛,一路风景。

  • 博客(20)
  • 收藏
  • 关注

原创 2670: Almost|分块|三分

先处理出前缀和sumisum_i 区间[l..r][l..r]的几乎平均数为sumr−suml−1r−l\frac{sum_r-sum_{l-1}}{r-l} 也就是求一个斜率的最大值,假如左端点确定,找一个右端点使得几乎平均数最大的话,可以求出凸包,然后再凸包上3分找到最大值 然后就可以分块设立TT个关键点求出每个点到关键点这个区间的最大的几乎平均数 询问的时候可以先拽出跨过关键点的答案,

2016-04-26 16:17:39 1098

原创 4521: [Cqoi2016]手机号码|数位DP

数据范围这么小..感觉暴力可过啊.. DP也是随便设计状态 F[i][j][k][s][l]F[i][j][k][s][l] 表示前ii位,最后一位是jj 最后一位连续出现kk次(如果k已经等于3那么就一直不变)ss表示4,84,8的出现状态 ll表示前缀是否和原数的前缀相同 转移就是枚举下一位转移,也很简单..#include<algorithm>#include<iostream>#i

2016-04-24 16:36:32 3608

原创 4537: [Hnoi2016]最小公倍数|分块

暴力的做法就是直接找到所有a,ba,b都小于等于某个询问的边然后并查集合并,维护每个集合的a,ba,b得最大值看是否等于询问的a,ba,b 然后就可以考虑分块,把边按照aa排序,每隔n−√\sqrt{n}分为一块 块前的按照bb值排序按顺序插入,块内的暴力判断,并查集合并,每次都把块内合并的记录下来,处理完某个询问时就撤回并查集的操作 块的大小为n−√\sqrt n可能会TT 改成n∗log

2016-04-24 14:36:54 1430

原创 4542: [Hnoi2016]大数|莫队

HN一天考两个莫队是什么鬼..或者说莫队不是正确的姿势..? 考虑已经知道了l..rl..r的答案新添入r+1r+1如何更新当前答案 需要先预处理出后缀modpmod p的值bib_i,假设子序列l..rl..r模pp的值为xx 那么x∗10r−l+b[r]=b[l]x*10^{r-l}+b[r]=b[l] 然后就可以直接莫队统计了 模数为2或5的时候要特判一下#include<algori

2016-04-23 19:16:03 3208 3

原创 4540: [Hnoi2016]序列|莫队+ST表

考虑现在已经知道了[l,r][l,r]的答案新添入一个r+1r+1如何更新答案 也就是右端点在r+1r+1处左端点在l..r+1l..r+1之间的所有的子序列的答案 可以找出l..rl..r中最小的数的位置pp,然后pp以及pp左侧作为左端点的答案就可以直接计算了 考虑左端点在p+1....r+1p+1....r+1时对答案的贡献,可以与处理一个前缀和SiS_i表示以ii为右端点的所有子序列的

2016-04-23 09:06:57 2677 1

原创 2959: 长跑|LCT+并查集

慎入…此人代码自带5倍常数。。 静态的话就是随便搞出一棵生成树来,然后把环缩起来,询问的答案就是路径上的权值和 动态的就需要LCT来维护生成树,每遇到连起边来就形成环的情况时,就把这个环缩成一个点 动态的查询一条链上的权值和。 为什么我的代码的常数这么大…….后几个点在本地跑5s#include<algorithm>#include<iostream>#include<cstdlib>

2016-04-21 10:00:49 958

原创 3073: [Pa2011]Journeys|线段树|BFS

一种比较暴力的方法就是直接线段树优化建图,跑dijkstradijkstra 但是这题的边权都是11可以考虑BFS的方法 首先按照yy将所有的边排序,然后按照xx的大小插入到线段树中 这样每次询问一个点pp下一步能走到哪些点可以直接在线段树中找到x<=px<=p并且y>=py>=p的点 因为已经按照yy排序,所以最终线段树中的连边的yy是递减的,这样就可以做到线性的BFSBFS#includ

2016-04-18 15:30:41 1007

原创 3589: 动态树|树链剖分|线段树

直接树链剖分,然后查询一段路径的时候顺便在线段树中打上标记,如果再查到这个地方的时候就直接忽略掉这部分对答案的贡献#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#in

2016-04-18 15:16:48 849

原创 4456: [Zjoi2016]旅行者|分治+最短路

每次将矩形划分成两个部分,枚举中间点跑最短路更新答案,不断递归分治#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#include<ctime>#include<se

2016-04-18 15:13:50 1340 2

原创 4455: [Zjoi2016]小星星|状压DP|容斥原理

OrzSDOIR1ak的晨神 可以考虑状压DP枚举子集,求出只保证连通性不保证一一对应的状态下的方案数,然后容斥一下就是最终的答案#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<q

2016-04-18 15:08:49 1520 1

原创 1808: [Ioi2007]training 训练路径|树形DP

http://adn.botao.hu/?p=80胡波涛的题解说的很详细,这里就不赘述了#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#include<ctime>

2016-04-18 15:04:40 1116 2

原创 2164: 采矿|树链剖分|DP

DP比较显然,但是直接DP会Tle,这时需要树链剖分用线段树维护dp值同时维护链上的和子树的dp值#include<algorithm>#include<iostream>#include<complex>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<

2016-04-18 14:58:55 790 1

原创 4518: [Sdoi2016]征途|斜率优化

裸的斜率优化。。我考场上SB#include<algorithm>#include<iostream>#include<complex>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#include<ctime>#include<set

2016-04-15 08:33:59 1657

原创 4514: [Sdoi2016]数字配对|费用流

这道题只要看出是个二分图就可以直接费用流搞一搞了#include<algorithm>#include<iostream>#include<complex>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#include<ctime>#i

2016-04-15 08:27:39 1316

原创 4516: [Sdoi2016]生成魔咒|后缀数组|线段树|ST表

将原串倒过来,每次添加一个字符相当于增加一个后缀。 问题转化为向集合中动态添加后缀求本质不同的字串的个数,离线求出SASA 找出当前添加的串与集合中的串的最大的LCPLCP,就是重复出现的子串的个数,线段树维护集合中rank的前驱和后继, 考场上的原代码(SDOI唯一A掉的一道题QAQ)#include<algorithm>#include<iostream>#include<cstdli

2016-04-15 08:22:43 1429 1

原创 3160: 万径人踪灭|FFT|manacher

答案可以转化为所有的回文子序列减去回文子串 回文子串的个数可以用manachermanacher来求出 回文子序列的个数可以这样求: 先求出以每个点为中心左右对称的点的个数xx,那么以这个点为中心的回文子序列的个数就是2x−12^x-1,然后现在只需要求出以每个点为中心左右对称的点的个数,就是a[i+p]==a[i−p]a[i+p]==a[i-p]这种情况的个数,发现和卷积非常类似。。。然后还

2016-04-07 17:19:48 2970 1

原创 2194: 快速傅立叶之二|快速傅里叶变换

很容易发现就是把bb序列反过来直接FFT搞一下#include<algorithm>#include<iostream>#include<complex>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<queue>#include<ctime>#include<cmath>#in

2016-04-07 14:14:29 2634

原创 2179: FFT快速傅立叶|快速傅里叶变换

背板子大法吼#include<algorithm>#include<iostream>#include<complex>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<queue>#include<ctime>#include<cmath>#include<map>#inclu

2016-04-07 07:37:17 1434 2

原创 2124: 等差子序列|线段树维护哈希值

集训队的题是厉害啊 从左到右枚举每一个数作为等差序列的中间项,判断是否存在等差子序列 考虑枚举到一个位置ii,假设a[i]−xa[i]-x在前面出现过,那么如果不存在等差子序列,a[i]+xa[i]+x肯定也在前面出现,同理a[i]−xa[i]-x若在前面没出现过,那么a[i]+xa[i]+x也不能在前面出现,否则就存在了等差子序列。 从前向后枚举,如果出现了某个数,就为11否则就为00,这样

2016-04-06 11:34:55 2078 1

原创 2006: [NOI2010]超级钢琴|ST表|堆

由于K很小,所以就直接取出最大的K个值加起来即可 考虑一个(i,l,r)(i,l,r)表示以i开始以[l,r][l,r]中的某个位置结束的区间和的最大值,假设这个位置为pp,然后把这些东西都存起来一起扔到堆中,每次取出区间和最大的一个元素,然后继续向堆中添加新的元素,直接对(i,l,p−1)(i,l,p-1),(i,p+1,r)(i,p+1,r)这两个组合再分别找出最大的区间和再扔到堆中,然后重复

2016-04-06 10:08:40 1593

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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