zjc讲题
NOIP基础题及好题选讲
Problem 1
你有\(n\)个物品,其中第\(i\)个物品有一个价格\(v_i\),每种物品最多只能买一次。你现在有\(V\)元,请问在总价格不超过\(V\)的情况下,你能够买的物品的方案数。
数据范围:
\(1 \leq n \leq 40\)
\(1 \leq v_i \leq 10^9\)
Problem 2
你有一个点数为\(n\)边数为\(m\)的无向图,你需要用\(k\)个color把图染色,使得任意两个相邻的节点之间颜色不相同。请你输出合法的染色方案数模6的结果。
数据范围:
\(1 \leq n \leq 10^5\)
\(1 \leq m \leq 5 * 10^5\)
Problem 3
有一张\(n\)个点\(m\)条边的带权有向图,第\(i\)条道路从\(a_i\)连向\(b_i\),道路长度为\(l_i\)。每个顶点都有一个加油站,其中第 \(i\) 个景点的加油站的费用为 \(p_i\),加油量为 \(c_i\)。若汽车在第 \(i\) 个景点加油,则需要花费 \(p_i\)元钱,之后车的油量将被加至油量上限与\(c_i\)中的较小值。不过如果加油前汽车油量已经不小于 \(c_i\),则不能在该景点加油。
小 C 准备来旅游。他的汽车油量上限为 \(C\)。旅游开始时,汽车的油量为 \(0\)。在旅游过程中:
1、当汽车油量大于\(0\) 时,汽车可以沿从当前景区出发的任意一条道路到达另一个景点(不能只走道路的一部分),汽车油量将减少\(1\);
2、当汽车在景点 \(i\) 且当前油量小于 \(c_i\) 时,汽车可以在当前景点加油,加油需花费 \(p_i\)元钱,这样汽车油量将变为 \(\min(c_i,C)\)。
一次旅游的总花费等于每次加油的花费之和,旅游的总路程等于每次经过道路的长度之和。注意多次在同一景点加油,费用也要计算多次,同样地,多次经过同一条道路,路程也要计算多次。
有\(T\)次询问,每次询问给定起点\(s_i\),出发时所带的钱\(q_i\)和目标距离\(d_i\),问从起点\(s_i\)出发,经过距离至少\(d_i\)的路径,钱包里所剩的钱最多是多少?
数据范围:
\(2≤n≤1002\)
\(1≤m≤10001\)
\(1≤C,T≤10^5\)
\(1≤a_i,b_i,l_i≤n\)
\(1≤p_i,c_i≤10^5\)
\(1≤si≤n\)
\(1 \leq q_i \leq n^2\)
\(1≤di≤10^9\)
Problem 4
Lyra 做了个梦,梦见自己身处一片蒲公英花田里,拥有魔法的自己可以让蒲公英们可以实现自己的愿望。每个蒲公英有三个属性\(s_i,p_i,t_i\),对于第\(i\) 株蒲公英,只有当 Lyra 的魔法值达到至少 \(s_i\) 的时候才有能力去完成这株蒲公英的愿望,当然需要花费她 \(t_i\) 天的时间,完成愿望后蒲公英作为奖励,在随风飘散的同时还会帮助 Lyra 继续提升自己,Lyra 的魔法值会增加 \(p_i\)(注意帮蒲公英实现愿望不需要消耗魔法值)。
Lyra 初始时拥有魔法值 \(R\),她想知道 \(T\) 天之内她最多能获得多少魔法值,你只需要输出她最终的能力值和完成任务的顺序即可。
数据范围:
\(1≤n≤1000\)
\(1≤ti,T≤1000\)
\(1≤si,R≤10^9\)
\(1≤pi≤10^6\)
Problem 5
master 对树上的求和非常感兴趣。他生成了一棵有根树,并且\(m\)次询问这棵树上一段路径上所有节点深度的 \(k\) 次方和,而且每次的\(k\)可能是不同的。此处节点深度的定义是这个节点到根的路径上的边数。 他把这个问题交给了 pupil,但 pupil 并不会这么复杂的操作,你能帮他解决吗?
数据范围:
\(1 \leq n,m \leq 300000\)
\(1 \leq k \leq 50\)
Problem 6
在数轴上有\(n\)个小人,第\(i\)个人现在在\(p_i\)位置,速度是\(v_i\)(速度的正负代表不同的方向)。如果某一时刻两个人在同一位置,那么就会发生碰撞。
如果现在小j可以使用能力,使得其中\(k\)个人凭空消失,那么最多会有多长时间内,没有任何两个人会碰撞呢?
数据范围:
\(1 \leq k \leq n \leq 100000\)
Problem 7
有一个\(n*m\)的网格图,给定相邻的格子之间墙的高度,并且默认边界的墙的高度是无穷大的。再给定水位上限\(H\),问有多少种可能的水位。
数据范围:
\(1 \leq n,m \leq 1000\)
Problem 8
一个\(n\)行\(m\)列的方格,每个方格中填入一个正整数,现在给定每一行以及每一列的最大值是多少。问你有多少种可能的填入方案,使得每一行以及每一列的最大值恰好为给定的这些数。
数据范围:
\(1 \leq n,m \leq 100000\)
Problem 9
一个有正整数构成的\(n\)元序列,你需要支持如下\(q\)次操作:
<1> 输入\(l,r,x\),询问\([l,r]\)中是否可以修改一个数(或不修改)使得这个区间的gcd恰好为\(x\)。
<2> 修改序列中一个元素的值。
数据范围:
\(1 \leq n \leq 5 * 10^5,1 \leq q \leq 4 * 10^5\)
Problem 10
有一个长度很大的二进制串,初始时它的每一位都为 0。现在有 \(m\) 个操作,其中第 \(i\) 个操作是将这个二进制串的数值加 \(2^{a_i}(0≤ai≤n)\),或者说,给第 \(a_i\) 位加上 \(1\)并进位,我们称每次操作的代价是这次操作改变的位的数量。例如,当前的二进制串是 \(101111011110111\) 时,如果给它加上 \(2^0\),串就变成了 \(110001100011000\),其中从低到高第 \(0,1,2,3\) 位发生了改变,那么这次操作代价为 \(4\)。
我们以一定概率执行这些操作:第 \(i\) 个操作有 \(p_i\) 的概率执行,否则不执行。请求出所有执行的操作的代价和的期望。
数据范围:
对于\(95\%\)的数据,\(1 \leq n,m \leq 2000\)
对于\(100\%\)的数据,\(1 \leq n,m \leq 200000\)

浙公网安备 33010602011771号