NOIP
Neo__Z
这个作者很懒,什么都没留下…
展开
-
NOIP2014 飞扬的小鸟 动态规划
解题报告:这道题很容易想出一个O(NM2)的动规 即f[i][j]表示飞到i列j高度位置需要的最小点击数,则 f[i][j]=minf[i−1][j−k∗x]+k,1≤k≤j/x(O(M))f[i][j]=min{f[i−1][j−k∗x]+k},1≤k≤j/x(O(M))(不考虑掉下来的情况)这显然会超时。仔细分析,我们可以发现i-1列的格子被计算了很多次,越下面的格子被算的次数越多到最下面时原创 2017-07-29 15:24:22 · 453 阅读 · 0 评论 -
NOIP2012 开车旅行 【倍增】
70分算法暴力预处理出对于每一个点他右边最近、次近的点的编号,对于每一个询问,暴力模拟开车过程即可。100算法和上面一样我们得预处理出每一个点最近、次近的点得编号,但我们不可以使用O(n2n^2)的算法。预处理方法一:线段树。线段树维护三个值,区间内最小值、最大值、数的个数。从右往左找(n~1),当找到第i个点时,第i+1个点到第n个点的高度值已经更新过了线段树。通过线段树找出高度比Hi大的最小、次原创 2017-10-23 20:22:52 · 304 阅读 · 0 评论 -
NOIP2016 T4 组合数问题
解题报告如果你知道Cji=Cji−1+Cj−1i−1C_i^j=C_{i-1}^j+C_{i-1}^{j-1},那这道题就是菜题了。 时间复杂度O(n2)O(n^2)#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using name原创 2017-07-28 11:56:23 · 301 阅读 · 0 评论 -
NOIP2015 T6 运输计划 【树上差分】
解题思路:这道题空找一条边不好找,注意到他是使最大的最小,所以不妨考虑二分答案。 设二分的答案为t,则对于每一条len>td的链,必须要修改其上的一条边。如果共要修改m条链,那么修改的那条边一定是这m条链的交集,那么问题就变成了求m条链的交集,看最长减去交集中最长的一条边是否小于t; 那如何求交集呢?可以用树上差分: 设tag[v]表示m条链经过(v,fa[v])这条边的次数,对于每条链(x,原创 2017-10-20 21:22:03 · 303 阅读 · 0 评论 -
NOIP2016 T6 愤怒的小鸟
解题报告:仔细思考可以发现,这个题目应该是可以状压DP的。 (又是dp ,今年考了两道dp,还都是新类型)f[s]表示被覆盖的状态为s的最少猪数,然后预处理一个g[i][j]表示选择了i和j之后的抛物线经过的猪的状态集合(是一个01状态),如g[3][5]=(21)10=(10101)2(21)_{10}=(10101)_2表示经过第3、5只猪的抛物线可以打到第第1,3,5只猪。容易得出: f原创 2017-07-29 11:22:24 · 485 阅读 · 0 评论 -
NOIP2016 T5 蚯蚓
解题报告如果光用优先队列会超时。 可以发现如果先排序,那每条蚯蚓按比例切开后的[px]和x-[px]仍分别单调递减,所以可以开3个队列分别放原始长度,[px]部分和x-[px]部分,每次取三个队首中最长的即可。#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #inc原创 2017-07-28 15:09:35 · 400 阅读 · 0 评论 -
NOIP2016 T3 换教室
解题报告:noip首次考期望dp先用floyd预处理一下。 设f[i][j][k]表示第i个时间段,选了j个教室要申请(不一定成功),k表示i申请或不申请。 我们从i推到i+1,如果要推到f[i+1][j][0]的话,那么第i+1个时间段肯定在a[i+1]。这个可以从i的0状态和1状态推过来,如果从0推过来,那么i时间段肯定在a[i]这个地方,那么期望是d[a[i]][a[i+1]],概率是1。如果原创 2017-07-28 11:52:32 · 284 阅读 · 0 评论 -
NOIP2016 T2 天天爱跑步
解题报告:我们思考一下从x到y的路径,这个可以拆成从x到lca的路径和从lca到y的路径,这个很明显。 如果一个点i在从x到lca 的路径可以检测到的话,那么就有deep[i]+w[i]=deep[x]。 如果一个点i在从lca到y的路径上可以检测到的话,那么就有deep[i]-w[i]=deep[y]-t(t表示x到y的路径长度)。 对于每个点i,我们已知deep[i],w[i],只需要在路径上标原创 2017-07-28 11:49:31 · 361 阅读 · 0 评论 -
NOIP2016 T1 玩具谜题
模拟即可。 注意%n==0时要跳回n。 或用加减代替mod#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<ctime> #include<cmath> #include<algorithm> #include<cctype> #include<iom原创 2017-07-28 11:44:21 · 290 阅读 · 0 评论 -
NOIP2015 子串 【动态规划】
题目描述有两个仅包含小写英文字母的字符串 A 和 B 。现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的字符串,请问有多少种方案可以使得这个新串与字符串 B 相等?注意:子串取出的位置不同也认为是不同的方案。输入格式第一行是三个正整数 n,m,k,分别表示字符串 A 的长度,字符串 B 的长度,以及问题描述中所提到的原创 2017-11-04 15:20:23 · 347 阅读 · 1 评论