QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#866838#9916. Defeat the EnemiesmanizareWA 2ms8168kbC++142.1kb2025-01-22 19:57:252025-01-22 19:57:27

Judging History

This is the latest submission verdict.

  • [2025-01-22 19:57:27]
  • Judged
  • Verdict: WA
  • Time: 2ms
  • Memory: 8168kb
  • [2025-01-22 19:57:25]
  • Submitted

answer

    #include <bits/stdc++.h> 
#pragma GCC optimize("O3,unroll-loops")
#define pb push_back
#define F first
#define pii pair<int,int> 
#define all(a) a.begin(),a.end()
#define S second 
#define sz(a) (int)a.size()
#define rep(i , a , b) for(int i = (a) ; i <= (b) ; i++)
#define per(i , a , b) for(int i = (a) ; i >= (b) ; i--)
#define ld long double
#define int long long 
using namespace std ;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int maxn = 3e5+20 , maxm = 2e4 + 10, sq = 500 , inf = 1e18+10 , mod =998244353 ; 
int a[maxn] ,b[maxn] , x[maxm]  , c[200];
pii dp[maxn][140] ;

void upd(pii &a , pii b , int c){
    b.F += c; 
    if(a.F > b.F){
        a = b;
    }else if(a.F == b.F){
        a.S += b.S ;
        if(a.S >= mod)a.S-= mod ; 
    }
}

signed main(){
    ios_base::sync_with_stdio(false) ; cin.tie(0) ;
    int T ;
    cin >> T ;
    while(T--){
        int n , m ;
        cin >> n >> m ; 
        rep(i ,1, n){
            cin >> b[i] ;
        }
        int sm =0 ;
        rep(i ,1, n){
            cin >> a[i] ;
            sm = max(sm , a[i]+b[i]) ;
        }
        int k ;
        cin>> k ; 
        rep( i,1 ,k){
            cin >> c[i] ;
        }
        rep(i ,1, 2*m){
            x[i] = inf; 
        }
        rep(i ,1 ,n){
            x[b[i]] = min(x[b[i]] , b[i] + (sm-a[i]-b[i])) ;
        }
        rep(i , 0, sm+2*k)rep(j , 0, k){
            dp[i][j] = {inf,0} ;
        }
        dp[0][0] = {0,1} ;
        rep(i , 0 ,sm+2*k){
            rep(j , 0 ,k){
                int mn = inf ;
                rep(z , 1 ,k){
                    upd(dp[i+z][max(j , i+z-mn)] , dp[i][j], c[z]) ;
                    mn= min(mn , x[i+z]);
                }
            }
        }
        pii ans ;
        ans = {inf , 0} ;
        rep(i , sm , sm+2*k){
            rep(j , 0 ,k){
                if(i-sm >= j){
                    upd(ans , dp[i][j] , 0);
                }
            }
        }
        cout << ans.F << " " << ans.S << "\n"; 
    }
}
/*
 
*/

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 8168kb

input:

4
5 5
3 5 2 1 2
3 1 3 2 3
3
2 3 4
3 2
2 2 2
2 2 2
3
2 3 3
7 6
5 3 4 6 6 3 4
4 6 4 2 3 5 5
4
2 4 6 7
10 100
38 49 79 66 49 89 21 55 13 23
67 56 26 39 56 16 84 50 92 82
11
6 6 7 8 9 9 9 9 9 9 9

output:

9 1
6 4
18 18
99 44387

result:

ok 8 numbers

Test #2:

score: -100
Wrong Answer
time: 2ms
memory: 7728kb

input:

1000
5 3
1 1 3 1 2
3 2 1 1 2
1
5
5 3
3 3 2 2 1
1 1 3 1 1
3
3 1 3
5 5
4 3 5 1 4
5 5 2 5 5
2
1 5
5 5
5 5 5 5 4
2 1 2 4 1
2
1 1
5 3
2 1 2 1 1
1 3 2 1 1
1
5
2 1
1 1
1 1
3
2 2 1
5 5
2 3 5 2 2
5 2 4 3 1
2
3 3
5 1
1 1 1 1 1
1 1 1 1 1
3
5 4 4
5 4
1 4 4 4 2
4 3 1 3 3
1
2
1 5
2
2
3
4 2 4
1 5
4
5
1
4
2 5
1 5
1...

output:

20 1
3 1
9 1
5 4
20 1
2 1
15 4
8 4
14 1
4 1
36 1
12 1
27 1
2 1
20 1
4 1
10 1
23 1
10 1
4 1
28 1
4 1
5 1
4 1
6 1
9 4
6 1
16 1
9 6
5 1
30 1
4 1
4 1
2 1
35 1
10 1
2 1
4 1
15 6
4 1
20 1
4 1
6 1
40 1
4 1
18 1
8 1
7 1
6 1
2 1
10 1
3 1
9 1
8 1
4 1
6 4
20 1
8 2
10 1
2 1
2 1
50 1
24 1
9 6
10 16
10 1
6 1
3 1
...

result:

wrong answer 51st numbers differ - expected: '8', found: '9'