Tyvj Q1028(调整法)
来源:互联网 发布:黑马程序员培训怎么样 编辑:程序博客网 时间:2024/05/17 23:11
Q1028 - Unit7 - 堆积木
From Admin Normal (OI)总时限:10s 内存限制:128MB 代码长度限制:64KB
描述 Description
现在有N块积木,每块积木都有自重Weight和正常状态下的承重能力Force,现在要把这N块积木垂直的垒在一起,但是有可能某块积木的负重超过了它在正常状态下的承重能力,那么这块积木就有被压坏的危险,请问应该如何堆这N块积木使得N块积木中最大的压力指数最小。
这里定义压力指数为该积木的负重与其在正常状态下的承重能力的差值。
这里定义压力指数为该积木的负重与其在正常状态下的承重能力的差值。
输入格式 InputFormat
第一行为一个正整数N,表示有N块积木。
第二行到第 N+1 行,每行两个整数数,分别是第i个积木的Weight和Force
第二行到第 N+1 行,每行两个整数数,分别是第i个积木的Weight和Force
输出格式 OutputFormat
输出共一行,表示最大压力指数的最小值。
样例输入 SampleInput [复制数据]
2100 01000 100
样例输出 SampleOutput [复制数据]
0
数据范围和注释 Hint
样例解释:
把Weight为100的积木放在Weight为1000的积木上,下面积木的压力指数为100 - 100 = 0,另外一块积木的压力指数和它的相等。
对于30% 的数据,1 <= N <= 3
对于60% 的数据,1 <= N <= 1000
对于100%的数据,1 <= N <= 50000
对于100%的数据,1 <= Weight <= 10000,1 <= Force <= 10^9
把Weight为100的积木放在Weight为1000的积木上,下面积木的压力指数为100 - 100 = 0,另外一块积木的压力指数和它的相等。
对于30% 的数据,1 <= N <= 3
对于60% 的数据,1 <= N <= 1000
对于100%的数据,1 <= N <= 50000
对于100%的数据,1 <= Weight <= 10000,1 <= Force <= 10^9
时间限制 TimeLimitation
1s
来源 Source
tjz
对于最优方案:
因为F(N)-(w1+w2+..wn-1)<F(1)-(w2+...+wn-1+wn)
化简得 F(n)+wn<F1+w1
调整ing。。。
也就是说对于最优方案有 Fi+wi<Fi-1+wi-1
Program block;uses math;const maxn=50000;var n,i,j,ans,totw:longint; w,f:array[1..maxn] of longint;procedure qsort(l,r:longint);var i,j,m,p:longint;begin i:=l; j:=r; m:=w[(i+j) div 2]+f[(i+j) div 2]; repeat while (w[i]+f[i]<m) do inc(i); while (w[j]+f[j]>m) do dec(j); if i<=j then begin p:=w[i];w[i]:=w[j];w[j]:=p; p:=f[i];f[i]:=f[j];f[j]:=p; inc(i);dec(j); end; until i>j; if (l<j) then qsort(l,j); if (i<r) then qsort(i,r);end;begin read(n); for i:=1 to n do begin read(w[i],f[i]); end; qsort(1,n); ans:=-f[1]; totw:=0; for i:=1 to n do begin ans:=max(ans,totw-f[i]); inc(totw,w[i]); end; writeln(ans);end.
- Tyvj Q1028(调整法)
- TYVJ题解(P1025)
- Tyvj P2058(Map)
- Tyvj P2068(寻宝)
- P1005 采药(Tyvj)
- TYVJ
- tyvj P1431 [Tyvj Jan]分配任务(最大流)
- Tyvj Q1033(线性扫描)
- Tyvj P2067(质因数分解)
- 第K极值(Tyvj)
- tyvj 1305(单调队列)
- TYVJ题解(P1001),绝对最优解!
- tyvj p1214硬币问题(完全背包)
- Tyvj P2059(传递闭包)
- Tyvj Q1027(多关键字排序)
- Tyvj Q1043(跳格游戏)
- Tyvj Q1024(double的使用)
- Tyvj P2064(点的向上维护)
- linux grub启动如何进入完整多用户控制台模式
- 栈与堆的区别(转)
- C# 程序文件
- [探讨] 代码审查:究竟是好主意还是坏主意?
- javascript Number类型的扩展
- Tyvj Q1028(调整法)
- Android多线程,让耗时的操作去后台运行吧
- 模拟发扑克牌程序
- 如何理解C和C++的复杂类型声明
- 读懂diff
- char与CString字符串互用
- 使用Java VisualVM远程监控服务
- 汉诺塔程序
- .net页面缓存