2017.07.15【NOIP提高组】模拟赛B组小结

来源:互联网 发布:宿迁市12345网络问政 编辑:程序博客网 时间:2024/06/06 07:22

今天题有点多啊啊~汪~
四道,下午AK至5:13

T1jzoj1285. 奶酪厂

Description

  奶牛买了一个奶酪厂生产奶酪,已知每周生产一单位奶酪的费用为C_i,每周可以生产任意数量的奶酪,现在要为接下来N(1<=N<=10,000)周做生产计划。
  厂里有一个仓库,存储量无穷大,可以用来存储暂时不用的奶酪,每单位奶酪每周花费S(1<=S<=100)。
  告诉你每周客户的需求量Y_i(0<=Y_i<=10,000),请你帮忙用最少的钱满足这些需求。

Input

  第1行:两个空格隔开的整数N,S
  第2-N+1行:每行两个空格隔开的整数C_i和Y_i。

Output

  输出一个整数表示最少花费。注意答案可能会超出longint范围。

Sample Input

4 5
88 200
89 400
97 300
91 500

Sample Output

126900

Data Constraint

Hint

【样例说明】
  第一周生产200单位,第二周生产700单位,400给客户,300存在仓库里留给第三周,第四周生产500单位。
想法:
贪心,记录前面最小的c[x]+(i-x)*s,跟当前c[i]比较
DP+单调队列:队列按照位置的增加而c[i]如果递减,则放弃之

T2jzoj1286. 太空电梯

Description

  奶牛们想用K(1<=K<=400)中石块制造一个太空电梯去太空旅行,每种石块有自己的高度h_i(1<=h_i<=100)和数量c_i(1<=c_i<=10),为了避免宇宙射线的干扰,每种石块不能超过最高可以达到的高度a_i(1<=a_i<=40000)。
  帮助奶牛用石块堆积一个最高的太空电梯。

Input

  第1行:一个整数K
  第2到K+1行:每行3个用空格隔开的整数h_i,a_i,c_i

Output

  输出一个高度H,表示最大高度。

Sample Input

3
7 40 3
5 23 8
2 52 6

Sample Output

48

Data Constraint

Hint

【样例说明】
  从上到下依次是6个3号石块、3个1号石块和3个2号石块,注意放4个2号石块在3个1号石块的下面是不行的,因为1号石块最高不能超过40,而现在最上面的1号石块高度达到41,所以不行。
想法:
判定性DP,以a[i]为第一关键字快排,
设f[i,j]为到第i种石块取到j高度能否可行

T3jzoj3526. 【NOIP2013模拟11.7A组】不等式(solve)

Description

小z热衷于数学。

今天数学课的内容是解不等式:L<=S*x<=R。小z心想这也太简单了,不禁陷入了深深的思考:假如已知L、R、S、M,满足L<=(S*x)mod M<=R的最小正整数x该怎么求呢?

Input

第一行包含一个整数T,表示数据组数,接下来是T行,每行为四个正整数M、S、L、R。

Output

对于每组数据,输出满足要求的x值,若不存在,输出-1。

Sample Input

1

5 4 2 3

Sample Output

2

Data Constraint

30%的数据中保证有解并且答案小于等于10^6;

另外20%的数据中保证L=R;

100%的数据中T<=100,M、S、L、R<=10^9。
想法:
l<=s*x mod m<=r转化
l<=s*x-m*y<=r转化
-l<=my-sx<=-r,这是[l,r]没有s的倍数
-l+kx<=my-sx+kx<=-r+kx转化
(-l mod s)<=my mod s <=(-r mod s)
等于求l<=s*x mod m<=r
递归求解即可
边界l=0,s mod m=0
s:=s mod m;
l<=s*x mod m<=r的简单解x=(l-1)div s+1;
如果简单解符合要求,返回
否则求y,此时 简单解x=(r+m*y)div s

T4jzoj3505. 【NOIP2013模拟11.4A组】积木(brick)

Description

小A正在搭积木。有N个位置可以让小A使用,初始高度都为0。小A每次搭积木的时候,都会选定一个拥有相同高度的区间[A..B],然后将位置[A+1..B-1]上的所有积木的高度加一。不幸的是,小A把积木搭好之后没多久,小A调皮的弟弟就将其中若干个位置上的积木弄倒了。小A想知道他原来的积木是如何摆放的,所以他求助于你,请你告诉他原来有多少种可能的摆法。
这里写图片描述
Input

第一行为一个正整数N,表示小A有N个位置。

第二行有N个由空格分隔的整数Hi,表示第i个位置的积木高度。-1表示这个位置上的积木已经被弄倒了。

Output

唯一的一行,输出包括可能的摆法mod 1,000,000,007的结果。

Sample Input

输入1:

3

-1 2 -1

输入2:

-1 -1 -1

输入3:

6

-1 -1 -1 2 -1 -1

Sample Output

输出1:

0

输出2:

2

输出3:

3

Data Constraint

对于50%的数据 1<=N<=1000 -1<=Hi<=1000

对于80%的数据 1<=N<=10000

对于100%的数据 1<=N<=20000 -1<=Hi<=10000
想法:
水法:DP
设f[i,j]表示到第i个点位置,积木高度为j的方案总数
很明显因为只能修改一段高度相同的区间,所以height[i]-height[i-1]<=1,
所以f[i,j]=f[i-1,j-1~j+1]得到
输出f[n,0]
打滚动+减少mod的次数

阅读全文
1 0
原创粉丝点击