自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不来也不去的一只失忆蝴蝶

曾迷途才怕追不上满街赶路人

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

原创 NOI2017银色记

NOI前模拟赛总体做的还好吧。。状态还行。学军中学集训不得不说这里的训练和我们很不一样,而且机房安排和训练安排都有毒,每天过着不知所措的生活。 模拟赛都不错(有时会翻车) NOI前两天基本都在放松了,没咋做题。DAY 0晚上也不知道干啥就去找sqc颓东方。 然后回来被鄙视。 就睡觉了。DAY 1上午开幕式,校长讲话居然最有趣。 dzd一个D一个D挣亿。 下午鄙视,一样5min做完,和去年

2017-07-24 22:33:49 4103 10

原创 NOI2016铜色记

前言没错这确实是2017年7月写的……NOI前每场模拟赛基本都被学长们虐的死去活来,每场只改一题。 反正才初三随便浪。南山中学集训这里的题都好简单。 第一天全校写动态点分挂。 第二天我提前离场扬言AK最后FST。 信心赛! 期间有翻车,就是我买了省内流量下载this is war of mine然后扣了200元话费。。 轻松的颓废,死了两把twom,too difficult(一局我能玩

2017-07-24 21:45:19 1567 2

原创 排序列表

题目大意有若干个区间,C(m)表示所有包含m这个点的区间编号排序后的序列。 求本质不同的非空字典序第k小的序列。做法先离散化,因为本质不同不会超过2n个序列。 接下来顺序扫,并维护每个位置的hash值。 遇到之前出现过的hash值就叉掉。 然后接下来枚举按字典序枚举,每次看看往字典序末尾加入i会有多少种可能。 对于k,如果它不在答案序列中,不能选择它区间所包含的m。 对于k,如果它在答案

2017-07-11 14:23:06 422

原创 装箱

题目大意n个箱子,每个都有三个属性(a,b,c),可以任意调换属性顺序。 一段区间的价值定义为任意调换后max(a)*max(b)*max(c)的最小值。 求所有区间价值和。结论把所有箱子的三个属性按降序排列,一定最优。 考虑找到了全局最大值mx,把mx调到第一维,接下来第一维答案一定是mx,而其他箱子也一定会将自己的最大值调到第一维,第二维也同理。瞎做对三维维护单调栈。 维护线段树,位置l

2017-07-11 14:16:34 378

原创 [美团 CodeM 复赛]神秘代号

题目大意n个点n条边的联通无向图,每个点i有一个[0,p)的数xi,p是个质数。 每条边(u,v)都有一条方程形如a∗xu+b∗xv≡c(mod p)a*xu+b*xv\equiv c(mod\ p) 保证x有解且有唯一解,求出x。解方程假定一个位置的值是x,然后从这个位置bfs通过边上的方程用x表示出其余每个点的值。 因为一定有环所以可以在某条边上解方程得到x。#include<cstdio

2017-07-11 13:58:40 927

原创 [美团 CodeM 复赛]城市网络

题目描述有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接的连通图),首都为 111 号城市,每个城市售卖价值为 aia_ia​i​​ 的珠宝。你是一个珠宝商,现在安排有 qqq 次行程,每次行程为从 uuu 号城市前往 vvv 号城市(走最短路径),保证 vvv 在 uuu 前往首都的最短路径上。在每次行程开始时,你手上有价值为 ccc 的珠宝(每次行程可能不同),并且每经

2017-07-10 11:02:07 802

原创 [美团 CodeM 复赛]配对游戏

题目描述有 nnn 个人排成一排,一开始全部面向前方,然后随机朝左或是朝右转。然后我们不断审查这个队列,每次选择两个面对面的相邻的人,将他们从队列中取出。例如(> 表示向右,< 表示向左):队列 >>><<< 的消除过程为,>>><<< 到 >><< 到 >< 到空队列(每次去除一对)。队列 >><><<<> 的消除过程为,>><><<<> 到 >><<<> 到 ><<> 到 <>(每次去除一对)

2017-07-10 10:58:36 710

原创 小R打怪兽

题目描述推式子首先我们设Bi=max(A−Di,1)B_i=max(A-D_i,1) ∑mi=1∑Xj≤Hj≤Yj[∑nj=1[⌈HjBj⌉≤i]≥k]\sum_{i=1}^m\sum_{X_j\leq H_j \leq Y_j}[\sum_{j=1}^n[\lceil\frac{H_j}{B_j}\rceil\leq i]\geq k] 这让我们很不好搞,但是我们可以容斥,枚举若干个,然后要求

2017-07-10 10:32:17 390

原创 动物园

题目大意两个字符串a和b,从a中选取一个非空子串,从b中选取一个非空子串,然后拼起来变成回文串,求这个回文串最大长度。SAM先做一遍manacher处理出从某个串某个位置出发最长回文串。 先把b反过来。 然后你注意到这个回文串一定可以表示成c+S+c,其中S是一个回文串,然后c是a或b中选出的子串。 我的做法是把a和b一起丢去做广义SAM,然后计算每个节点是否同时出现在两个串中,并维护righ

2017-07-10 10:03:00 651

原创 [bzoj4173]数学

题目大意懒得写推导[n mod k+m mod k≥k]=[n−⌊nk⌋k+m−⌊mk⌋k>=k][n\ mod\ k+m\ mod\ k\geq k]=[n-\lfloor\frac{n}{k}\rfloor k+m-\lfloor\frac{m}{k}\rfloor k>=k] 于是等价于 [⌊n+mk⌋−⌊nk⌋−⌊mk⌋>=1][\lfloor\frac{n+m}{k}\rfloor-\

2017-07-10 09:52:47 416

原创 [bzoj4919]大根堆

题目描述给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。 你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖先,那么v_i&gt;v_j。 请计算可选的最多的点数,注意这些点不必形成这棵树的一个连通子树。解法(不)容易看出这是一个变种LIS。 如果只有一条链就...

2017-07-09 21:13:17 1587 2

原创 [bzoj3060]Tour de Byteotia

题目大意给定一个n个点m条边的无向图,问最少删掉多少条边能使得编号小于等于k的点都不在环上。贪心把两边编号都>k的边先加入。 再把剩余的边加入,若形成环就删去新加边。 闭上眼睛感受当然最优。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int

2017-07-07 16:58:43 547

原创 流浪

题目描述DP考虑每个位置的贡献。 枚举一个位置,然后做dp,我们需要处理从(0,0)走k步到这个位置的方案数(中途不到达这个位置),以及从这个位置开始走k步到某个位置的方案数(中途不到达这个位置),以及从这个位置开始走k步中途不到达自己的方案数。 然后再做dp,从(0,0)走j步到达这个位置且中间恰好经过它k次的方案数。#pragma GCC optimize (2)#include<cstd

2017-07-07 16:56:11 361

原创 果树

题目大意问一棵树上有多少条路径不包含同色点。 一种颜色最多20个点。瞎做对于同色点提取出来两两形成一个约束。 这样约束只有n*20个。 因为最坏情况是每种颜色都出现20次。 那么n/20*20^2=n*20。 接下来变成了owaski的那道A,可以在本博客内搜索。#include<cstdio>#include<algorithm>#include<cmath>#define fo(

2017-07-07 16:52:36 375

原创 容器

题目描述DP用括号表示一段区间。 设f[i,j,k]表示做到第i个位置,目前未被匹配的左括号有j个,还有k只跳蚤没有左括号。 转移可以直接枚举这个位置放多少右括号以及下一个位置放多少左括号,乘上对应组合数。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i

2017-07-07 16:49:15 377

原创 Fiend

题目大意满足li<=pi<=ri的排列p,问逆序对是奇数的多还是逆序对是偶数的多或者是否一样多?解法可以构造一个矩阵,ai,li~ri是1,然后就是问它行列式的符号或判断行列式是否为0。 模拟高斯消元,每次消到第i行时,让第i行变成第i列上有1且r最小的,这样可以保证任意时刻1都是一段区间。 可以用可并堆、平衡树或线段树来快速支持合并。#include<cstdio>#include<algo

2017-07-07 16:43:43 562

原创 Fable

题目大意对一个序列做k轮冒泡排序,输出最终序列。做法尝试计算每一个数的位移。 计算一个数前进的位数t等于在它前面比它大的数个数与k取min。 同样前面最大的t个数都会后退一格。 于是splay模拟这个过程统计每个位置的位移即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(

2017-07-07 16:36:15 701

原创 容斥的原理及广义应用

容斥原理想起容斥原理,大家都不陌生。 相信很多地方都会举这样类似一个最简单的例子让大家理解容斥: 现在赛场上有n个人,都参加过WC、CTSC和APIO。 拿过至少一个比赛的金牌的有多少人? 我们可以简单计算拿过WC金牌的人数+拿过CTSC的金牌的人数+拿过APIO的金牌的人数。 但是这样会记重,比如jasonvictoryan,他既拿过WC的金牌又拿过APIO的金牌,又比如czllgzmz

2017-07-07 16:30:35 8339 3

原创 景中人

题目大意n个二维点。 用下边界贴着y=0的面积不超过S的矩阵,最少用多少个覆盖所有点?DP同样的x坐标只保留y最大的,然后对y离散化。 容易发现矩形之间只会有相含关系或相离关系,相交是没有意义的。 然后大力区间dp,f[i,j,k]表示[i,j]区间覆盖所有y坐标>k的最小矩形数。 随便转移。n^4。#include<cstdio>#include<algorithm>#define f

2017-07-01 17:26:50 576

原创 杨柳

题目描述费用流容易发现不能移到另一个棋子上这个限制无用。 然后随便费用流。#include<cstdio>#include<algorithm>#include<iostream>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=500+10,maxm=1000000+10,inf=10000000

2017-07-01 17:23:23 516

原创 呵呵

题目大意n个点,i和j之间有wi*wj条边。 图中任一生成树的贡献记为每个点的度数积。 求所有生成树贡献和。prufer序富榄题解#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;type

2017-07-01 17:20:50 307

原创 哈哈

题目大意DP容易发现满足那两个条件就是说不存在低谷。 设g[i,j,0/1]表示[i,j]是最后一次操作的,其中是递增还是递减的最大得分,由于相邻两项差1可以直接得到长度。 设f[i,j]表示操作掉[i,j]的最大得分,有两种转移。 f[i,j]=f[i,k]+f[k+1,j]f[i,j]=f[i,k]+f[k+1,j] f[i,j]=g[i,k,0]+g[k+1,j,1]+v[2∗w[k]

2017-07-01 17:07:32 348 1

空空如也

空空如也

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

TA关注的人

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