HDU 4296 Buildings 제3 7 회 ACM/ICPC 청 두 지역 사 이 버 전 1009 문제(욕심)
5754 단어 Build
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 155 Accepted Submission(s): 72
Problem Description
Have you ever heard the story of Blue.Mary, the great civil engineer? Unlike Mr. Wolowitz, Dr. Blue.Mary has accomplished many great projects, one of which is the Guanghua Building.
The public opinion is that Guanghua Building is nothing more than one of hundreds of modern skyscrapers recently built in Shanghai, and sadly, they are all wrong. Blue.Mary the great civil engineer had try a completely new evolutionary building method in project of Guanghua Building. That is, to build all the floors at first, then stack them up forming a complete building.
Believe it or not, he did it (in secret manner). Now you are face the same problem Blue.Mary once stuck in: Place floors in a good way.
Each floor has its own weight w
i and strength s
i. When floors are stacked up, each floor has PDV(Potential Damage Value) equal to (Σw
j)-s
i, where (Σw
j) stands for sum of weight of all floors above.
Blue.Mary, the great civil engineer, would like to minimize PDV of the whole building, denoted as the largest PDV of all floors.
Now, it’s up to you to calculate this value.
Input
There’re several test cases.
In each test case, in the first line is a single integer N (1 <= N <= 10
5) denoting the number of building’s floors. The following N lines specify the floors. Each of them contains two integers w
i and s
i (0 <= w
i, s
i <= 100000) separated by single spaces.
Please process until EOF (End Of File).
Output
For each test case, your program should output a single integer in a single line - the minimal PDV of the whole building.
If no floor would be damaged in a optimal configuration (that is, minimal PDV is non-positive) you should output 0.
Sample Input
3 10 6 2 3 5 4 2 2 2 2 2 3 10 3 2 5 3 3
Sample Output
1 0 2
Source
2012 ACM/ICPC Asia Regional Chengdu Online
Recommend
liuyiding
욕심 이라는 제목.
물 많 습 니 다.정렬 방법 은 코드 를 봅 니 다.
나 는 하나하나 시험 해 보 았 지만 아직 증명 되 지 않 았 다.
//1009
#include<stdio.h>
#include<iostream>
#include<map>
#include<set>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
using namespace std;
const int MAXN=100010;
struct Node
{
int w,s;
}tt[MAXN];
bool cmp2(Node a,Node b)
{
return a.w - b.s< b.w - a.s;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d%d",&tt[i].w,&tt[i].s);
sort(tt,tt+n,cmp2);
long long ans=0;
long long s=0;
for(int i=0;i<n;i++)
{
if(s-tt[i].s>ans)ans=s-tt[i].s;
s+=tt[i].w;
}
printf("%I64d
",ans);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity에 안드로이드를 구축하고 실행하면 소음에 문제가 생길 수 있습니다다음 이미지는 UnityEditor의 작업 화면입니다. 다음은 안탁실 기구가 건설된 후 집행된 화면이다. 참고로 환경은... Unity5.3.5 Android4.4.2 XperiaZ SO-02E 그렇습니다. 안드로이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.