蒟蒻求助,re了7个点。

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

重新发一下```cpp #include<cstdio> #include<algorithm> using namespace std; int a[200100]; int he[200100]; long long sum; int main() { int n; scanf("%d",&n); int head=1;int tail=1; int heada=1;int taila=n; for(int i=1;i<=100010;i++) { a[i]=1000000; he[i]=1000000; } for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); for(;;) { if(heada>taila) { if(head+1==tail) { break; } } int t1=a[heada]+a[heada+1]; int t2=a[heada]+he[head]; int t3=he[head]+he[head+1]; if(t1<=t2&&t1<=t3) { sum+=t1; he[tail]=t1; tail++; heada+=2; } else if(t2<t1&&t2<=t3) { sum+=t2; he[tail]=t2; tail++; heada++; head++; } else if(t3<t1&&t3<t2) { sum+=t3; he[tail]=t3; tail++; head+=2; } } printf("%lld",sum); return 0; } ```
by 夢·壹生所愛 @ 2018-02-03 20:28:17


# 哎呀 ```cpp #include<cstdio> #include<algorithm> using namespace std; int a[200100]; int he[200100]; long long sum; int main() { int n; scanf("%d",&n); int head=1;int tail=1; int heada=1;int taila=n; for(int i=1;i<=100010;i++) { a[i]=1000000; he[i]=1000000; } for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); for(;;) { if(heada>taila) { if(head+1==tail) { break; } } int t1=a[heada]+a[heada+1]; int t2=a[heada]+he[head]; int t3=he[head]+he[head+1]; if(t1<=t2&&t1<=t3) { sum+=t1; he[tail]=t1; tail++; heada+=2; } else if(t2<t1&&t2<=t3) { sum+=t2; he[tail]=t2; tail++; heada++; head++; } else if(t3<t1&&t3<t2) { sum+=t3; he[tail]=t3; tail++; head+=2; } } printf("%lld",sum); return 0; } ```
by 夢·壹生所愛 @ 2018-02-03 20:29:21


~~为什么不用万能的STL呢?~~ ~~为什么不用优先队列呢?~~ ~~为什么不用堆呢?~~
by Altria_Pendragon_ @ 2018-02-03 20:45:02


|