WA 90pts 求调
查看原帖
WA 90pts 求调
735713
Azure_F楼主2024/1/28 16:53
#include<cstdio>
#include<algorithm>
 
const int size=(1<<20)+1;char buf[size],*p1=buf,*p2=buf;char buffer[size];int op1=-1;const int op2=size-1;
inline char readchar() {if(p1!=p2) {return *p1++;}return p1==(p2=(p1=buf)+fread(buf,1,size-1,stdin))?EOF:*p1++;}
inline void flush() {fwrite(buffer,1,op1+1,stdout),op1=-1;}
inline void writechar(const char &x) {if(op1==op2) flush();buffer[++op1]=x;}
#ifndef ONLINE_JUDGE
#define readchar getchar
#endif
#define putchar writechar
inline int read() {int s=1,c=readchar(),x=0;while(c<=32) {c=readchar();}if(c=='-') {s=-1,c=readchar();}for(; ('0'<=c && c<='9'); c=readchar()) {x=x*10+c-'0';}return x*s;}
inline void write(long long x) {if(x<0) {writechar('-'),x=-x;}char s[25];int n=0;while(x || !n) {s[n++]='0'+x%10,x/=10;}while(n--) {writechar(s[n]);}}
 
int score(int x, int y) {
    if(x == y + 1 || x == y - 2) return 2;
    else if(x == y) return 1;
    else return 0;
}
 
const int N = 1e3 + 5;
int n, a[N], b[N], c[N], f[N][N][3];
 
int main(){
    n = read();
    for(int i = 1; i <= n; ++i) a[i] = read();
    for(int i = 1; i < n; ++i) b[i] = read();
    for(int i = 1; i <= n; ++i) c[i] = read();
     
    for(int i = 1; i <= n; ++i)
    for(int j = 0; j < i; ++j)
    for(int k = 0; k < 3; ++k) {
        int t = a[i] * score(k, c[i]);
        if(i - 1 > j || j == 0) f[i][j][k] = f[i - 1][j][k] + t;
         
        // if(!t) continue;
        if(j)
            for(int p = 0; p < 3; ++p)
                if(p != k) f[i][j][k] = std::max(f[i][j][k], f[i - 1][j - 1][p] + t - b[j]);
    }
    int ans = 0;
    for(int j = 0; j < n; ++j)
        for(int k = 0; k < 3; ++k)
            ans = std::max(ans, f[n][j][k]);
     
    write(ans); flush();
     
    return 0;
}
2024/1/28 16:53
加载中...