- 博客(13)
- 收藏
- 关注
原创 NOIP2016提高A组集训第1场 【JZOJ4824】配对游戏
Description流行的跳棋游戏是在一个有m*n个方格的长方形棋盘上玩的。棋盘起初全部被动物或障碍物占满了。在一个方格中,‘X’表示一个障碍物,一个‘0’~‘9’的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物。一对动物只有当它们属于同一种类时才可以被消去。消去之后,他们所占的方格就成为空方格,直到游戏结束。要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻,或它们之间
2016-10-29 16:45:33 330
原创 NOIP2016提高A组集训第1场【JZOJ4823】小W学物理
Description为了测试小W的物理水平,Mr.X在二维坐标系中放了N面镜子(镜子坐标绝对值不超过M),镜子均与坐标轴成45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。现在有一条光线从原点沿X轴正方向射出,求走过T路程后所在位置。
2016-10-29 16:40:58 359
原创 NOIP2016提高A组集训第1场【JZOJ4822】完美标号
Description给定M个二元组(A_i, B_i),求X_1, …, X_N满足:对于任意(A_i, B_i),有|XAi−XBi|=1|X_{A_i} - X_{B_i}| = 1成立。Solution我们将有约束的点相连,模拟X取1或0,判断是否成立即可。代码#include<iostream>#include<cmath>#include<cstdio>#include<cstri
2016-10-29 16:35:07 324
原创 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
原创 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
原创 NOIP提高组【JZOJ4815】ksum
DescriptionData ConstraintSolution我们考虑用堆来解决这道题。显然我们维护一个大根堆,每次抽取最大的一个输出,并将他向左向右各移动一位加入堆中,从堆中删除堆顶,不断维护就好了。时间复杂度为O(KlogKlogK)。代码#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#inclu
2016-10-10 14:24:16 389
原创 4806. 打工
DescriptionData Constraint对于100%的数据,N ≤ 10000 , 数据保证询问的数列是一个有效的序列。 详细情况见下表。 Solution这道题我们用数位dp来解决。设f[i][j]表示当前处理至第i位,前i位的最大值为j的后n-i位的方案数。那么显然f[i][j]=f[i+1][j+1]+f[i+1][j]*j转移。那么对于每一位a[i],我们计算当前前i位与给出
2016-10-06 19:48:23 329
原创 NOIP提高组【JZOJ4814】tree
Description给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1。每个结点上有一个物品,第i 个结点上的物品价值为vi。你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的路径上所有的点都被选中,并且选中结点的个数不能超过给定的上限lim。在此前提下,你需要最大化选中结点上物品的价值之和。求这个最大的价值之和。Data Constraint对于前20% 的数
2016-10-05 16:13:54 429
原创 NOIP提高组【JZOJ4813】running
Description小胡同学是个热爱运动的好孩子。 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由n 个格子排成的一个环形,格子按照顺时针顺序从0 到n- 1 标号。 小胡观察到有m 个同学在跑步,最开始每个同学都在起点(即0 号格子),每个同学都有个步长ai,每跑一步,每个同学都会往顺时针方向前进ai 个格子。由于跑道是环形的,如果 一个同学站在n-1
2016-10-05 16:09:10 522
原创 NOIP提高组【JZOJ4812】string
Description给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位。由于答案可能很大,模109+710^9 + 7 输出。Data Constraint对于前30% 的数据,n<=5 对于100% 的数据,k<=n<=10^5Solution这道题我们直接算就好啦。考虑将数量不断逼近
2016-10-05 15:43:52 584
原创 NOIP提高组【JZOJ4811】排队
DescriptionData ConstraintSolution对于询问一,我们只要用堆来查看一下当前没有人的优先级最小的是哪个房间,逐个放进去就好。那对于询问二,我们用LCA计算一下该点到根的路径上的离当前点最远的点,将它往下跳一个格即可。代码#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#inclu
2016-10-04 21:36:38 375
原创 NOIP提高组【JZOJ4810】道路规划
DescriptionData ConstraintSolution这道题我们可以将题目想成一个个点对,设编号为i的南北城市在南北分别为(ai_i,bi_i),那么显然一个相交的点对(i,j)为(aj_j>ai_i,bi_i>bj_j),那么我们可以将点对按a的大小排序,对b做一遍最长不下降子序列即可。时间复杂度O(NlogNlogN).代码#include<iostream>#include<c
2016-10-04 21:29:25 364
原创 NOIP提高组【JZOJ4809】挖金矿
DescriptionData ConstraintSolution这道题我们用二分答案就好。每次二分一个平均值,从1到n扫一下,选取一个总和比平均值个数大最多的数,若没有,则选择一个总和比平均值 个数相差最小的数即可。时间复杂度O(N*Hlog109log10^9)。代码#include<iostream>#include<cmath>#include<cstring>#include<cs
2016-10-04 21:22:14 465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人