关闭
当前搜索:

[arc068f]Solitaire

题目大意将1-n顺序加入双端队列(每次可加头可加尾),再删除(每次可删头可删尾),求有多少种删除序列,使得1是第k个被删的。做法考虑什么样的删除序列存在对应的加入序列且合法。 1、第k个是1。 2、前k个元素能拆分成两个单调下降序列。 3、第k个后的元素每个位置都大于等于后缀最大值或小于等于后缀最小值。 4、前k个元素拆分出的单调下降序列其中一个的最小值大于等于第k个后的元素的最大值。 这...
阅读(152) 评论(0)

[arc068e]Snuke Line

题目大意有n个区间,现在询问你对于1<=i<=m的每个i,有多少个区间至少包含一个i的倍数?做法正难则反,如果一个区间不包含i的倍数,一定是被相邻两个i的倍数夹着或者在最大的i的倍数的右边。 调和级数的时间把点对弄出来,然后不难想到离线+树状数组。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) usi...
阅读(71) 评论(0)

[2017集训队作业自选题#117]Monkey and Tree

题目大意一颗边权树,给你若干点对(ai,bi)。 找到两对点对i和j,使得dis(ai,aj)+dis(bi,bj)最大。做法先建立点分树。 然后进行点分,对于当前分治中心x,讨论最终点对中两个a路径是否过x。 不过x,递归处理。 过x,求出当前分治联通块每个点到x的距离,然后接下来按一个一个子树处理(一起询问,再一起插入,来保证不在同一个子树),我们把b插入到点分树中,对于点分树一个分治中...
阅读(146) 评论(0)

[2017集训队作业自选题#153]Comb Avoiding Trees

题目大意不想说。DP容易发现如果一颗树左偏次数达不到k-1,就合法。 不妨考虑按dfs序dp: 设f[i,j]表示当前是第i个叶子,从该点往上到根有j-1条左向边。 转移很容易。 良心自选题!#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typedef...
阅读(145) 评论(0)

[2017集训队作业自选题#154]简单数据结构题

题目大意一颗点权树,初始点权均为0。 每次操作将所有距离x为1的点点权+1,然后希望你求出距离x为1的点点权异或和。一个转化把修改分成儿子修改和单点修改,把询问分成儿子询问和单点询问。 每次相当于x的儿子修改+x的父亲单点修改,询问类似。根号算法发现一个点儿子的点权种类数最多根号种。 不妨用链表(动态桶)维护每种点权出现次数。正解注意到x^(x+1)=2*lowbit(~x)-1。 我们不妨...
阅读(223) 评论(0)

[arc069f]Flags

题目大意n个变量xix_i,每个变量等于aia_i或bib_i。 选择一种赋值方案,使得min(|xi−xj|)min(|x_i-x_j|)最大。二分答案二分答案后转化为2-sat问题,线段树优化连边即可。 (注意不能够自己连自己的另一半)#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using...
阅读(113) 评论(0)

[arc073f]Many Move

题目大意你有两个整数a和b。 现在n个操作,依次执行,每次给你xi,你选择一个整数y变成xi,代价为|xi-y|。 求做完所有操作的最小代价。做法设f[i]表示做完前i个操作,其中一个整数变成xix_i,另一个变成xi−1x_{i-1}的最小代价。 第一次操作枚举是哪个变成x[1]做两次dp,以a为例,那么f[1]=|a-x[1]|,然后x[0]=b,即为初值。 转移是f[i]=min(f[...
阅读(98) 评论(0)

NOIP2017差评记

DAY 0车上不断被要耳机,我说要看番没给,结果我车上全程没用耳机。DAY 1我以为密码是不膜王楚星。 原来是不忘初心。 t1一股巨难的感觉(怎么10min我都不会做) t2是个傻逼模拟吧 t3待会再想 又推了10min才做出t1。 这时我注意到%lld本机会炸,想到了还有输出类型这种玩意,于是举手提问,得到了不解答的回答。 于是气愤的改了个高精度(当时已经气傻了大概) t2好写啊。...
阅读(745) 评论(3)

[arc074f]Lotus Leaves

题目大意一个池塘,有起点叶子、终点叶子和叶子。 同行同列的叶子联通,问最少删去多少叶子(除起点终点)能使得起点和终点不连通。最小割显然#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=100+10,maxm=1000000+10,i...
阅读(101) 评论(0)

[arc074e]RGB Sequence

题目大意有多少三色序列,满足m个条件,每个条件形如区间颜色种类数为多少。做法设dp,f[i,j,k]表示1~i填完了,除了第i个位置填的颜色,其余两种颜色最后一次填在j和k,然后每次处理右端点挂在i的条件,把不符合条件的状态赋值为0。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using names...
阅读(110) 评论(0)

[arc071f]Infinite Sequence

前言怎么这题1000分啊。题目大意一个无穷序列,要求所有大于n的项都和第n项相同。 如果一个位置值为k,接下来k个位置必须相同。 每个位置填1~n的数,求方案数。做法显然相邻两个位置>1后面就全tm一样了。 然后就很tm好做。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namesp...
阅读(104) 评论(0)

[arc077f]SS

前言有趣的字符串题。 我是不是推出了什么和大家看起来不一样实质上一样的东西。题目大意定义AA表示两个一样的字符串A接在一起。 定义F(SS)=TT,TT是长度最小的满足条件的字符串且SS是TT的前缀。 给你小写字母串SS,求F10100(SS)F^{10^{100}}(SS)的区间[l,r]每个字母出现次数。有趣这显然是一道和border相关的题。 然后可以发现只考虑S的变化就行,不需要考虑...
阅读(166) 评论(0)

[arc077e]guruguru

题目大意有一个台灯,等级为1~m的一个整数。 有一个喜爱等级x,你每次操作可以让台灯等级+1(m+1会变成1)或变成x。 现在你要完成台灯等级从ai变成ai+1这n-1个操作。 如何选择x能使操作次数最小。做法每次可以讨论出某些区间需要变成x然后到达ai+1比较优还是直接加到ai+1比较优。 然后打上对应前缀tag,最后顺序扫一遍找一个最小的。#include #includ...
阅读(101) 评论(0)

[arc075f]Mirrored

题目大意rev(n)为n翻转后的十进制数(从第一个非0位往后翻转)。 有多少n满足rev(n)=n+d。做法如果d末尾有0,显然那几位可以任意填(只要不造成前导0),先剔除掉。 然后就可以暴力枚举一半的数字并判断。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std...
阅读(107) 评论(0)

[arc078f]Mole and Abandoned Mine

题目大意一张无向带权连通图,删去边权和尽量小的边使得1->n路径唯一。DP设f[s,i]表示1->i,目前和1联通的集合是s,1->i不存在两条路,能保留的最大边权和。 转移分两种,一种是加一条桥,一种是给i挂一个集合。 即f[s,i]+dis[i,j]−>f[s,j]f[s,i]+dis[i,j]->f[s,j] 还有f[s,i]+p[y]−>f[s|y,i]f[s,i]+p[y]->f[s...
阅读(144) 评论(0)
818条 共55页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:324657次
    • 积分:11599
    • 等级:
    • 排名:第1515名
    • 原创:814篇
    • 转载:4篇
    • 译文:0篇
    • 评论:201条
    最新评论
    文章分类