关闭
当前搜索:

备用钥匙

题目描述你知道Just Odd Inventions社吗?这个公司的业务是“只不过是奇妙的发明(Just Odd Inventions)”。这里简称为JOI社。 JOI社有N名员工,编号从1到N。所有员工的工作时间从时刻0持续到时刻M,时刻0和时刻M的时候,所有员工都必须在公司内。 某天,出于巧合,JOI社的每个员工都要出行恰好一次。员工i(1<=i<=N)在时刻Si离开公司,时刻Ti回到公司。...
阅读(290) 评论(0)

装饰大楼

题目大意现在有一个n的排列。 设f[i]表示以i为结尾的最长上升子序列。 给定你f数组的其中n-1项(你不知道缺的是第几项),求原本的f数组有多少种可能性。仔细想想首先,我们要清楚什么样的f数组能够对应出一个n的排列。 根据DP,很容易知道对于任意的j线性算法首先判无解, 如果出现两处差1那么无解比如: 1 3 5 如果出现一处差2及以上那么无解比如: 1 4 那么有解的情况就是:...
阅读(655) 评论(0)

JZOJ4446

题目大意有n个数,你可以进行任意次操作,每次操作如下: 将a与b两个数变为a and b与a or b两个数。贪心我们枚举四种不同情况,然后发现,一次操作的本质是把二进制上的1移走。 于是我们得到一个贪心算法:把1尽量往前挤。 具体看标程!#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using...
阅读(338) 评论(0)

JZOJ4444

题目大意询问树上两点的路径上小于/等于/大于所给定值k得点的数量(每次询问k不一定相同) 强制在线主席树以计算小于k为例: u到v的路径上小于k的点的数量=>u到根节点小于k的点的数量+v到根节点小于k的点的数量-2*lca(u,v)到根节点小于k的点的数量+lca(u,v)的权值是否小于k 然后裸的主席树#include #include #includ...
阅读(506) 评论(0)

基因合成

题目描述回文自动机首先,我们可以认为,每个最终串都是进行若干操作后进行了一次第二个操作后,再在两端插入而得到的。 先对最终串插入回文自动机上,然后做动态规划。 我们设f[i]表示i这个结点所代表的回文串最后一次操作是第二个操作需要多少个操作得到。 注意偶数树的根节点f值为1。 fa[i]表示其在回文树上的父亲,pre[i]表示其最长长度不超过其的长度的一半的回文后缀。pre怎么求呢?显然沿着...
阅读(211) 评论(0)

用SAM建广义后缀树

原文写的还比较详细,所以本蒟蒻就不再自己写一个了…… 用SAM建广义后缀树例题TJOI的单词#include #include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; const...
阅读(799) 评论(0)

染色

题目大意给定一颗树,每个点默认白色,有两种操作。 把一个点染黑(不保证此时该点为白色) 询问一个点与所有黑点的距离和树剖先把原树转化为有根树。 然后询问一个点u,就是枚举每一个黑点v 然后贡献为d[u]+d[v]-2*d[lca(u,v)] 记录黑点的总个数和深度和,前两项很容易求和,最后一项呢? 我们尝试枚举u到root路径上的每一点w,设size[w]表示w是多少个黑点的祖先。 那...
阅读(410) 评论(0)

[bzoj2440][zsoi2011]完全平方数

题目大意找到从小到大第k个不含有平方因子的数。二分答案+容斥原理首先我们可以很容易想到二分答案,然后转化为一个判定性问题。 那么现在要解决的是如何求1~n内有多少不含平方因子的数。 可以想到容斥原理。 即ans=∑(−1)i∗n以内含有至少i个平方因子的数ans=\sum(-1)^i*n以内含有至少i个平方因子的数莫比乌斯函数观察上面的式子,转化一下 ans=∑√ni=1n/(i∗i)∗(−...
阅读(404) 评论(0)

rope大法好

rope大法好 轻松实现可持久化数组...
阅读(299) 评论(0)

[bzoj3673]可持久化并查集

题目大意实现一个可持久化并查集做法用可持久化线段树或平衡树之类的维护一个可持久化数组就好了。 这里我用了rope大法#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; using namespace __gnu_cxx; co...
阅读(529) 评论(0)

不是回文串

题目大意把APIO2014的回文串条件改为无限制。 该题还要限定出现次数大于1。 求答案。SAM裸题建出SAM。 不过要额外维护一个mxstep代表从根节点走到自动机上一个结点的最长路。 然后统计size。 注意的是据说这题不用桶排会超时。 接下来扫描每一个结点,如果其size大于1,就让mxstep[i]*size[i]与ans比较。#include #include<...
阅读(280) 评论(0)

K小数查询

题目大意兹瓷区间加和区间求k小。分块大法好我们将序列分块,每一块维护add标记和排序后的序列。 对于区间加,跨过整块就直接打标记,多余部分暴力修改然后重构所在块。 对于区间求k小,显然可以二分答案,然后转化为判定问题。 在一个块内求#include #include #include #include #define fo(i,...
阅读(597) 评论(0)

染色配对

题目大意每个点属于两个极大团。 团的定义是团内所有点两两间有连边。 极大团即不被任意更大的团所包含的团。 求该图的一般最大匹配,并输出匹配方案。神奇的方法我们把点看做边,把极大团看做点。 如果点i属于j、k两个极大团,那么就在j与k之间连一条编号为i的无向边。 现在我们要把每条无向边定向,其中最终一条编号为i的边如果是从j指向k那么代表原图中i这个点要与极大团j中的结点匹配。 设d[i]...
阅读(436) 评论(0)

奇妙的数列

题目描述线性做法我们设left[i]表示最大的k#include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace...
阅读(175) 评论(0)

暴走的图灵机

题目描述做法m代表T串的长度。 一个显然的做法是设g[i]表示i次操作后左手串所包含T串的个数。 则g[i]=g[i-2]+g[i-1]+c 其中c表示跨越中间线(即隔开i-2和i-1次操作后左手串的那条线)的所有串中T串的数量。 设f[i]表示i次操作后左手串的长度。 仔细观察发现,当f[i-2]和f[i-1]都不小于m后,c的循环节为2。 然后先暴力找到最早的id满足f[id]比2m...
阅读(265) 评论(0)
    个人资料
    • 访问:329952次
    • 积分:11659
    • 等级:
    • 排名:第1512名
    • 原创:814篇
    • 转载:4篇
    • 译文:0篇
    • 评论:205条
    最新评论
    文章分类