noip
文章平均质量分 70
dance_in_the_dark
这个作者很懒,什么都没留下…
展开
-
NOIP提高组 旷野大计算
DescriptionData ConstraintSolution对于这种区间查询的题,我们直接上莫队,用堆处理一下就可以用O(NN−−√logN\sqrt{N}logN)的时间卡过去。.原创 2016-09-08 17:36:31 · 1113 阅读 · 0 评论 -
NOIP 提高 公约数
Description给定一个正整数,在[1,n]的范围内,求出有多少个无序数对(a,b)满足gcd(a,b)=a xor b。Solution我们可以发现对于一个a、b,gcd(a,b)=gcd(b,a-b),又gcd(b,a-b)<=min(b,a-b),所以gcd(a,b)<=a-b。而考虑异或操作,对于a,b两个值的异或,一定是相同位为0,否则为1,那么对于a-b,转换成二进制上的加减,一定原创 2016-08-19 21:33:49 · 382 阅读 · 0 评论 -
NOIP提高模拟 Binary
DescriptionData ConstraintSolution我们考虑到询问and、or、xor一个数之类的问题,通常都是将二进制上的位分开来处理。想到这个就好做了。我们开20颗树状数组,第i颗树状数组记录权值在0~2i−12^i-1的数的个数,也就是个权值线段树。对于一个修改操作,我们只需将原本axa_x在树状数组中的值的位置上减1,在y在树状数组中的位置加1,更新一下axa_x即可。而对于原创 2016-08-17 21:54:22 · 345 阅读 · 0 评论 -
NOIP提高组模拟 Value
DescriptionData ConstraintSolution相信大家一看到这道题就想起最经典的背包问题,于是毫无疑问就往dp方向想。于是我们设出状态转移方程,设F[i][j][k]为我要拿i个物品,已经选了j个,现在第j个我选了k的最大价值,那么f[i][j][k]=max{f[i][j-1][l]+v[k]-w[k]*(i-j)},其中l为第j-1次选择的物品。但很快我们发现,你这样做是不原创 2016-08-17 21:16:01 · 410 阅读 · 0 评论 -
noip提高组模拟Matrix
DescriptionData Constraint题目分析我们观察第一行的一个点对答案f[n][n]的贡献,设这个点的纵坐标为i,权值为L[i],显然是等于x*an−1a^{n-1}*bn−ib^{n-i}*L[i],其中x是个十分奇怪的系数,我们列出n=1—4的情况进行分析(下面只分析第一行对答案的影响,第一列类似)N=1 F[1][1]=L[1]N=2 F[2][2]=a*L[2]N=3 F[原创 2016-08-17 20:37:11 · 456 阅读 · 0 评论 -
NOIP 提高组 飞扬的小鸟
DescriptionFlappy Bird是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。现在小鸟们(n只)遇到了一个难题,他们遇到了一堵巨大的墙,墙上仅有m个洞供他们通过,由于小鸟们的体型不同且墙上洞的形状也不同,所以每种体型的鸟通过每个洞的时间都不同,鸟的体型共有n种原创 2016-08-19 22:27:03 · 1025 阅读 · 0 评论 -
NOIP提高组 树上路径
Description给出一棵树,求出k,使k最小,且在树中存在路径p,使得k>=S且k<=E。(k为路径p上的边的权值和),若无解输出-1。Data Constraint树中点的数量<=10510^5,|E-S|<=10^6对于所有数据满足1<=Wi<=1000,|E|、|S|<=10^9Solution我们考虑一条可能路径在以i为根的树中的情况。1、这条路径不经过点i。这种情况我们在往i的子树处原创 2016-08-19 22:04:30 · 900 阅读 · 0 评论 -
NOIP提高组 Brothers
Description在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。在国王死后,这种不好的关系使得王子之间爆发了战争。战斗只会在相邻的两个城市之间爆发(共有一条边称之为相邻),并且只有当A讨厌B时,A才会对B发起战斗,结果必原创 2016-09-10 15:32:04 · 348 阅读 · 0 评论 -
NOIP提高组 Word
Description有k个字符串{S1,S2,…,Sk},其中的每个字符不是空格,就是26个小写英文字母中的一个。对于常数 l和d,我们的目标是从这k个字符串中得出一个(l,d)-样词,它是一个长度为l的字符串W=W[1]W[2]…W[l],它的每个字符必须符合下面的条件:每个字符串Si(i=1,2,…,k)都有一个长度为l的子串X=X[1]X[2]…X[l],X和W的出错率小于或等于d。(X和W原创 2016-09-10 15:51:53 · 473 阅读 · 0 评论 -
NOIP提高组 闭门造车
Description自从htn体验了一把飙车的快感,他就下定决心要闭门造车!但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店。一走进商店,玲琅满目的各式零件看得htn眼花缭乱。但是他很快便反应过来:我只要买一套好的零件就行。首先它们的性能差不能太大,否则汽车的兼容性不好,开着开着就损坏了;其次,当然是越便宜越好了!为了打造一辆顶级跑车,htn陷入了沉思……现在商店中有 N 件零件,原创 2016-09-10 17:03:13 · 380 阅读 · 0 评论 -
NOIP提高组 爬山
Description国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路。对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边。他决定从点S出发,每到达一个新的节点他就可以获得一定的成就值。同时h10又是一个很珍惜时间的运动员,他不希望这次爬山的成就值白白浪费,所以最后他一定要在一个存档点停下,保存自己的成就值。请你计原创 2016-09-12 14:37:41 · 336 阅读 · 0 评论 -
NOIP提高组 运输妹子
Description小轩轩是一位非同一般的的大农(lao)场(si)主(ji),他有一大片非同一般的农田,并且坐落在一条公路旁(可以认为是数轴),在他的农田里种的东西也非同一般——不是什么水稻小麦,而是妹子。在小轩轩的细心培育下,他的大片农田都要结出妹子啦!但是他的农田分布实在是太广阔了,他担心自己的妹子会令路过的人想入非非,于是他想要把所有农田上的妹子都集中到一个仓库里面,贮存起来。可是妹子太多原创 2016-09-12 14:57:43 · 312 阅读 · 0 评论 -
NOIP提高组 单峰
Description 由于答案可能很大,所以输出答案为除以109+710^9+7后的余数Data ConstraintSolution我们发现当一个位置i确定为峰顶时,左边1~i-1的数一旦选定,它的顺序和i+1~n的顺序是唯一确定的。那么我们只要考虑左边的数选哪些就好了,这样的种类数是Ci−1n−1C^{i-1}_{n-1},所以总的答案是∑n−1i=0Ci−1n−1\sum_{i=0}^{n原创 2016-09-03 09:22:19 · 379 阅读 · 0 评论 -
NOIP提高组 积木
DescriptionData ConstraintSolution对于这种题我们考虑用状态压缩dp来做。我们设出f[i][j][k]表示现在的二进制状态为i(表示选了哪些数),当前最顶层的积木为j,积木j的摆放状态k(k为1、2、3)。然后直接转移即可。代码#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#原创 2016-09-03 09:28:57 · 583 阅读 · 0 评论 -
NOIP提高组 同余
DescriptionData ConstraintSolution看到这种题(a[i]如此小),果断想到用根号级别的算法。考虑到一个合法的a[i]=kp+q,所以我们分类讨论一下p的范围。1、当p>=N−−√\sqrt{N}时,k的枚举范围不会大于N−−√\sqrt{N},所以直接那么用个桶存一下值为i的有几个,用O(N−−√\sqrt{N})时间扫一下就好了。2、当p<N−−√\sqrt{N}时原创 2016-09-03 10:02:29 · 307 阅读 · 0 评论 -
NOIP提高组 树塔狂想曲
Description相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。 1 3 8 2 5 0 1 4 3 8 1 4 2 5 0路径最大和是1+8+5+4+4 = 2原创 2016-09-03 21:32:27 · 541 阅读 · 0 评论 -
NOIP提高组 看电影
Description听说NOIP2016大家都考得不错,于是CCF奖励省常中了 K 张变形金刚5的电影票奖励OI队的同学去看电影。可是省常中OI队的同学们共有 N(N >= K)人。于是机智的你想到了一个公平公正的方法决定哪K人去看电影。N个人排成一圈,按顺时针顺序标号为1 - N,每次随机一个还存活的人的编号,将这个人踢出。继续上述操作,直到剩下K个人。但这样显然太无聊了,于是小S又想出一个牛逼原创 2016-09-03 21:16:06 · 475 阅读 · 0 评论 -
NOIP提高组 被粉碎的线段树
DescriptionData Constraint原创 2016-09-03 21:34:03 · 599 阅读 · 0 评论 -
NOIP提高组【JZOJ4776】 排序
DescriptionData ConstraintSolution这道题看起来很难,第一直觉是用归并排序求逆序对O(NlogNlogN)。但仔细想一想才发现自己想得太复杂了。其实,题目中要求一个合法序列最多只有一队逆序对,所以我们直接将序列排序,与原序列进行比对,只要出现两处以上不同即输出NO即可。代码#include<iostream>#include<cmath>#include<cstr原创 2016-09-15 20:50:29 · 446 阅读 · 0 评论 -
NOIP提高组【JZOJ4782】Math
DescriptionData ConstraintSolution考虑到是(−1)∑mj=1d(i∗j)(-1)^{\sum^m_{j=1}{d(i*j)}},所以我们要考虑∑mj=1d(i∗j){\sum^m_{j=1}{d(i*j)}}的奇偶性。很显然,只有当i* j为完全平方数时,d(i* j)Mod2Mod 2才为1,其余Mod2Mod 2后都为0。我们分解质因数设i=ap11a_1^{p原创 2016-09-15 21:27:34 · 398 阅读 · 0 评论 -
NOIP 提高组【JZOJ 4777】灌水
DescriptionData ConstraintSolution我们枚举每2* 2块的情况。设左上角的坐标为(x,y)对于为0的块,我们先给(x,y)(x+2,y+2)的祖先加上π/4\pi/4,然后将(x+1,y+1)与(x+2,y)(x,y+2)合并,给(x+1,y+1)的祖先加上4-π/2\pi/2。对于为1的块则同理,我们先给(x,y+2)(x+2,y)的祖先加上π/4\pi/4,然后将原创 2016-09-15 21:00:18 · 433 阅读 · 0 评论 -
NOIP提高组 【JZOJ4778】数列编辑器
DescriptionData ConstraintSolution考虑到N<=10610^6,我们用模拟链表和队列解决这道题。设d[i]表示前i个数的前缀和,f[i]表示前i个前缀和的最大值。对于一次添加操作,我们直接在链表光标处i中加入这个数x,并在队列中加入这个数,模拟链表中的光标i右移,尾指针+1,并更新d[i]和f[i]的值。这里要解释一下:因为光标是一位一位移动的,而每次查询都只会查询光原创 2016-09-15 21:22:14 · 649 阅读 · 0 评论 -
NOIP2016提高组 快速荷叶叶变换
DescriptionData Constraint对于 40% 的数据,1 ≤ N,M ≤ 1000对于 60% 的数据,1 ≤ N,M ≤ 10^6对于 100% 的数据,1 ≤ N,M ≤ 10^9Solution我们将N和M分开讨论。对于一个固定的i,∑Mj=1\sum^M_{j=1}(M mod j)我们发现当⌊M/j⌋\lfloor{M/j}\rfloor固定为一个值k时,(M mod原创 2016-09-04 15:13:11 · 677 阅读 · 0 评论 -
NOIP提高组模拟 树上摩托
DescriptionSherco是一位经验丰富的魔♂法师。Sherco在第零次圣杯战争中取得了胜利,并取得了王之宝藏——王の树。他想把这棵树砍去任意条边,拆成若干棵新树,并装饰在他的摩托上,让他的摩托更加酷炫。但Sherco认为,这样生成的树不具有美感,于是Sherco想让每棵新树的节点数相同。他想知道有多少种方法分割这棵树。Data Constraint对于40%的数据,N ≤ 15(N表示节点原创 2016-09-04 15:37:53 · 428 阅读 · 0 评论 -
NOIP 提高组【JZOJ4784】Map
DescriptionData ConstraintSolution考虑到一个强连通分量内任意两个点一定存在2条不相交的路径,而不在一个强连通分量的两个点只会有一条路径,所以我们先用tarjan缩一下点,并构出一张新图,定义每个点的size为这个点所包含的点数。这样新图就变成一棵树了。然后我们接着想,假设a和b在不同强连通分量内,连接a和b点所造成的新的点对有哪些。显然,连接a和b会使a到b的路径上原创 2016-09-16 11:44:50 · 397 阅读 · 0 评论 -
NOIP 提高组【JZOJ 4783】Osu
DescriptionSample Input4 2 1 2 2 2 0 2 3 0 0 4 2 0Sample Output1 2 1 样例解释: 圆圈只在出现的时刻有效。即:时刻t_i时鼠标位置恰好在(x_i,y_i)才能得分。 Kaguya所做的工作就是在这些时刻间移动鼠标。 对于样例:选择点击第2、4个圆圈。 时间[0,2]内,鼠标从(0,0)移动到(0,2),速度为1,并原创 2016-09-16 12:00:08 · 446 阅读 · 0 评论 -
GDOI模拟 矩阵
DescriptionData ConstraintSolution遇到这种求第k小的题我们可以采用堆得方法。显然,对于一个左上角为(x,y),右下角为(x1,y1)的和谐矩阵,它的权值一定比{(x-1,y),(x1,y1)}{(x,y-1),(x1,y1)}{(x,y),(x1+1,y1)}{(x,y),(x1,y1+1)}这四个矩形都要小,因为矩形中的每个数都为非负整数。那么,我们一开始把所有唱原创 2016-09-06 15:38:16 · 400 阅读 · 0 评论 -
NOIP提高组【JZOJ4786】小a的强迫症
DescriptionData ConstraintSotution我们不妨倒着过来想。设有现在总共有num个球,先放第n种球,那么显然第n种球的最后一个一定要放在最后一个位置,这样方案数就为Ca[n]−1num−1C^{a[n]-1}_{num-1},再往下推,现在放第n-1种球,显然,第n-1种球的最后一个一定要放在当前剩下的最后一个位置,样方案数就为Ca[n]−1num−1C^{a[n]-1}原创 2016-09-19 14:35:54 · 542 阅读 · 0 评论 -
NOIP提高组【JZOJ4787】数格子
DescriptionData Constraint每个测试点数据组数不超过10组Solution这是道简单的状态压缩dp。我们设出f[i][j]表示现在做到第i行,第i行的状态为j的方案数。第k位为1表示这里放了一块打竖的牌,这个牌的最上一行为k,第k位为0表示这里它的一行同一个地方放了个打竖的牌,或者这一行放了个打横的牌。显然f[i][j]可由f[i-1][k]转移过来。前提是若k的第x位为1,原创 2016-09-19 14:52:04 · 374 阅读 · 0 评论 -
NOIP提高组【JZOJ4788】序列
DescriptionData Constraint我们设d[i]表示a[i]要经过多少次操作后才可到达b[i],设c[i]=d[i]-d[i-1]。那么最朴素的想法答案ans=∑ni=1Max(0,c[i])\sum^{n}_{i=1}{Max(0,c[i])}。但这只是每个数都不会超过自己d[i]的情况,我们还要考虑假设某个数被某个区间包含,后来又多做了4次再次返回自已要求值的情况。显然对于现在原创 2016-09-19 17:32:30 · 454 阅读 · 0 评论 -
NOIP提高组【JZOJ4791】矩阵
Description在麦克雷的面前出现了一个有n*m个格子的矩阵,每个格子用“.”或“#”表示,“.”表示这个格子可以放东西,“#”则表示这个格子不能放东西。现在他拿着1 *2大小的木棒,好奇的他想知道对于一些子矩阵,有多少种放木棒的方案。Data Constraint30%:q<=100 100%:q<=10^5,1<=n,m<=500Solution我们考虑用矩阵前缀和来解决这道题。设f[i原创 2016-09-22 16:33:35 · 517 阅读 · 0 评论 -
NOIP提高组【JZOJ4792】整除
Description麦克雷有一个1~n的排列,他想知道对于一些区间,有多少对区间内的数(x,y),满足x能被y整除。Data Constraint30%:1<=n,m<=100 100%:1<=n,m<=2*10^5,1<=pi<=nSolution我们对于这种题考虑一下扫描线。我们先处理询问中(a[j]=k*a[i],i>j,k>1)我们将询问先按右端点排序,然后从1到n往右做,显然对于一个新原创 2016-09-22 16:44:14 · 538 阅读 · 0 评论 -
NOIP提高组【JZOJ4815】ksum
DescriptionData ConstraintSolution我们考虑用堆来解决这道题。显然我们维护一个大根堆,每次抽取最大的一个输出,并将他向左向右各移动一位加入堆中,从堆中删除堆顶,不断维护就好了。时间复杂度为O(KlogKlogK)。代码#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#inclu原创 2016-10-10 14:24:16 · 389 阅读 · 0 评论 -
NOIP提高组【JZOJ4816】label
DescriptionData ConstraintSolution我们先考虑40分的做法。显然我们设出f[i][j],表示当第i个点赋的权值为j时的方案数。那么显然这个算法的复杂度是O(N*M)的。于是我们观察f[i][j]的特殊性。我们会发现:前k* n个的方案数与后k* n个的方案数是对称的,而中间的m-2*k *n个数是相等的(其实这个用数学方法也可以证明),所以我们其实不用做m个,只用做n原创 2016-10-10 14:34:11 · 406 阅读 · 0 评论 -
NOIP提高组【JZOJ4817】square
DescriptionData ConstraintSolution我们首先可以预处理出f[i][j]表示以(i,j)为右下角的最大正方形的边长。这显然可以在输入时处理出来。f[i][j]=min(f[i−1][j−1],f[i−1][j],f[i][j−1])+1f[i][j]=min(f[i-1][j-1],f[i-1][j],f[i][j-1])+1。对于一个询问(x,y,xx,yy),我们其原创 2016-10-10 14:49:12 · 399 阅读 · 0 评论 -
NOIP提高组 鼎纹
DescriptionData ConstraintSolution我们发现,当我们搜到一个点为1,它的上方和右方的点都为0,那么显然我们只能用铜模的第一个为1的点对应覆盖上去。所以我们按照这样的思想,判断是否会减为负数即可。代码#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorit原创 2016-09-08 16:57:57 · 453 阅读 · 0 评论 -
NOIP提高组 千帆渡
DescriptionData ConstraintSolution这种题一看就知道是dp。我们设f[i][j]表示在前i个红色船中,当前匹配到的蓝色船为j(意思是前i个红色船中的某一个和j匹配)。那么显然我们分类讨论一下。当a[i]!=b[j]时,f[i][j]=f[i-1][j]。当a[i]=b[j]时,f[i][j]=Max(f[i−1][k])Max(f[i-1][k])+1(j>k,b[j原创 2016-09-08 17:28:43 · 607 阅读 · 0 评论 -
NOIP提高组【JZOJ4797】就是乘法
Description这一天富爷又来找大头玩乘法游戏,然而不同于富爷的口算能力,大头只能列下了式子。第一题是432 × 5678: 432 5678 ------- 3456 3024 2592 2160 ------- 2452896 作为环保主义者的大头,认为最后一行的答案一定不能有原创 2016-09-24 19:37:00 · 281 阅读 · 0 评论 -
NOIP提高组【JOZJ4798】天使的分裂
DescriptionData ConstraintSolution这一看就知道是一道矩阵乘法的题。显然Fn=∑ni=0fi∗fn−i=∑ni=0fi∗(fn−i−1+fn−i−2)=∑ni=0fi∗fn−i−1+∑ni=0fi∗fn−i−2=Fn−1+Fn−2+fn∗f0=Fn−1+Fn−2+fnF_n=\sum^n_{i=0}{f_i*f_{n-i}}=\sum^n_{i=0}{f_i*(f_{原创 2016-09-24 20:04:18 · 520 阅读 · 0 评论 -
NOIP提高组【JZOJ4799.】我的快乐时代
DescriptionData ConstraintSolution这道题我们考虑一下类似数位dp的东西,答案=1~r的答案-1~l-1的答案,于是我们分开出答案,这里只举l-1的例子。我们枚举位数。1、显然,在位数l-1的长度>k的时候,对于每两对di,dk−i+1d_i,d_k-i+1,他们出现在1~l-1中的数量显然为9∗10k−39*10^{k-3}(因为第一位不能为0),特别的,当i=1时原创 2016-09-24 20:25:05 · 417 阅读 · 0 评论