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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

序列取数

發布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 序列取数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

給定一個長為n的整數序列(n<=1000),由A和B輪流取數(A先取)。每個人可從序列的左端或右端取若干個數(至少一個),但不能兩端都取。所有數都被取走后,兩人分別統計所取數的和作為各自的得分。假設A和B都足夠聰明,都使自己得分盡量高,求A的最終得分。

輸入輸出格式

輸入格式:

第一行,一個正整數T,表示有T組數據。(T<=100)

接著T行,每行第一個數為n,接著n個整數表示給定的序列.

輸出格式:

輸出T行,每行一個整數,表示A的得分。

題解:

這題剛看的時候覺得還挺簡單啊,不就是一個DP么,被刷成了這種難度,是什么鬼,然后看到了n<=1000,嗯,有點難度了,n^3做法過不了。。。但是稍微加點剪枝什么的幾個億開了O2不還是隨便過,然后發現T<=100.。。。出題人有病么,與其把時限開到3s,還不如少幾組數據。。。。于是發現N^3明顯不可做,開始考慮如何優化掉一個n。考慮原來的DP方程,就是f[i][j]=s[i]-s[j-1]-min(d[i-1][j],[i-2][j],d[i-3][j]....d[i][j-2],d[i][j-1],0)。

發現我們可以記錄下來當前左端和右端取的最優方法,即

L[i][j]=min(f[i][j],L[i+1][j]);
R[i][j]=min(f[i][j],R[i][j-1]);

然后使f[i][j]=s[i]-s[j-1]-min(0,L[i+1][j],R[i][j-1])就可以了。

因為這三個都可以通過O1互相遞推出來,于是就省去了一個N

然后發現數據明顯不對頭,明明5個億在開O(2)的情況下竟跑了1700+ms。。。這題數據有毒,,,。

#pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <cstdlib> #include <cmath> #include <string> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> #include <set> #include <map> #define re register #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) #define MAXN 1e5+1 using namespace std; typedef long long ll; typedef unsigned long long ull; #define ms(arr) memset(arr, 0, sizeof(arr)) const int inf = 0x3f3f3f3f; int T,n,maxx,ans,f[1001][1001],L[1001][1001],R[1001][1001],a[200001],s[2001]; inline int read() {int x=0,c=1;char ch=' ';while((ch>'9'||ch<'0')&&ch!='-')ch=getchar();while(ch=='-') c*=-1,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-'0',ch=getchar();return x*c; } int main() {//freopen("date.in","r",stdin);T=read();while(T--){n=read();for(re int i=1;i<=n;i++){a[i]=read();s[i]=s[i-1]+a[i];f[i][i]=L[i][i]=R[i][i]=a[i];}for(re int l=1;l<=n;l++){for(re int i=1;i<=n-l;i++){int j=i+l,maxx=0;maxx=min(maxx,min(L[i+1][j],R[i][j-1]));f[i][j]=s[j]-s[i-1]-maxx;L[i][j]=min(f[i][j],L[i+1][j]);R[i][j]=min(f[i][j],R[i][j-1]);}}printf("%d\n",f[1][n]);}return 0; }

轉載于:https://www.cnblogs.com/victorique/p/8830679.html

總結

以上是生活随笔為你收集整理的序列取数的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 新国产视频 | 久久久久久中文字幕 | 黄片毛片在线免费观看 | 国产福利一区在线 | 日韩欧美视频一区 | 哪里可以看毛片 | 亚洲不卡av一区二区 | 欧美日韩精品一区二区在线观看 | 日韩精品人妻一区二区三区免费 | 综合狠狠开心 | 中文字幕精品一二三四五六七八 | www污污| 欧美日韩亚洲国产精品 | 加勒比一区二区 | 日韩国产毛片 | 国产一区二区三区在线免费 | 中文字幕欧美专区 | 亚洲影院一区二区三区 | 黑人玩弄人妻一区二区三区影院 | 精品一区二区免费视频 | 日韩一区二区三区免费视频 | 精品久久免费 | 最好看的日本字幕mv视频大全 | 国产精品99久久久久久一二区 | 亚洲精品天天 | 天天操天天插天天射 | 欧洲一级黄| 久久久精品久久久久久 | 日本一二三区视频在线 | hs网站在线观看 | 日本一区二区在线 | 国产精品一线天 | 成年人深夜福利 | 男女猛烈无遮挡 | 日本做受 | 日韩二区三区四区 | 欧美黄在线观看 | 毛片网络 | 中文字幕人妻一区二区三区视频 | 精品国产伦一区二区三 | 国产精品区在线观看 | 毛利兰被扒开腿做同人漫画 | 亚洲天堂手机在线观看 | 日韩高清一区二区 | 日韩精品理论 | 国产综合色视频 | 真人毛片97级无遮挡精品 | 91免费精品视频 | 国产啊啊啊啊 | zzjizzji亚洲日本少妇 | 九九热视频这里只有精品 | 国产资源av| 欧美日日夜夜 | 精品国产青草久久久久96 | 久久久这里有精品 | 亚洲情趣 | 人人爱人人搞 | 日本黄网站色大片免费观看 | 欧美激情一区二区三区 | 在线观看 亚洲 | 成人在线观看视频网站 | 男人操女人的软件 | 午夜不卡在线观看 | 丰满熟妇人妻av无码区 | xxx性日本 | www.黄色大片| 成年在线观看 | 熟女丝袜一区 | 亚洲五月六月 | 成人在线免费电影 | 国产毛片电影 | 一区二区三区日韩在线 | 97神马影院 | 国产91久| 教练含着她的乳奶揉搓揉捏动态图 | 香港一级纯黄大片 | 九九热免费在线 | 精品女同一区二区三区 | 久草一本| 日韩视频一区二区三区 | 我爱我色成人网 | 精品在线一区二区三区 | 乱lun合集小可的奶水 | 国产精品ww| 91福利在线视频 | 91精品国产高清一区二区三蜜臀 | 国产成人啪一区二区 | 日本亲与子乱人妻hd | 日日骚一区 | av天天操 | 黄色国产毛片 | 国产成人一区二区在线 | 国产高清不卡av | 好屌妞视频这里只有精品 | 免费午夜网站 | 91视频直接看 | 精品国产午夜福利在线观看 | 午夜99| 国产 日韩 欧美 精品 |