码迷,mamicode.com
首页 > 其他好文 > 详细

涛神的城堡

时间:2017-07-30 21:08:47      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:fine   ssi   ring   string   print   new   java   set   nbsp   

涛神的城堡

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 54   Accepted Submission(s) : 13

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

涛神有一个城堡给游客参观,涛神特别的强壮,涛神的强壮值是strong,每个游客也有自己的强壮值,涛神为了赚钱,他会选取多个区间去打劫别人,所以如果比涛神弱的,他就要收取他们的强壮值的差值,但是还是有比涛涛强壮的,所以涛涛打劫那个人的话,涛涛要给那个人他们的强壮值的差值,所以涛涛可以选择打不打劫那个区间的人,(人是可以重复打劫的,区间不行)涛涛最多能赚多少钱呢?

Input

第一行给你三个整型变量n,m,strong(1≤n,m≤10000,1≤strong≤200),
第二行给你n个人的强壮值a1,a2,...,an(1≤ai≤200).
接下来m行给你两个整型变量l,r(1≤li≤ri≤n),代表区间里包括了第l个游客到第r个游客,涛涛可以选择打不打劫这个区间

Output

输出涛涛可以打劫到的最多的钱

Sample Input

5 4 10
9 12 9 7 14
1 2
4 5
3 4
1 4

Sample Output

7

题目有毒,题目说区间不行,但必须按可以取重复的区间才能A;
 1 #include <iostream> 
 2 #include <cstdio>
 3 #include <cstring>
 4 #define M 10015
 5 #define  ll long long int
 6 using namespace std;
 7 int a[M];
 8 int main(){
 9     int n,m,strong;
10     while(scanf("%d%d%d",&n,&m,&strong)!=EOF){
11         for(int i=1;i<=n;i++){
12             ll t;
13             scanf("%lld",&t);
14             a[i]=a[i-1]+strong-t;
15         }
16         ll cnt=0;
17         for(int i=0;i<m;i++){
18             ll x,y;
19             scanf("%lld%lld",&x,&y);
20             ll sum=a[y]-a[x-1];
21             if(sum>0)
22                 cnt+=sum;
23         }
24         printf("%lld\n",cnt);
25         memset(a,0,sizeof(a));
26     }
27 
28     return 0;
29 }

 



涛神的城堡

标签:fine   ssi   ring   string   print   new   java   set   nbsp   

原文地址:http://www.cnblogs.com/zllwxm123/p/7260362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!