1030-丢手绢_2021秋季算法入门班第一章习题:模拟、枚举、贪心 (nowcoder.com)
因为
所以为
if (d[j]-d[k] > sum/2) dis=sum-(d[j]-d[k]);
#include<bits/stdc++.h> using namespace std; int n,dis=0,maxd=-1,k=0,j=1; double sum=0; int d[100010]; int main () { cin>>n; for (int i=1;i<=n;i++) { cin>>d[i]; sum += d[i]; d[i] += d[i-1];//求距离 } for (;k<n;k++) { for (;j<=n;j++) { if (d[j]-d[k] > sum/2) dis=sum-(d[j]-d[k]); else dis = d[j]-d[k]; maxd = max(maxd,dis); if (d[j]-d[k] > sum/2) break; } } cout<<maxd; return 0; }
Code over!