摘要: //¡õ;¡ö #include<cstdio> #include<algorithm> #include<cstdlib> #include<ctime> #include<cstring> #include<queue> #include<windows.h> #include<conio.h>阅读全文
posted @ 2017-11-23 21:14 AutSky_JadeK 阅读(18) 评论(0) 编辑
摘要: #include<cstdio> #include<iostream> #include<string> #include<cstring> #include<list> #include<conio.h> #include<windows.h> using namespace std; typed阅读全文
posted @ 2017-11-23 21:13 AutSky_JadeK 阅读(9) 评论(0) 编辑
摘要: 题意: 维护一个栈,支持以下操作: 从当前栈顶加入一个0或者1; 从当前栈顶弹掉一个数; 将栈顶指针和栈底指针交换; 询问a[top] nand a[top-1] nand ... nand a[bottom]的值。 nand是这样定义的: ∙∙ 0 nand 0 = 1 ∙∙ 0 nand 1 =阅读全文
posted @ 2017-11-23 16:49 AutSky_JadeK 阅读(9) 评论(0) 编辑
摘要: 题意:给你一棵树。q次询问,每次给你一些非关键点,其他的点都是关键点,让你输出树中既不是关键点,也不是关键点的lca的点的数量。 对每次询问的非关键点按照深度从深到浅排序,依次处理,最开始每个点受到的警告次数为零。如果一个点的儿子数-它受到的警告数量>=2(就是它能够从至少2个子树中各取一个关键点,阅读全文
posted @ 2017-11-23 16:43 AutSky_JadeK 阅读(2) 评论(0) 编辑
摘要: 题意:一张n*m的网格图(n和m可以达到10^9),其中K个点是障碍物(不超过200个),问你没有被障碍物占据的点形成了几个连通块?并且输出各个连通块的大小。 容易证明,大小超过40000的连通块最多只有一个。于是可以从每个与障碍物邻接的非障碍点出发bfs,限制步数不超过40000,这样就可以找到所阅读全文
posted @ 2017-11-23 16:34 AutSky_JadeK 阅读(1) 评论(0) 编辑
摘要: 题意:给你一张2-SAT,问你加至少几句a V b(不能用非运算)这样的语句,使得其无法全为真。 如果最开始没有左右两项都含非运算的析取表达式,则无解,因为显然你可以对每一项的不含非的那项规定为真,使得整个2-SAT成立。 由于规定了你添加的语句不能含有非运算,故添加的边一定从 非某 指向 某。 如阅读全文
posted @ 2017-11-22 23:30 AutSky_JadeK 阅读(3) 评论(0) 编辑
摘要: 题意:给你一张有向图,每条边有个限制范围,只有权值在限制范围内的人能走这条边,问你权值不超过K的人中,有多少人能从S到T。 K很大,因此我们只处理边的范围的上下界这O(m)个权值能否到达,以防万一,还处理了这些权值+1、-1的可达性。然后去重。离散化出来的这些区间中,两个端点都可达的话,其内部的点也阅读全文
posted @ 2017-11-22 23:24 AutSky_JadeK 阅读(4) 评论(0) 编辑
摘要: 题意:一颗树,每条边有个颜色,一条路径被定义为“彩虹”,当且仅当其上没有长度大于等于2的同色子路径。一个结点被定义为“超级结点”,当且仅当从其发出的所有路径都是“彩虹”。 枚举所有长度为2,且同色的路径,其两端点方向发出的子树中的结点都不可能成为答案,只需要将它们覆盖掉即可,用dfs序处理,在左端点阅读全文
posted @ 2017-11-22 23:19 AutSky_JadeK 阅读(2) 评论(0) 编辑
摘要: 题意:给你两颗有根树,判定是否同构。 用了《Hash在信息学竞赛中的一类应用》中的哈希函数。 len就是某结点的子树大小,g是某结点的孩子数+1。 这个值也是可以动态转移的!具体见论文,所以能高速处理出一颗无根树以每个顶点为根时的哈希值。改日敲个板子试试。阅读全文
posted @ 2017-11-22 01:28 AutSky_JadeK 阅读(7) 评论(0) 编辑
摘要: 题意:一个机器人在正方形迷宫的左上角,迷宫里有些格子有障碍物,每一步机器人会等概率地向能走的格子转移(包含自身)。问你无限长的时间之后,机器人处于矩形对角线的右下方的概率。 无限长时间意味着,起点没有了意义。只需统计右下方每个格子的贡献之和比上所有格子的贡献之和。 假设迷宫不是离散的,而是连续的,那阅读全文
posted @ 2017-11-16 19:43 AutSky_JadeK 阅读(4) 评论(0) 编辑
摘要: 题意:给你n个正整数,一对和为素数的数为一个合法数对。你选不超过K个合法数对,使得你选的数对涉及到的数的数量最大化。输出这个值。 所有1之间是可以任意两两配对的。 把奇数放在左侧,偶数放在右侧。 考虑当前要使用多少个“1”,动态更新最大匹配。 如果K不超过 最大匹配数 + 剩下的还没使用过的1数/2阅读全文
posted @ 2017-11-02 18:55 AutSky_JadeK 阅读(114) 评论(0) 编辑
摘要: 题意:给你一个数n,让你找m个非负整数,使得它们的和为n,并且按位或起来以后的值最小化。输出这个值。 从高位到低位枚举最终结果,假设当前是第i位,如果m*(2^i-1)<n的话,那么说明这一位如果填零,剩下的位不论怎么填,都绝对凑不出n来,所以这一位必须填1.如果m*(2^i-1)>=n,这一位就填阅读全文
posted @ 2017-11-02 18:47 AutSky_JadeK 阅读(9) 评论(0) 编辑
摘要: 题意:一个桌子有m个位置(首尾相接),有n支队伍坐在其中的n个位置上。有个机器人会从某个起始位置出发,每个时刻会依次发生以下三个事件: 机器人顺时针转一个单位; 某些队伍通过了题目(如果存在); 如果机器人的当前的位置的队伍需求气球,机器人就会把他需求的气球都给他。 让你对于所有可能的初始位置,最小阅读全文
posted @ 2017-11-02 18:39 AutSky_JadeK 阅读(6) 评论(0) 编辑
摘要: 题意:一开始有1个物品,总价是1。你的一次操作可以要么使得物品数量+1,总价加上当前物品的单价。要么可以使得总价+1,物品数量不变。问你最少要几次操作从初始状态到达有x个物品,总价是y的状态。这里的y可以有小数点后的部分,会抹去。 如果x>y,显然无解。 因为不管怎样操作,物品的单价是单调不下降的。阅读全文
posted @ 2017-11-01 23:23 AutSky_JadeK 阅读(4) 评论(0) 编辑
摘要: inv[i]=(M-M/i)*inv[M%i]%M阅读全文
posted @ 2017-11-01 23:15 AutSky_JadeK 阅读(10) 评论(0) 编辑
摘要: 题意:给你一个不超过九位的不含重复数码的十进制数,每次会随机将它的数码打乱,变成一个新的数,如果它小于等于上一次的数,那么你输了;如果它大于上一次的数,那么可以继续。直到它变成能够表达的最大数为止就赢了,问你赢的概率。 设所有排列从小到大被标记为1~n。p(i)表示排列i获胜的概率。 p(n)=1;阅读全文
posted @ 2017-11-01 00:58 AutSky_JadeK 阅读(6) 评论(0) 编辑
摘要: 题意:第一象限有n个点,你从x正半轴任选一个位置出发,vy恒定,vx可以任意变化,不过只能在-vy/r到vy/r之间变化,问你最多能经过多少个点。 暴力dp是n^2,不可取。 注意到,一个点,所能到达它的点,是它后面一个张角内的所有点。这个张角很容易算出。 于是可以将这些点全部映射到一个新的坐标系内阅读全文
posted @ 2017-10-30 19:40 AutSky_JadeK 阅读(5) 评论(0) 编辑
摘要: 题意:给你一个01矩阵,让你选择尽可能少的行数,使得这些行的并集能够覆盖到所有列。 DLX算法求解重复覆盖问题模板,使用估价函数进行剪枝。阅读全文
posted @ 2017-10-30 01:41 AutSky_JadeK 阅读(10) 评论(0) 编辑
摘要: DLX算法求解精确覆盖问题模板。赛场上可以参见白书。阅读全文
posted @ 2017-10-30 00:07 AutSky_JadeK 阅读(5) 评论(0) 编辑
摘要: 题意:给你一两个数m和n,它们分别是某对数A,B的gcd和lcm,让你求出一对使得A+B最小的A,B。 n/m的所有质因子中,一定有一部分是只在A中的,另一部分是只在B中的。 于是对n/m质因子分解后,dfs枚举在A中的质因子是哪些,在B中的是哪些,然后尝试更新答案即可。(因为相等的质因子只可能同时阅读全文
posted @ 2017-10-29 18:48 AutSky_JadeK 阅读(8) 评论(0) 编辑
摘要: #include<algorithm> #include<cstdio> #include<cstdlib> #define N 5500 using namespace std; typedef long long ll; ll ct,cnt; ll fac[N],num[N]; const in阅读全文
posted @ 2017-10-29 18:44 AutSky_JadeK 阅读(6) 评论(0) 编辑
摘要: 题意:n个格子,m个球,让你把球放入某些格子里,使得所有有球的格子之间的距离(abs(i-j))均为素数 ,让你输出方案数。 只占一个格子或者两个格子显然可行。 占有三个格子的情况下,则必须保证其中两者的间距为2,另两者的间距为一个+2以后仍为素数的素数。这个可以预处理。 占有四个格子的情况下,间距阅读全文
posted @ 2017-10-28 17:35 AutSky_JadeK 阅读(6) 评论(0) 编辑
摘要: 题意:一个序列,q次询问,每次问你某个指定区间内的EXtreme XOR值。 一个长度为l的区间的EXtreme XOR值被定义为,从左到右,将每相邻的两个数XOR起来,产生l-1个新的值,……如此循环,总共l-1次,直到剩下一个值。问的就是这个值是多少。 容易发现,一个区间的答案,只和每个数被异或阅读全文
posted @ 2017-10-28 17:31 AutSky_JadeK 阅读(3) 评论(0) 编辑
摘要: 题意:n个点,每个点有一个点权。两个点之间有边相连的充要条件是它们的点权不互素,问你这张图的连通块数。 从小到大枚举每个素数,然后枚举每个素数的倍数,只要这个素数的某个倍数存在,就用并查集在这些倍数之间都连上边。然后输出最后的集合数量即可。 注意,点权为1的点都会自成一个连通块。阅读全文
posted @ 2017-10-28 17:26 AutSky_JadeK 阅读(5) 评论(0) 编辑
摘要: 题意:有向图最小环,输出方案。 附无向图最小环(转自 http://www.cnblogs.com/kane0526/archive/2012/11/09/2763170.html):阅读全文
posted @ 2017-10-26 19:25 AutSky_JadeK 阅读(5) 评论(0) 编辑
摘要: 题意:给你三个1~n的排列a,b,c,问你在 (i,j)(1<=i<=n,1<=j<=n,i≠j),有多少个有序实数对(i,j)满足在三个排列中,i都在j的前面。 暴力求的话是三维偏序,相对比较困难。但是我们可以用一些简单的方法。 设在a中i在j前面的有序实数对数为A,b中为B,c中为C。(其实显然阅读全文
posted @ 2017-10-20 17:15 AutSky_JadeK 阅读(10) 评论(0) 编辑
摘要: 题意:有n个水井,每个水井发出一些管线(都是线段),然后每条管线上最多只有一个水井。所有从不同的水井发出的管线的相交点都是清洁点(不存在清洁点是大于两条管线点的交点)。你需要在某些管线上放出一些机器人,它们会清洁所有该条管线上的清洁点。但是两条相交的管线不能同时放有机器人。问你是否存在一种可行的放机阅读全文
posted @ 2017-10-20 17:04 AutSky_JadeK 阅读(7) 评论(0) 编辑
摘要: 题意:有n个人,依次来到机房,给你他们每个人的到达时间和使用时间,你给他们分配电脑,要么新开一台, 要么给他一台别人用完以后没关的。一台电脑会在停止使用M分钟后自动关闭。让你最大化不需要新开电脑的总人数。 将人按照到达时间进行排序,把所有已经处理完的人的结束时间塞在小根堆里面。新来一个人的时候,从堆阅读全文
posted @ 2017-10-20 16:59 AutSky_JadeK 阅读(4) 评论(0) 编辑
摘要: 题意:交互题,有一个长度为n(偶数)的二进制串,你需要猜不超过n+500次猜到它。如果你猜的串与原串相同的位数为n,那么会返回n,如果为n/2,那么会返回n/2,否则都会返回零。 先random,直到出现一个n/2为止,将此串视为a串。由于正态分布,肯定能在500次内查到。 然后枚举a的所有相邻元素阅读全文
posted @ 2017-10-18 19:30 AutSky_JadeK 阅读(6) 评论(0) 编辑
摘要: 题意:河里有n块石头,一只青蛙要从左岸跳到右岸,你可以再在任意一个位置放一块石头,使得在最优方案下,青蛙单步跳的距离的最大值最小化,输出该位置。 将原图视作完全图,二分答案mid,然后在图中只保留小于等于mid的边,分别用dfs处理左岸能到哪些石头,右岸能到哪些石头。然后二重循环枚举两侧这些点对,如阅读全文
posted @ 2017-10-18 19:24 AutSky_JadeK 阅读(4) 评论(0) 编辑
摘要: 题意:给你一个n*n的矩阵,初始时,(x,y)的值为x+y。可能有两类操作,一类是对某一行求和,并将这一行置零;另一类是对某一列求和,并将这一列置零。 维护四个值:一个是列标号之和,一个是当前存在的列数,一个是行标号之和,另一个是当前存在的行数。 询问某一行的时候,只需要输出列标号之和+该行行号*当阅读全文
posted @ 2017-10-18 19:20 AutSky_JadeK 阅读(7) 评论(0) 编辑
摘要: 题意:有一个技能学习表,是一个DAG,要想正常学习到技能x,要将指向x的技能全部先学到,然后会有一个正常花费cx。然后你还有一种方案,通过氪金dx直接获得技能x。你还可以通过一定的代价,切断一条边。问你学得指定的技能N的最小代价。 源点向每个点连接代价为cx的边,每个点拆点,内部连接代价为dx的边,阅读全文
posted @ 2017-10-18 16:42 AutSky_JadeK 阅读(12) 评论(0) 编辑
摘要: 题意:给你两个只由1~6组成的串,问你B串至少要经过几次操作变成A串。 一次操作要么选择一个种类的数,将其全部变成另一种类;要么选择一个数,将其变为另一个数。 可以证明,一定先进行一定数量的第一种操作,然后再进行一定数量的第二种操作。 所以可以BFS预处理序列每种数要变成哪种数所需要的代价。初始状态阅读全文
posted @ 2017-10-18 16:37 AutSky_JadeK 阅读(32) 评论(0) 编辑
摘要: 题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到。问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱。 设你往第i支队伍上押ai元,不选的视作零元。 首先可以证明,不论你持有多少钱,不影响最后是否有解;是阅读全文
posted @ 2017-10-14 17:35 AutSky_JadeK 阅读(6) 评论(0) 编辑
摘要: 题意:维护一个动态并查集,支持加边,删边,维护两点连通性。 主要用到了 lct 的 Access FindRoot ChangeRoot link cut 操作。阅读全文
posted @ 2017-10-10 22:52 AutSky_JadeK 阅读(9) 评论(0) 编辑
摘要: 题意:给你一棵树,点带权,支持三种操作:单点修改;询问链上和;询问链上max。 这里的Query操作用了与上一题不太一样的做法(上一题用那种做法,因为在边带权的情况下换根太困难啦): 先ChangeRoot(U),然后Access(V),再Splay(V),询问V在辅助树中的左子树。 因为Splay阅读全文
posted @ 2017-10-10 21:04 AutSky_JadeK 阅读(13) 评论(0) 编辑
摘要: 题意:给你一棵树,边带权,支持两种操作:修改某条边的权值;查询两点之间的最短路。 lct主要实现单点修改和路径和。 修改x结点的值只需将x Splay到其所在辅助树的根,然后修改其值,再maintain一下即可。 路径和询问要这样做: 我们先 ACCESS(u), 然后在 ACCESS(v) 的过程阅读全文
posted @ 2017-10-08 21:32 AutSky_JadeK 阅读(13) 评论(0) 编辑
摘要: lct板子,此题主要有cut操作和link操作。阅读全文
posted @ 2017-10-08 19:40 AutSky_JadeK 阅读(13) 评论(0) 编辑
摘要: 题意:n个数,m次询问,每次给你一个询问v,l,r,问你v%a[l]%a[l+1]%...%a[r]是多少。 a%b,结果要么不变,要么至少缩小到a的一半,于是用线段树,每次询问当前区间最靠左侧的小于等于当前数的值是多少,只需不超过log次询问就能使该数模完,就行了。 O(n(logn)^2)。阅读全文
posted @ 2017-10-07 15:36 AutSky_JadeK 阅读(5) 评论(0) 编辑
摘要: 题意:一个邮递员从数轴上原点出发,每次最多带K封信,往n个地方送信,每个地方有一定的需求的信件数,问你最少要跑的距离的总和是多少?一趟可以给多个地方去送。 显然优先往远的地方送比较优越,近的地方可以顺路给他带过去。 原点两侧是独立的,可以分别处理。阅读全文
posted @ 2017-10-07 15:32 AutSky_JadeK 阅读(5) 评论(0) 编辑
TVアニメ「Charlotte(シャーロット)」公式サイト TVアニメ「Charlotte(シャーロット)」公式サイト