2017.07.06【NOIP提高组】模拟赛B组

T1:

 FJ出去砍木材去了,把N(2<=N<=100,000)头牛留在家中吃草,当他回来的时候,发现奶牛们都跑到花园里吃花去了,为了减少损失,FJ打算把牛移到牛棚中去。

  每头牛的位置离牛棚需要Ti分钟(1<=Ti<=2,000,000),而且在等待被移走的过程中,每分钟破坏Di(1<=Di<=100)朵花,无论多么努力FJ一次只能移动一只奶牛,移动一只奶牛到牛棚需要2×Ti分钟(来回各一次)。
  写一个程序安排移动顺序使得损失的花最少。

Input

  第1行输入一个整数N
  第2到N+1行每行包含两个整数Ti和Di

Output

  输出一个整数表示最少损失的花的数量

Sample Input

6
3 1
2 5
2 3
3 2
4 1
1 6
【样例说明】
FJ按照6、2、3、4、1、5的顺序移走奶牛

想法:
推不等式设第一头牛时间为a,价格为b
第二头牛时间为c,价格为d,
则必有2ad<<2bc
ad《bc
a《bc/d
a/b《c/d
多头牛同理
所以把时间/价格从小到大排序即可
T2:最高的奶牛
Description

  FJ有N(1 <= N <= 10,000)头奶牛,编号为1到N,站成一条直线。每头奶牛自己的身高(正整数,秘密未知),告诉你最高奶牛的身高H及位置I,同时告诉你R(0 <= R <= 10,000)组信息,每组信息由两个数ai,bi组成,表示奶牛ai可以看到奶牛bi,这就意味着奶牛bi的身高至少和奶牛ai的身高一样高,同时奶牛ai到奶牛bi之间的奶牛身高必须低于奶牛ai
  现在要你求出每头奶牛最高可能的高度,保证有解。

Input

  第1行输入4个空格隔开的整数N,I,H,R
  第2到R+1行,每行两个空格隔开的不同的整数A,B(1<=A,B<=N),表示奶牛A能看到奶牛B

Output

  第1到N行,每行一个整数表示每只奶牛最高可能的高度。

Sample Input

9 3 5 5
1 3
5 3
4 3
3 7
9 8

Sample Output

5
4
5
3
4
4
5
5
5
想法:
设每头牛起始高度为h,则每个关系令l+1~r-1的牛高度-1,注意(l,r)去重,
T3:排队Description

  每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛.但是为了避免水平悬殊,牛的身高不应该相差太大.
  John 准备了Q (1 <= Q <= 180,000) 个可能的牛的选择和所有牛的身高 (1 <=身高 <= 1,000,000). 他想知道每一组里面最高和最低的牛的身高差别.

Input

  第一行: N 和 Q.
  第2..N+1行: 第i+1行是第i头牛的身高.
  第N+2..N+Q+1行: 两个整数, A 和 B (1 <= A <= B <= N), 表示从A到B的所有牛.

Output

  第1..Q行: 所有询问的回答 (最高和最低的牛的身高差), 每行一个.

Sample Input

6 3
1
7
3
4
2
5
1 5
4 6
2 2
想法:
线段树维护区间最大最小值即可

你可能感兴趣的:(2017.07.06【NOIP提高组】模拟赛B组)