A Sweet Journey
Problem Description
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)
Input
In the first line there is an integer t (1≤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,Ri, which represents the interval [Li,Ri] is swamp.
1≤n≤100,1≤L≤105,1≤A≤10,1≤B≤10,1≤Li
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[100010];
int main()
{
int T;
cin>>T;
for(int k=1; k<=T; k++)
{
memset(a,0,sizeof(a));//0代表休息,1代表耗费力气
int n,x,y,l;
int zuo,you;
scanf("%d%d%d%d",&n,&x,&y,&l);
for(int i=0; i<n; i++)
{
scanf("%d%d",&zuo,&you);
for(int j=zuo; j<=you-1; j++)//将区间简化为左端点记录在数组中;
{
a[j]=1;
}
}
int po=0,min=y;
for(int i=0; i<l; i++)
{
if(a[i]==0)
po+=y;//休息,加体力;
if(a[i]==1)
po-=x;//消耗体力;
if(min>po)
min=po;//找出最小临界点即可;
}
printf("Case #%d: ",k);
if(min>=0)
printf("0\n");//最小为正就不需要带体力值;
if(min<0)
printf("%d\n",-min);
}
return 0;
}