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

Test20200610

时间:2020-06-10 21:01:45      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:说明   天都   ++   sdi   dig   贪心   fine   数据说明   turn   

T1 第一题(eat.cpp/c/pas)

贪心 排序 模拟

【问题描述】
凶猛的**出来吃人了!每天早晨,**从大山里出来,到达一个城市,然后花费一整天的时间把这座城市里的人吃光。直到夜晚,**才回到山中去。当**经过一个城市时,不管是否吃人,它都会把这座城市彻底破坏,以至于下次不能再到这个城市吃人了。显然,城市里的居民无法忍受这样的状况。所以,每天夜晚,每座城市里都会有一个人逃到乡下去,到了乡下以后**就永远吃不到他了。城市之间有一些双向道路连接着。其中 1 号城市连接着大山,即**每天的旅途的起点。当然,**只能沿着这些道路走。**意识到必须抓紧时间吃人,所以它每天都要认真选取要去的城市,当然它不能选择已经被吃过或破坏过的城市。现在问题来了,在所有城市没有人居住之前,**最多能吃掉多少人?
【输入】
输入文件名为 eat.in。
第一行两个整数??, ??,用一个空格隔开,表示城市的个数和道路数。
第二行??个整数????,表示每座城市初始的人数。两个数之间用一个空格隔开。
接下来??行,每行两个整数??, ??(1 ≤ ??, ?? ≤ ??, ?? ≠ ??),用一个空格隔开,表示城市??和城市??之间有一条双向道路。城市 1 和大山之间也有一条双向道路。
数据保证所有城市都存在到城市 1 的路径。
【输出】
输出文件名为 eat.out。
输出共一行一个整数,表示在所有城市没有人居住之前,**最多能吃掉的人数。
【输入输出样例】
eat.in
5 5
1 3 2 4 7
1 2
1 3
2 3
2 4
3 5
eat.out
11
【数据说明】
对于 10%的数据,1 ≤ ?? ≤ 5,0 ≤ ?? ≤ 10,0 ≤ ???? ≤ 5。
对于 30%的数据,1 ≤ ?? ≤ 200,0 ≤ ?? ≤ 500,0 ≤ ???? ≤ 200。
对于 60%的数据,1 ≤ ?? ≤ 2,000,0 ≤ ?? ≤ 10,000,0 ≤ ???? ≤ 20,000。
对于 100%的数据,1 ≤ ?? ≤ 200,000,0 ≤ ?? ≤ 2,000,000,0 ≤ ???? ≤ 2,000,000。
 
第 ?? 天到达某个城市时,人数减少 $\dfrac {k\left( k-1\right) }{2}$
 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 inline int read()
 5 {
 6     int x=0;char c=getchar();
 7     for(;!isdigit(c);c=getchar());
 8     for(;isdigit(c);c=getchar()) x=x*10+c-0;
 9     return x;
10 }
11 int n,m,a[200005];
12 ll ans=0,sum=0;
13 int main()
14 {
15     freopen("eat.in","r",stdin);
16     freopen("eat.out","w",stdout);
17     n=read();m=read();
18     for(int i=1;i<=n;i++) 
19     a[i]=read();
20     sort(a+1,a+n+1);
21     for(int i=n;i;i--)
22     {
23         sum+=a[i];
24         ans=max(ans,sum-(ll)1*(n-i+1)*(n-i)/2);
25     }
26     cout<<ans<<endl;
27     return 0;
28 }

 

 
 
 

Test20200610

标签:说明   天都   ++   sdi   dig   贪心   fine   数据说明   turn   

原文地址:https://www.cnblogs.com/SuSuSOS/p/13088238.html

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