NOIP
TARsier_Gu
这个作者很懒,什么都没留下…
展开
-
【NOIP2017提高组】好路线
DescriptionSolution很容易的DP。 先把式子化简可以发现变成了(a12+a22+......+ak2)∗k−(∑ai)2({a_1}^2+{a_2}^2+......+{a_k}^2)*k-(\sum{a_i})^2,后面的部分可以作为DP的其中一维状态,设成后面的值确定时,前一部分的值最小的情况。Code#include<algorithm>#include<math.h>原创 2017-11-06 14:41:22 · 716 阅读 · 0 评论 -
【NOIP提高组】降雷皇
Description降雷皇哈蒙很喜欢雷电,他想找到神奇的电光。 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的。 哈蒙想知道电光最多能通过多少条导线,还想知道这样的方案有多少。Solution很容易地发现这是一个求最长上升子序列,并求出方案数。 用单调队列就能够轻易求出最长子序列的长度,而方案数可以用一原创 2016-12-12 22:32:36 · 803 阅读 · 0 评论 -
【NOIP提高组】神炎皇
Description神炎皇乌利亚很喜欢数对,他想找到神奇的数对。 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对。请问这样的数对共有多少呢?Solution从题意上来看(a+b)是(a*b)的因子,设d=gcd(a,b)d=gcd(a,b) a′=ada'={a\over d} b′=bdb'={b\over d}。 (a+b)|(a∗b)(a+b)|(a*原创 2016-12-12 22:11:53 · 524 阅读 · 0 评论 -
NOIP2016滚粗~~~~
为期两天的NOIP终于是结束了,为此而停的课感觉上也没有白费,考了两天,感觉还算满意,但是没有预期那么好,还是有一些问题暴露出来。但是每一次的比赛都是发现新的问题,发现了问题的比赛才是有意义的比赛。Day0: 刚到的第一个下午,领了房卡,发现我们的房间比别人的要小得多,躺在床上一抬手就到了另一张床(好不爽啊!!!),但是周围的“夜宵”店还是不少的,晚上的生活还是很丰富滴。本来想去踩踩点的,但是人家原创 2016-12-03 20:05:28 · 356 阅读 · 0 评论 -
【NOIP2017】李电下棋
DescriptionSolution首先分析题目描述发现,它没有说在最优策略下,所以说怎么下答案都是唯一的(其实也能证明,但是我懒)。然后就可以分析一波规律,可以很明显的发现,从相减的角度来说,大的减小的,发现这是个比较明显的辗转相除,很明显,就看看两个位置的gcd,是这个gcd的倍数的数都能够被走到,计算这样的位置有多少个,然后再判断奇偶性就可以啦。Codevar t,i:longint原创 2016-12-03 17:10:32 · 527 阅读 · 0 评论 -
【NOIP提高组】最近公共祖先
DescriptionYJC最近在学习树的有关知识。今天,他遇到了这么一个概念:最近公共祖先。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。YJC很聪明,他很快就学会了如何求最近公共祖先。他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA原创 2016-11-12 22:20:08 · 414 阅读 · 0 评论 -
【NOIP提高组】小W学物理
Description为了测试小W的物理水平,Mr.X在二维坐标系中放了N面镜子(镜子坐标绝对值不超过M),镜子均与坐标轴成45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。 镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。 现在有一条光线从原点沿X轴正方向射出,求走过T路程后所原创 2016-10-29 22:15:41 · 396 阅读 · 0 评论 -
【NOIP提高组】完美标号
Description给定M个二元组(A_i, B_i),求X_1, …, X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立。Solution这道题目比较明显的一点是只需要0或1就能够把整一幅图染好色,因为对于约束的两个点而言,其中一个为0另一个为1是可行的,对于一条约束条件组成的环来说,若环中节点数为奇数时,这个环明显是不合法的,而对于链来说,一定合法原创 2016-10-29 17:14:37 · 297 阅读 · 0 评论 -
【NOIP提高组五校联考】string
Description给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位。 由于答案可能很大,模10^9 + 7 输出。Solution枚举一个ii,表示当前做到第ii位,而前i−1i-1位的字符都已经与目标串的前i−1i-1位相同,那么对于当前位置可以分三种情况讨论。TT为目标串,SS为原创 2016-10-05 21:45:50 · 449 阅读 · 0 评论 -
【NOIP提高组五校联考】排队
DescriptionSolution因为每一个房间的优先级是固定的,所以可以预处理出每个房间的优先级原创 2016-10-05 21:25:51 · 473 阅读 · 0 评论 -
【NOIP提高组五校联考】道路规划
DescriptionSolution很显然可以把题目转换为相连点的位置作为编号,把两个点投影到坐标轴上能够发现,相交的边在投影出的区间一定是相交的。因为要求的是集合内的每一条边都两两相交,所以满足条件的一定是一个区间被另一个大一点的区间完全包含。容易想到,左端点顺序排序后,右端点做最长下降子序列,最长长度即为答案。Codevar a,b,f:array[0..100000] of long原创 2016-10-04 22:33:05 · 330 阅读 · 0 评论 -
【NOIP提高组】幻魔皇
Description幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。 请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。Solution先看到题目的关键字“斐波那契”,就很容易原创 2016-12-13 16:14:00 · 475 阅读 · 0 评论 -
【NOIP提高组】C
Description给出一个H的行和W列的网格。第i行第j列的状态是由一个字母的A[i][j]表示,如下: “.” 此格为空。 “o” 此格包含一个机器人。 “E” 此格包含一个出口,保证出口在整个网格中有且只有一个 每次可以选择上,下,左,右之一的方向,将所有剩余的机器人向这个方向移动一个格子,如果一个机器人被移出了网格,那么这个机器人会爆炸,并立即消失。如果一个机器原创 2016-12-22 15:22:41 · 607 阅读 · 0 评论 -
【NOIP2017提高组】轰炸
Description战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。 小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。 每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以原创 2017-11-06 14:30:17 · 488 阅读 · 0 评论 -
【NOIP2017提高组】仔细的检查
DescriptionSolution把编号抛开来看就是判断两棵树是否同构,之后再随便搞搞把编号对应上去。 判断树的同构用树哈希就好了,把每个节点的信息处理成哈希值,只要两棵树是同构的,以两棵树的重心为根的树只要保证同样形态的儿子节点是按顺序来枚举的,求哈希的时候就可以随便乱搞。判断了树同构之后在两棵树上同时BFS就能够对应出一个P数组。Code#include<iostream>#includ原创 2017-11-06 22:11:11 · 888 阅读 · 0 评论 -
【ZJOI2012】波浪【NOIP2017】赤壁情
DescriptionData ConstraintSolution先来一波套路:①从小到大插入能够去掉绝对值的影响②dp只需要处理相对位置就可以记录答案。 设fi,j,k,lf_{i,j,k,l}表示当前做到i,段数(连续有数的被称作一段)为j,此时对答案贡献为k,左右两个边界有多少个被填上,满足这样的状态有多少种方案。 大致分为以下几种情况: ①当前插入的值自成一段没有贴边界,贡献为-2*原创 2017-09-02 21:35:16 · 688 阅读 · 0 评论 -
【NOIP2017模拟】密州盛宴
DescriptionSolution首先考虑当前的情况是否合法?先明白几个前提:能够被东坡吃到的菜要等于n,可以先判断是否有解。每一刻双方都应该在吃东西,这样当我们倒序操作时,把0视作-1,1视作+1,在求后缀和的过程中,若是小于了-1,则说明东坡有不能吃到的菜,该方案不合法。如何调整方案能够理论上最优有解?即当0越靠前时,能够达到理论最优。同时发现,每当有一个0被提到了前面时,后缀和都会+1,现原创 2017-09-02 20:58:06 · 648 阅读 · 0 评论 -
【NOIP2017模拟】春思
DescriptionData ConstraintSolution首先可以先把A分解质因数,依照正常的套路一般都是在质因数上做文章。我们先想一想求某一个数的因数个数的方法,大概就是各质数组合而得,这题的想法也类似,想办法把个个质数组合在一起。可以发现,如果把不同的质数分开计算就不会出现重复的情况,同时因为题目求的是因数的和,那我们就可以把某一个质数的答案直接加起来,因为计算满足分配率。当前某一个质原创 2017-09-02 20:08:29 · 444 阅读 · 0 评论 -
【NOIP2017GDKOI】c
DescriptionData ConstraintSolution可以看出来,只要一段中1的个数和0的个数相同就可以满足了,前缀和能够比较好地判断是否合法。观察数据可以发现,询问的长度总和不会超过2∗1052*10^5,那么长度小于等于300的可以直接预处理出来,剩下的直接暴力,均摊的时间不会很多。Codeconst mx=350;var t:array[0..200000] of lo原创 2017-01-12 20:36:05 · 573 阅读 · 0 评论 -
【NOIP2017GDKOI】b
DescriptionSolution有一点巧妙,但是应该还是比较容易想到的。分析新增节点对于答案的贡献可以发现,转化成二进制后建树会更容易。当遇到某一位为0时,就应当在同一层新增一个节点,若是为1,在新加一个点之后,还应递进到下一层。自己在草稿纸上推一下,从底层算起,每个节点对答案的贡献是他儿子节点的乘积再+1。Codevar n,i,sum,s1,s2:longint; l,r:原创 2017-01-12 20:05:43 · 603 阅读 · 0 评论 -
【NOIP2017GDKOI】a
DescriptionSolution很明显的一道题,只要仔细想想就能发现:某两个数所能构成的最小数是他们的最大公因数。当然,所求出的公因数也可以和其他数求最大公因数,那就相当于对所有数都一起求出最大公因数。为什么要求出最大公因数呢?因为求出了最小的可组成的数时,就能够一点点减掉,能减到零的数必然是这个公因数的倍数。Codevar a,b:array[0..100000] of longin原创 2017-01-12 19:27:36 · 1165 阅读 · 0 评论 -
【NOIP2014八校联考第1场第2试】大水题(water)
Descriptiondzy 定义一个n^2 位的数的生成矩阵A 为一个大小为n*n 且Aij 为这个数的第i*n+j-n位的矩阵。 现在dzy 有一个数n^2 位的数k,他想知道所有小于等于k 的数的n*n 生成矩阵有多少种。(如果不足n^2 位则补前缀零)Solution首先要发现一个性质,除去回文数,其他数字反过来只要不超过k,就一定要减去另一个,于是就有递推式。除以2是因为这样子计算会重复原创 2017-01-15 22:31:23 · 549 阅读 · 0 评论 -
【NOIP2014八校联考第2场第2试】帮助Bsny(help)
DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助原创 2017-01-15 07:58:15 · 592 阅读 · 0 评论 -
【NOIP提高组】B
Description在两个n*m的网格上染色,每个网格中被染色的格子必须是一个四联通块(没有任何格子被染色也可以),四联通块是指所有染了色的格子可以通过网格的边联通,现在给出哪些格子在两个网格上都被染色了,保证网格的最外围一层不会在两个网格中同时被染色,即所有处于第x行第y列满足x=1或x=n或y=1或y=m的格子不会被在两个网格中同时被染色,请求出任意一种染色的方案,如果无解,请输出-1。Sol原创 2016-12-19 21:43:24 · 498 阅读 · 0 评论 -
【NOIP提高组五校联考】挖金矿
DescriptionSolution第一眼看到题目就以为是贪心,每一列都是相对独立的,对于每一列都单独操作,最后再一起算答案。但是发现并不可以,因为可能一个数对于当前列而言是累赘,但是对于其他数来说却是助力,是可以选择的,这样的策略是错的。分析平均数的性质:,我们可以二分答案,运用以上公式进行计算,若结果为负数则结果不合法,大于等于0则计入答案。(然而我被卡精度了)Codevar a:ar原创 2016-10-04 22:15:51 · 430 阅读 · 0 评论 -
【NOIP提高组】算循环
DescriptionData ConstraintSolution从数据范围很明显可以看出满分做法应该是O(1)O(1)的,我们可以慢慢把时间优化起来。首先x、y肯定是不需要枚举的,直接换成计算。然后再假设枚举了上下界,然后推出i∗j∗(n−j+1)∗(m−j+1)i*j*(n-j+1)*(m-j+1),接着再尝试每一行计算∑i∗(n−i+1)\sum i*(n-i+1)。同理最后的这一维可以用类原创 2016-10-17 14:58:35 · 525 阅读 · 0 评论 -
【NOIP提高组】天使的分裂
DescriptionData ConstraintSolution看到数据范围显然就是矩阵乘法快速幂了,那么问题的关键就在于推出转移矩阵。设GiG_i表示∑Fi\sum F_i,利用Fi−1F_{i-1}与Fi−2F_{i-2}组合成FiF_i,容易推出Fi=Fi−1+Fi−2+fi−1+fi−2F_i=F_{i-1}+F_{i-2}+f_{i-1}+f_{i-2}。刚开始设出了一个四元数组[f0原创 2016-09-24 22:01:10 · 324 阅读 · 0 评论 -
【NOIP2016提高组模拟】单峰
Description Solution首先要有一个思路,就是作为峰的数值只能是N。有了这点就很好思考了,假设当前N的答案为ans,对于N+1,为了使加入N+1后的序列符合要求,那么N+1只能添加在N的左或右,那就意味着N+1的答案是N的答案的2倍,所以答案为2n−12^{n-1}。观察到数据范围,显然用快速幂。Codeconst mo=1000000007;var n,i,mi,ans原创 2016-09-03 09:41:31 · 441 阅读 · 0 评论 -
【NOIP2016提高组模拟】积木
DescriptionData ConstraintSolution比赛的时候用了个神奇的小暴力,本来打算拿40分,没想到暴力出奇迹,随机数据下表现优良,居然碾过去了。暴力方法不讲,只贴代码,仅供对拍。 正解显然要用状态压缩(看数据范围),设fS,i,0/1/2f_{S,i,0/1/2},S表示当前已选择的积木集合,i表示在最上方的积木编号,0/1/2表示最上方的积木哪面朝上。转移方程容易推导。C原创 2016-09-03 09:51:15 · 404 阅读 · 0 评论 -
【NOIP提高组】运输妹子
Description小轩轩是一位非同一般的的大农(lao)场(si)主(ji),他有一大片非同一般的农田,并且坐落在一条公路旁(可以认为是数轴),在他的农田里种的东西也非同一般——不是什么水稻小麦,而是妹子。 在小轩轩的细心培育下,他的大片农田都要结出妹子啦!但是他的农田分布实在是太广阔了,他担心自己的妹子会令路过的人想入非非,于是他想要把所有农田上的妹子都集中到一个仓库里面,贮存起来。可是妹子原创 2016-09-13 17:03:09 · 321 阅读 · 0 评论 -
【NOIP提高A组模拟】艾比所特
Description阿良良木历将要迎来人生(不,是吸血鬼生涯)的第二次战斗——与身为人类和吸血鬼混血儿的艾比所特在直江津高中的操场solo,以取回Heartunderblade的左脚。 艾比所特个子不大,却单手扛着一副形状比自己大三倍,重量是他体重乘三次方的巨大十字架。吸血鬼是怕十字架的,所以历要远远地躲着。更麻烦的是艾比所特能变成雾气,历攻击不到他,他却因为是混血儿,吸血鬼的弱点降到了mini原创 2016-09-01 16:56:25 · 589 阅读 · 0 评论 -
【NOIP提高组】爬山
Description国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路。 对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边。他决定从点S出发,每到达一个新的节点他就可以获得一定的成就值。同时h10又是一个很珍惜时间的运动员,他不希望这次爬山的成就值白白浪费,所以最后他一定要在一个存档点停下,保存自己的成就值。原创 2016-09-12 21:45:49 · 333 阅读 · 0 评论 -
火神的鱼
Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可原创 2016-08-18 22:13:42 · 832 阅读 · 1 评论 -
Password
DescriptionSolution首先因为转化成一个矩阵后,发现除了对角线的值可能会使奇数以外,其他都为偶数,所以出现次数为奇数的,一定出现在答案队列里,剔除这些数相互的gcd后,可能还有剩下的一些偶数。因为gcd(a,b)<=min(a,b),所以剩余的数中,最大的也会是答案,把该数以及与存在于答案队列的数所取gcd剔除后,重复以上操作,直到剩余的数为0。Codeconst mo=100000原创 2016-08-18 21:43:37 · 440 阅读 · 0 评论 -
Garden
DescriptionSolution我们考虑从小到大的把数字填进去。并且有个性质就是被标记的位置不会超过 8 个,那么我们就可以考虑用状压 dp 来做。设 F[i][S]表示已经填完了前 i 个数,被标记的数的填写情况为 S。预处理出一个rest数组,rest[S]表示当有标记的原创 2016-08-18 21:09:44 · 512 阅读 · 0 评论 -
Matrix
DescriptionSolution考虑到每一个块的值都是由它的(左块a+右块*b),如果保留块的编号,推到右下角后发现都是由第一行或第一列的块乘上a的若干次方和b的若干次方。但是这样子推出来的信息并不能直接计算,但是却给我们提供了一条思路:计算第一行或第一列的数对答案的贡献。由推出的算式可以发现,对于一个块,向下走一格就*b,向右走一格就*a。计算总和,得到Cn−22n−i−2C^{n-2}_{原创 2016-08-18 19:40:53 · 394 阅读 · 0 评论 -
Throw
DescriptionSolution我们可以设三个人所在位置为一个三元组(x,y,z),转移状态分为左右两边的向中间跳、中间向两边跳三种,因为两边向中间跳只会推导出一种状态,所以把两边向中间跳作为当前状态的父亲,把所有状态转化成树之后,所求就是起始状态与目标状态的lca,与两个状态的深度差之和,如果没有交集则无解。 设 l = y-x, r = z-y, 1. 中间向两边跳 S(x, y,原创 2016-08-18 20:34:21 · 337 阅读 · 0 评论 -
Binary
DescriptionSolution比赛的时候冲着60分而来,所以打了20棵线段树,可惜忘了开int64,但是分数位思考为正解提供了一条很好的思路。 对于每一个数位都开一个树状数组,a[num,x]表示第num个树状数组中,模2num2^{num}后值为x,且第num位上的数为1的数的个数,当x=0时,询问区间为[2i−1,2i−1][2^{i-1},2^i-1],而当x>0时,区间为[2i−1原创 2016-08-18 16:04:29 · 358 阅读 · 1 评论 -
【NOIP2016提高组模拟】同余
DescriptionData ConstraintSolution我们可以机智地把问题拆分成两个询问,以类似前缀和的求答案的方法,用1~r的ans减去1~l-1。用一条扫描线,把扫过的元素加入一个桶里,对于每个询问,枚举mod p余q的数,把桶里的值加入答案。因为当p太小时,这样的枚举效率很低,所以对于p我们可以分类计算。 1. 当p≤maxa[i]−−−−−−√p≤\sqrt{max_{a[原创 2016-09-03 09:59:07 · 374 阅读 · 0 评论 -
【NOIP提高组模拟】看电影
Description听说NOIP2016大家都考得不错,于是CCF奖励省常中了 K 张变形金刚5的电影票奖励OI队的同学去看电影。可是省常中OI队的同学们共有 N(N >= K)人。于是机智的你想到了一个公平公正的方法决定哪K人去看电影。 N个人排成一圈,按顺时针顺序标号为1 - N,每次随机一个还存活的人的编号,将这个人踢出。继续上述操作,直到剩下K个人。 但这样显然太无聊了,于是小S又想出原创 2016-09-03 21:09:43 · 380 阅读 · 0 评论