[BZOJ 1489][HNOI2009]双递增序

传送门

满满的负罪感,昨晚的刷题历程:写几道难题吧-->算了,还是只切道水题吧-->RNG赢了......

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define rep(i,a,b) for(int i=a;i<=b;++i)
 4 const int maxn=2010;
 5 int f[maxn][maxn],a[maxn],n,T;
 6 inline int gi() {
 7     int x=0; char o; bool f=true; for(;!isdigit(o=getchar());)if(o=='-')f=false;
 8     for(;isdigit(o);o=getchar()) x=(x<<1)+(x<<3)+(o&15); return f?x:~x+1;
 9 }
10 int main() {
11     T=gi();
12     while(T--) {
13         n=gi(); rep(i,1,n) a[i]=gi();
14         memset(f,0x3f,sizeof(f)); f[0][0]=a[0]=-1;
15         rep(i,1,n) rep(k,1,i) {
16             if(a[i-1]<a[i]) f[i][k] = f[i-1][k-1];
17             if(f[i-1][i-k]<a[i]&&a[i-1]<f[i][k]) f[i][k]=a[i-1];
18         }
19         f[n][n>>1] < 1e9 ? puts("Yes!"):puts("No!");
20     }
21     return 0;
22 }

猜你喜欢

转载自www.cnblogs.com/miecoku/p/9770459.html