| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38659 | daimo | 【J】T3 | C++ | 解答错误 | 33 | 10 MS | 1728 KB | 1177 | 2025-10-18 15:27:16 |
#include<bits/stdc++.h> #define int long long #define __ __int128 using namespace std; void testread(){ freopen("test.in","r",stdin); freopen("test.out","w",stdout); } int n; char s[310]; int f[310][310]; signed main(){ //testread(); ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); int _; cin>>_; //_=1; while(_--){ cin>>n; for(int i=1;i<=n;i++)cin>>s[i]; for(int i=2;i<=n;i++){ for(int j=1;j+i-1<=n;j++){ int l=j,r=j+i-1; for(int k=l;k<r;k++){ f[l][r]=max(f[l][r],f[l][k]&f[k+1][r]); } if(s[l]==s[r]){ if(i==2){ f[l][r]=1; continue; } f[l][r]=max(f[l][r],f[l+1][r-1]); f[l][r]=max(f[l][r],f[l+2][r-1]); f[l][r]=max(f[l][r],f[l+1][r-2]); for(int k=l+2;k<=r-2;k++){ f[l][r]=max(f[l][r],(f[l+1][k-1]&f[k+1][r-1])); } } } } if(f[1][n])cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }