Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:神奇的 WA ,求大神解答

Posted by 20172430529 at 2019-04-02 16:18:11 on Problem 1160
In Reply To:神奇的 WA ,求大神解答 Posted by:wangheda at 2016-08-24 17:13:50
> 本地 G++ 全部正确,在线 G++ 编译 WA, C++ 编译 AC,代码如下:
> 
> #include<iostream>
> #include<iomanip>
> #include<cmath>
> using std::ios; using std::cout; using std::cin; using std::cerr; using std::endl;
> using std::fixed; using std::setprecision;
> 
> #define REP1(i,n) for(int i=1, _##i=(n+1); i<_##i; ++i)
> #define REP(i,n) for(int i=0, _##i=(n); i<_##i; ++i)
> #define INIT(a,b) memset(a,b,sizeof(a))
> #define MAX(a,b) ((a)>(b)?(a):(b))
> #define MIN(a,b) ((a)<(b)?(a):(b))
> #define PI 3.1415926535898
> #define INF 1000000000
> 
> int sum[600][60];
> int village[600];
> 
> int main() {
>     std::ios::sync_with_stdio(false);
> 
>     REP(i,600) REP(j,60) sum[i][j] = INF;
> 
>     int V,P; cin >> V >> P;
>     REP1(v,V) cin >> village[v];
> 
>     int s = 0;
>     // base
>     REP1(v,V) {
>         s += village[v];
>         sum[v][1] = v * village[v] - s;
>     }
> 
>     for (int p=1; p <= P-1; p++) {
>         for (int v1=p; v1 <= V; v1++) {
>             int k = v1, v2 = v1+1;
>             int s1 = village[v1], s2 = village[v1];
>             while (v2 <= V) {
>                 if (village[v2] - village[k+1] <= village[k+1] - village[v1]) {
>                     s2 += village[v2];
>                     sum[v2][p+1] = MIN(sum[v2][p+1], sum[v1][p] + (s1 - (k-v1+1)*village[v1]) + ((v2-k)*village[v2] - (s2-s1)));
>                     v2 ++;
>                 } else {
>                     k ++;
>                     s1 += village[k];
>                 }
>             }
>         }
> 
> //      REP1(i,P) {
> //          REP1(j, V) cout << sum[j][i] << ' '; cout << endl;
> //      }
> //      cout << endl;
>     }
> 
>     int min = INF;
>     s = 0;
>     for (int v=V; v>0; v--) {
>         s += village[v];
>         min = MIN(min, sum[v][P] + s - (V-v+1)*village[v]);
>     }
>     cout << min << endl;
>     return 0;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator