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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CodeForces - 1208E Let Them Slide(模拟+multiset)

發(fā)布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeForces - 1208E Let Them Slide(模拟+multiset) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出n個數(shù)列,每行放一個,現(xiàn)在指定一個寬度w,滿足w不小于n個數(shù)列中最長的那個數(shù)列的長度,現(xiàn)在可以將n個數(shù)列都放入到一個n*w的矩形之中,每個數(shù)列可以在各自的行內(nèi)左右移動,現(xiàn)在問對于每一列i,求出權(quán)值和的最大值,注意,若一個數(shù)列的長度小于w,那么其余的位置都用0補齊

題目分析:題目還是比較好懂的,因為給出的圖片以及樣例算是比較友好的了,看看圖片就知道答案是怎么來的了。。讀懂題目之后相當于一個中等難度偏下的模擬,我們只需要照做就好了

具體實現(xiàn)方法就是在輸入的時候,對于每個數(shù)字當前的位置記錄一下可貢獻的區(qū)間,也就是通過移動可到達的最左和最后的位置,最左邊的答案用in數(shù)組儲存,最右邊的答案用out數(shù)組儲存,記錄好后開始模擬,我們可以使用一個優(yōu)先隊列獲得區(qū)間中的最大值,最外層的for枚舉的是1~w的列的下標,內(nèi)層for枚舉的是1~n的行的下標,每次更新時將in數(shù)組內(nèi)的數(shù)扔進去,將out數(shù)組內(nèi)的數(shù)刪掉,之后就可以直接得到答案了

不過上述方法的時間復(fù)雜度是n*w*logw級別的,在這個題目中是不可行的,所以我們必須想辦法優(yōu)化一下,而且在優(yōu)先隊列中也不支持隨機訪問和隨機刪除,所以我們可以用multiset來代替優(yōu)先隊列,每次插入也是logn級別的,而且可以支持find函數(shù)查找某個值的位置,以及搭配erase函數(shù)刪除掉某個特定的值,剛好滿足上面的操作了

至于優(yōu)化的話,我們其實每次不必枚舉到1~n,因為1~n的每一行在特定的第i列下,絕大部分都是對答案沒有貢獻的,也就是in數(shù)組和out數(shù)組在當前列的貢獻為0,這樣的話我們就可以將in和out數(shù)組的下標用列來表示,并將其設(shè)置為vector容器,這樣就能每次只需要遍歷in[i].size()+out[i].size()個變量了,從O(n)下降到了O(in[i].size()+out[i].size())了,因為題目保證了數(shù)組的總長度小于等于1e6,所以我們就完美的將n*w*logw的時間復(fù)雜度下降到了w*logw了,也就可以解決這個問題了

這個題目主要還是練習了multiset的使用吧,有一說一,確實蠻好用的,關(guān)于multiset我們需要注意一下,若我們要取得最后那個數(shù),應(yīng)該調(diào)用rbegin()而不是end()函數(shù),因為end函數(shù)返回的是超尾,如果實在想用end的話可以改成end()-1,所以我們還是直接用rbegin()調(diào)用最后一個元素就好了

代碼:

#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e6+100;struct Node {int val,pos;Node(int VAL,int POS){val=VAL;pos=POS;} };//保存權(quán)值和位置(行)multiset<LL>st[N];//st[行]vector<Node>in[N],out[N];//in[列] out[列]LL ans[N];//ans[列]int main() { // freopen("input.txt","r",stdin); // ios::sync_with_stdio(false);int n,w;scanf("%d%d",&n,&w);for(int i=1;i<=n;i++){int len;scanf("%d",&len);if(len<w)//空白地方可以補0 {in[1].push_back(Node(0,i));out[w-len].push_back(Node(0,i));in[len+1].push_back(Node(0,i));out[w].push_back(Node(0,i));}for(int j=1;j<=len;j++)//維護in數(shù)組和out數(shù)組{int num;scanf("%d",&num);in[j].push_back(Node(num,i));out[w-len+j].push_back(Node(num,i));}}for(int i=1;i<=w;i++)//枚舉列數(shù) st[行數(shù)]{ans[i]=ans[i-1];//因為每次答案可以在前置答案的基礎(chǔ)上操作,避免了多余的操作for(int j=0;j<in[i].size();j++)//枚舉行數(shù) ans[列數(shù)]{int pos=in[i][j].pos;//行 int val=in[i][j].val;//值 if(st[pos].size())//如果存在區(qū)間最大值,則減去ans[i]-=*st[pos].rbegin();st[pos].insert(val);//更新區(qū)間最大值(插入一個值)ans[i]+=*st[pos].rbegin();//再加上區(qū)間最大值}for(int j=0;j<out[i-1].size();j++)//注意這里要用out[i-1]來維護ans[i]{int pos=out[i-1][j].pos;//行 int val=out[i-1][j].val;//值 ans[i]-=*st[pos].rbegin();//因為每個out前面必定對應(yīng)著一個in,所以必定存在區(qū)間最大值,直接減去st[pos].erase(st[pos].find(val));//更新區(qū)間最大值(刪除一個值)if(st[pos].size())//如果刪除后還存在區(qū)間最大值的話,直接加上ans[i]+=*st[pos].rbegin();}}for(int i=1;i<=w;i++)printf("%lld ",ans[i]);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的CodeForces - 1208E Let Them Slide(模拟+multiset)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一色屋免费视频 | 午夜免费av| 欧美用舌头去添高潮 | 亚洲奶汁xxxx哺乳期 | 蜜臀av在线免费观看 | 美国伊人网 | 亚洲欧美日韩一区二区 | 欧美一区二区福利视频 | 午夜电影网一区 | 中文在线不卡 | 免费成人深夜夜行网站视频 | 日韩精品极品视频在线观看免费 | 国产九九热 | 性一交一乱一伧国产女士spa | 中文字幕高清在线观看 | 99久久精品一区二区三区 | 老狼影院伦理片 | 深夜激情影院 | 北条麻妃青青久久 | 日本极品少妇 | 欧美激情伊人 | 国产交换配乱淫视频免费 | 日韩中文字幕精品 | 视频一区在线观看 | 国产三级免费观看 | 一区二区三区四区亚洲 | 国产成人自拍网 | 欧美成人综合视频 | 美女主播福利视频 | 久久艹艹 | 国产精品igao视频 | 欧美亚洲一区二区三区 | av资源免费| 黄色a网站 | av免费在线网站 | 午夜18视频在线观看 | 夜夜躁很很躁日日躁麻豆 | 青娱乐在线免费观看 | 女同动漫免费观看高清完整版在线观看 | 毛片视频网站在线观看 | 青青草原国产在线观看 | 成人精品毛片 | 亚洲偷自 | 伊人网视频在线 | 69av导航| 欧美午夜激情视频 | 久久免费的精品国产v∧ | 色吧在线视频 | 亚洲成人国产精品 | 春色激情站 | 欧洲成人综合网 | 精品无码三级在线观看视频 | 男ji大巴进入女人的视频 | 一区二区三区四区免费观看 | www.天天综合 | 精品欧美一区二区三区免费观看 | 青青草免费在线视频 | 黑人乱码一区二区三区av | 极品久久久久 | 久久五月天婷婷 | 色丁香综合 | 一区二区三区四区中文字幕 | 欧美 日韩 国产 中文 | 国产一区二区视频在线观看 | www.欧美色图 | 村上里沙番号 | 操mm影院| 日韩深夜视频 | 熟女视频一区二区三区 | 亚洲精品一二三区 | 亚洲男人皇宫 | 最全aⅴ番号库 | 日韩中文无 | 熟女俱乐部一区二区视频在线 | 91桃色网站 | 国精产品一区一区三区mba下载 | 成人免费视频国产免费网站 | 色呦 | 亚洲成肉网 | 婷婷综合另类小说色区 | 亚洲一级片免费 | 吻胸摸激情床激烈视频大胸 | av在线不卡免费看 | av网站在线观看不卡 | 中文字幕15页 | 国产aa | 国产视频精品免费 | 亚洲av人无码激艳猛片服务器 | 欧美成人不卡 | 男女爽爽爽 | 亚洲国产婷婷香蕉久久久久久99 | 嫩草视频在线观看免费 | 亚洲一区二区三区高清视频 | 老熟女重囗味hdxx69 | 综合久久久久久久久久久 | 污污网站在线看 | 骚虎视频在线观看 | 91精品久久久久久粉嫩 | www.国产色 |