第一次模拟赛题解 T140825 【集结军队】
恭喜各位顺利度过本次比赛!下面让我们一起来看看本次比赛T1的题解吧!
一、90分做法
本题一共有两问,先来考虑第一问:
由题意得,己方军队的总战力=所有师的战力和。
所以我们可以先设置一个数组来储存每个师的战力,然后运用for循环读入每个师的战力,如:
int n,z[100005];//多开5个以防越界
cin>>n;
for (int i=1;i<=n;i++){
cin>>z[i];
}
再计算所有师的总战力时,我们只需要再设置一个for循环计算即可,如:
int ans=0;
for (int i=1;i<=n;i++){
ans+=z[i];
}
cout<<ans<<" ";
当然,我们可以考虑到在所有程序中,
int ans=0,z,n;
cin>>n;
for (int i=1;i<=n;i++){
cin>>z;
ans+=z;
}
cout<<ans<<" ";
这样我们就完成读入+计算总战力了。
第二问要求我们知道需要增援多少战力。我们可以分类讨论:
-
如果己方总战力大于等于敌方总战力,则不需要增派战力,输出
0 。 -
如果己方总战力小于地方总战力,则需要增派
m- 我方总战力 的兵力。
代码如下:
if (ans>=m) cout<<0<<endl;
else cout<<m-ans<<endl;
完了吧?好像应该满分了。但是如果只是这样,你会收到一个
怎么错了呢?我们不妨来考虑一下数据范围:
而 int 的数据范围最高约为
轰!int 爆了!
二、100分做法
把前面的 long long就行了!(手动滑稽
代码就不给了,前面的应该够了。