日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CodeForces - 933A A Twisty Movement(dp)

發布時間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeForces - 933A A Twisty Movement(dp) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個長度為 n 的數列,只由 1 和 2 組成,現在允許反轉一段區間,問反轉后的不下降子序列最長是多少

題目分析:因為 n 只有 2000,所以考慮n2n^2n2去枚舉所有的子區間進行反轉然后維護答案,不過我們需要預處理出兩個dp數組備用:

  • dp1[ l ][ r ][ st ][ ed ]:區間 [ l , r ] 中首項為 st,末項為 ed 時最長不下降子序列的長度
  • dp2[ l ][ r ][ st ][ ed ]:意義同上,只不過是反轉之后的答案
  • 在枚舉子區間 [ l , r ] 時,整個數組很自然的被分成了三段:

  • [ 1 , l - 1 ]
  • [ l , r ]
  • [ r + 1 , n ]
  • 再枚舉一下上面六個端點相應的取值,直接轉移就好了

    代碼:

    // #pragma GCC optimize(2) // #pragma GCC optimize("Ofast","inline","-ffast-math") // #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> #include<bitset> #include<unordered_map> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2100;int a[N];int dp1[N][N][2][2];//dp[l][r][st][ed]:區間[l,r]內,起點為st,終點為ed的最長不下降int dp2[N][N][2][2];//倒著的答案int main() { #ifndef ONLINE_JUDGE // freopen("data.in.txt","r",stdin); // freopen("data.out.txt","w",stdout); #endif // ios::sync_with_stdio(false);int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",a+i);a[i]--;}for(int i=1;i<=n;i++)//枚舉起點for(int j=i;j<=n;j++){for(int st=0;st<=1;st++)//不選a[j]for(int ed=st;ed<=1;ed++)dp1[i][j][st][ed]=dp1[i][j-1][st][ed];for(int st=0;st<=1;st++)//選a[j]for(int ed=st;ed<=a[j];ed++)dp1[i][j][st][a[j]]=max(dp1[i][j][st][a[j]],dp1[i][j-1][st][ed]+1);}for(int j=n;j>=1;j--)//枚舉終點for(int i=j;i>=1;i--){for(int st=0;st<=1;st++)//不選a[i]for(int ed=st;ed<=1;ed++)dp2[i][j][st][ed]=dp2[i+1][j][st][ed];for(int st=0;st<=1;st++)for(int ed=st;ed<=a[i];ed++)dp2[i][j][st][a[i]]=max(dp2[i][j][st][a[i]],dp2[i+1][j][st][ed]+1);}int ans=0;for(int st=0;st<=1;st++)for(int ed=st;ed<=1;ed++)ans=max(ans,dp1[1][n][st][ed]);for(int l=1;l<=n;l++)for(int r=l;r<=n;r++){for(int a=0;a<=1;a++)for(int b=a;b<=1;b++)for(int c=b;c<=1;c++)for(int d=c;d<=1;d++)for(int e=d;e<=1;e++)for(int f=e;f<=1;f++)ans=max(ans,dp1[1][l-1][a][b]+dp2[l][r][c][d]+dp1[r+1][n][e][f]);}printf("%d\n",ans);return 0; }

    總結

    以上是生活随笔為你收集整理的CodeForces - 933A A Twisty Movement(dp)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品一区二区三区免费毛片 | 碧蓝之海动漫在线观看免费高清 | 国产一二三四五区 | 内射后入在线观看一区 | 丰满少妇大力进入 | 国产精品一区二 | 精品国产精品网麻豆系列 | wwwxxx黄色| 色婷婷国产精品视频 | 99久久久精品 | 91精品啪在线观看国产线免费 | 亚洲欧美日韩激情 | 国产黄色大片视频 | 国产精品天天操 | 国产13页 | 亚洲福利网址 | 国产精品久久无码一三区 | 国产成人 综合 亚洲 | 成人做爰9片免费视频 | 久久五十路 | 丰满熟女一区二区三区 | 国产精品中文 | 在线观看黄色av | 四虎网站在线播放 | 日本少妇三级 | 亚洲精久 | 都市激情久久 | 色吧综合网 | 六月婷婷七月丁香 | av日韩在线播放 | 人人草在线视频 | 看污网站 | 精品欧美一区二区久久久 | 一本久久久久 | www.久久视频| 亚洲专区一区二区三区 | xxxx 国产| 一区二区三区免费观看视频 | av资源导航 | 亚洲日皮 | 久久精品国产欧美亚洲人人爽 | 天天槽 | 一呦二呦三呦精品网站 | 日本激情视频一区二区三区 | 中国黄色免费 | 亚洲AV无码精品色毛片浪潮 | 小嫩女直喷白浆 | 婷婷午夜精品久久久久久性色av | 全部孕妇毛片 | 国产一区二区三区四区五区 | 日韩视频网 | 日本欧美在线播放 | 国产精品成人免费看片 | 欧美亚洲另类小说 | 麻豆短视频在线观看 | 日韩激情图片 | 91日批| 宅男在线视频 | 九一福利视频 | 国产91色 | 欧美激情 亚洲 | 亚洲精品乱码久久久久久9色 | 性感美女一区二区三区 | 午夜激情在线观看视频 | 亚洲一区二区三区观看 | 激情福利网 | 久久久无码精品亚洲无少妇 | 99精品久久久久久久 | 性欢交69国产精品 | 久久依人 | 丰满熟妇被猛烈进入高清片 | 爽爽影院在线免费观看 | a级无遮挡超级高清-在线观看 | 成人黄页 | 亚洲福利网 | 国产人成无码视频在线观看 | 国产玖玖在线 | 内射国产内射夫妻免费频道 | 亚洲精品激情 | 蜜臀久久99精品久久久画质超高清 | 国产女主播福利 | 中文字幕一级 | 一区二区三区日韩 | 91香草视频 | 日韩视频免费在线播放 | 亚洲国产精品久久人人爱 | 懂色av一区二区三区蜜臀 | 亚洲国产综合在线 | 91午夜在线 | 欧美又大粗又爽又黄大片视频 | 亚洲精品成人片在线观看精品字幕 | 日韩理论片在线观看 | 日韩精品无码一区二区三区 | 国产午夜精品一区二区理论影院 | 日本暧暧视频 | 国产成人影视 | 制服丝袜手机在线 | 天堂网在线观看 | 特级a毛片|