您的位置:首页 > 其它

0526 HDU#5477&G2n#A-A Sweet Journey

2017-06-02 23:18 134 查看
摘要:
按照一定的消耗方式,如何最少的使用能量。
原题目链接:HDU
- 5477


 Sweet
Journey

Master Di plans to take his girlfriend for a travel by bike. Their journey, which can be seen as a line segment of length L, is a road of swamps and flats. In the swamp, it takes A point strengths per meter for
Master Di to ride; In the flats, Master Di will regain B point strengths per meter when riding. Master Di wonders:In the beginning, he needs to prepare how much minimum strengths. (Except riding all the time,Master Di has no other choice) 

InputIn the first line there is an integer t (1≤t≤501≤t≤50),
indicating the number of test cases. 

For each test case: 

The first line contains four integers, n, A, B, L. 

Next n lines, each line contains two integers: Li,RiLi,Ri,
which represents the interval [Li,Ri][Li,Ri] is
swamp. 
1≤n≤100,1≤L≤105,1≤A≤10,1≤B≤10,1≤Li<Ri≤L1≤n≤100,1≤L≤105,1≤A≤10,1≤B≤10,1≤Li<Ri≤L.

Make sure intervals are not overlapped which means Ri<Li+1Ri<Li+1 for
each i (1≤i<n1≤i<n). 

Others are all flats except the swamps. 

OutputFor each text case: 

Please output “Case #k: answer”(without quotes) one line, where k means the case number counting from 1, and the answer is his minimum strengths in the beginning. 

Sample Input
1
2 2 2 5
1 2
3 4


Sample Output
Case #1: 0
来源: https://cn.vjudge.net/problem/description/56056?1495774615000

题目认识:
假定开始时已经是恰好最优状态 并设为状态0,依照消耗方式进行模拟。最后看状态的值是多少即可确定开始时的最低是多少。

注意:
计算需要补给的是多少。其他的不用改变状态值。

日期:
2017 5 26
代码:

#include <cstdio>

#include <algorithm>

#define MAX 0




int getans(){

int n,A,B,L;

int need=0,s=0;//strength

int li,ri,lastRi=0;

scanf("%d%d%d%d",&n,&A,&B,&L);

while(n--){

scanf("%d%d",&li,&ri);

s+=B*(li-lastRi);

s-=A*(ri-li);

if(s<0){need+=s;s=0;}

lastRi=ri;

}


return -need;

}

int main(){

int t;

scanf("%d",&t);

for(int i=1;i<=t;i++){

printf("Case #%d: %d\n",i,getans());

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  A+B problem