题解:CF1119E Pavel and Triangles
zengxuheng · · 题解
题目传送门:CF1119E Pavel and Triangles
Solution:
由于边长都为
所以我们从小到大进行考虑。
我们开一个变量
对于每一条长度的边数量
我们就直接在答案上加上这些长度边的数量加上短边数量的和除以三。
也就是:
短边数量就会变成
反之如果短边的数量大于边的数量除以
也就是:
短边数量减去
Code:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[300010];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,ans=0,cnt=0;
cin>>n;
for(int i = 1;i <= n;i++){
cin>>a[i];
if(a[i]/2>ans)cnt+=(a[i]+ans)/3,ans=(a[i]+ans)%3;
else cnt+=a[i]/2,ans-=a[i]/2,ans+=a[i]%2;
} cout<<cnt<<'\n';
return 0;
}
完结撒花。