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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JZOJ 5600. 【NOI2018模拟3.26】Arg

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5600. 【NOI2018模拟3.26】Arg 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

給出一個長度為 m 的序列 A, 請你求出有多少種 1…n 的排列, 滿足 A 是它的一個 LIS.

Input

第一行兩個整數 n,m.
接下來一行 m 個整數, 表示 A.

Output

一行一個整數表示答案.

Sample Input

5 3
1 3 4

Sample Output

11

Data Constraint

對于前 30% 的數據, n ≤ 9;
對于前 60% 的數據, n ≤ 12;
對于 100% 的數據, 1 ≤ m ≤ n ≤ 15.

Solution

  • 考慮計算 LIS 時使用的經典方法。

  • 記一個數組 ff[i] 表示當前長度為 i 的單調上升序列的結尾的最小值。

  • 這個數組是一個單調不降的數組. 于是我們可以用二進制來表示它。

  • f(S,S0) 表示當前選了集合 S 里的數,LIS 的 f 數組狀態為 S0 時的方案數。

  • 這不難轉移,枚舉在末尾加上哪個數即可。

  • 觀察發現 S0 一定屬于 S,所以可以壓成三進制。

  • 每位用 0,1,2 分別表示還沒選、選了且在單調上升序列、選了但不在單調上升序列。

  • 于是枚舉狀態,算出目前的單調上升序列,在枚舉還沒選的轉移即可。

  • 注意枚舉轉移的數要按照 A 序列的順序來。

  • 若枚舉到某一狀態,其中每個數都已經選了,且單調上升序列的長度就是 m ,即可統計答案。

  • 時間復雜度 O(3N?N) ,實際小很多,因為很多狀態都遍歷不到。

Code

#include<cstdio> #include<cstring> #include<algorithm> #include<cctype> using namespace std; int n,m,ans; int a[17],b[17],c[17],p[17],f[14348907+5]; bool bz[17]; inline int read() {int X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X; } int main() {n=read(),m=read();for(int i=1;i<=m;i++){b[i]=read();if(b[i]<=b[i-1] || b[i]<1 || b[i]>n) return 0&printf("0");}for(int i=p[0]=1;i<=n;i++) p[i]=p[i-1]*3;f[0]=1;for(int i=0;i<p[n];i++)if(f[i]){bool pd=true;int tot=0,x=i;for(int j=n-1;j>=0;j--){c[j+1]=x/p[j];if(x>=p[j]){if(c[j+1]==1) a[++tot]=j+1;x%=p[j];}else pd=false;}reverse(a+1,a+1+tot);if(pd && tot==m) ans+=f[i];memset(bz,false,sizeof(bz));int num=1;while(num<=m && c[b[num]]) num++;while(num+1<=m) bz[b[++num]]=true;for(int j=1;j<=n;j++)if(!c[j] && !bz[j]){if(j>a[tot]){if(tot==m) continue;f[i+p[j-1]]+=f[i];}else{int y=upper_bound(a+1,a+1+tot,j)-a;f[i+p[j-1]+p[a[y]-1]]+=f[i];}}}printf("%d",ans);return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 5600. 【NOI2018模拟3.26】Arg的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲国产精品成人av | 国产乱码精品一区二区三区亚洲人 | 免费网站在线观看视频 | 污污小视频| 黄污视频在线播放 | 在线观看国产精品入口男同 | 欧美最猛黑人xxxx | 福利网址在线 | 在线观看亚洲精品视频 | 六月婷婷网| 男人都懂的网站 | 无码精品一区二区免费 | 奇米色播| 日本不卡视频一区二区三区 | 欧美 日韩 综合 | 偷偷操不一样的久久 | 国产香蕉精品 | 欧美精品一区二区三区蜜臀 | 久久久999 | 亚洲国内精品 | 少妇真实被内射视频三四区 | 欧美 日韩 国产 在线 | 亚州av网| 久久爱一区 | 拔插拔插华人 | 国产香蕉精品视频 | 亚洲一区二区在线看 | 亚欧在线免费观看 | 久久理论 | 亚洲一区欧洲二区 | 久久久99精品国产一区二区三区 | 国产成人av一区二区 | 成人亚洲电影 | 香蕉视频官网在线观看 | 四虎影视永久地址 | 鲁丝一区二区 | 色狠av| 成人av小说 | 8050午夜二级 | 欧美视频在线一区 | 在线免费黄色网 | 学生调教贱奴丨vk | 国产黑丝在线播放 | 午夜精品久久久久久毛片 | 无码人妻丰满熟妇啪啪网站 | www.白丝 | 人妻天天爽夜夜爽一区二区三区 | 欧美视频在线一区二区三区 | 精品人妻码一区二区三区红楼视频 | 国产超碰在线 | 久久精品一区二区三区不卡牛牛 | 国模精品视频一区二区 | 成人午夜激情网 | 夜夜爽妓女8888视频免费观看 | 欧美激情片在线观看 | 日韩不卡在线播放 | 久久最新免费视频 | 已满18岁免费观看电视连续剧 | 欧美一线高本道 | 国产午夜免费视频 | 西西人体44www大胆无码 | 国产免费片 | 久久无码人妻一区二区三区 | 99自拍偷拍 | 波多野结衣激情视频 | 国产美女被草 | 一个人看的毛片 | 欧洲做受高潮欧美裸体艺术 | 精品国产色 | 亚洲在线一区 | 日韩精品极品视频 | 中文字幕狠狠 | 男生裸体视频 | 成人夜色 | 色七七桃花影院 | 日本视频免费观看 | 日韩视频在线视频 | av大全免费观看 | 国产成人免费在线 | 国产精品久线在线观看 | 亚洲欧美色图片 | 欧美在线一二三区 | 美女被猛网站 | 成人福利影院 | 国产一区二区视频免费 | 日日骚av | 国产综合网站 | 丰满人妻在公车被猛烈进入电影 | 喷水了…太爽了高h | 国产精品自拍一区 | 黄色片在线观看视频 | 91极品蜜桃臀 | 大学生一级一片全黄 | 日本美女一区二区 | 97精品一区 | 男女男精品视频网站 | 国产一二三区av | 91娇羞白丝 | 亚洲丝袜在线视频 |