P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
说最大不超过.不用高精度,好说
#include <bits/stdc++.h>
using namespace std;
int n,n2,a;
long long a1[10004],a2[10004],sum;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n;
memset(a1,127,sizeof(a1)),memset(a2,127,sizeof(a2));
//初始化数组至 int 的最大值 ,效率较高
for(int i=0;i<n;i++) cin>>a1[i]; //输入数据
sort(a1,a1+n);
int opt=0, i = 0 , j = 0; //i j 用于定位数组,形同于队列
long long tmp=0;
for( opt = 1; opt < n; opt++){
tmp = a1[i] <a2[j] ? a1[i++] :a2[j++]; //第一次最小值 i++ j++
tmp += a1[i] <a2[j] ? a1[i++] :a2[j++]; //第二次最小值
a2[n2++]=tmp; //加入第二个数组 //n2 wwww
sum+=tmp;
}
cout<<sum;
return 0;
}
P3817 小A的糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
int N;
long long tmp,x,sum,a[100005]; // 1005就会RE 原因<=10 0000
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin>>N>>x;
for(int i=0;i<N;i++) cin>>a[i];
for(int i=0;i<N-1;i++){
if(a[i]+a[i+1]<=x){
continue;
}
tmp = a[i]-x+a[i+1];
if(a[i]>=x) a[i]=x,a[i+1]-=a[i]-x+a[i+1];
else{
a[i+1] -=a[i]-x+a[i+1];
}
sum += tmp;
}
cout<<sum;
return 0;
}