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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JZOJ 3693. 【NOI2014模拟6.20】慎二的随机数列

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

Description

間桐慎二是間桐家著名的廢柴,有一天,他在學校隨機了一組隨機數列,準備使用他那強大的人工智能求出其最長上升子序列,但是天有不測風云,人有旦夕禍福,柳洞一成路過時把間桐慎二的水杯打翻了……

現在給你一個長度為n 的整數序列,其中有一些數已經模糊不清了,現在請你任意確定這些整數的值,使得最長上升子序列最長(為何最長呢?因為間桐慎二向來對自己的人品很有信心)。

Input

第一行一個正整數n。

接下來n 行,第i 行若為“K x”,則表示第i 個數可以辨認且這個數為x;若為“N”,則表示第i 個數已經辨認不清了。

Output

第一行一個整數,表示最長的最長上升子序列長度。

Sample Input

4

K 1

N

K 2

K 3

Sample Output

3

Data Constraint

對于10%的數據,n ≤ 1000,不存在“N”。

對于30%的數據,“N”的個數≤ 20,0 ≤ x ≤ 100000。

對于100%的數據,n ≤ 100000,|x| ≤ 10^9。

Solution

  • 首先提出一個猜想:一定有一個最優方案包含所有的N

  • 證明如下:

  • 當有N在方案序列外時,可以使方案更優,不成立;

  • 當有N在方案序列內時,可以代替其中一個數,從而使這個方案包含這個N。

  • 那么猜想成立。所以答案就相當于把確定的數拿出來,每個數等于原數減去之前N的個數。

  • 然后對此序列做一次最長上升子序列,再加上N的總個數即可!

Code

#include<cstdio> #include<algorithm> using namespace std; int ans,sum; int f[100001]; inline int read() {int data=0,w=1; char ch=0;while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();if(ch=='-') ch=getchar(),w=-1;while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();return data*w; } int main() {int n=read();f[0]=-1e9;for(int i=1;i<=n;i++){char ch=getchar();while(ch!='K' && ch!='N') ch=getchar();if(ch=='N') sum++; else{int x=read()-sum;if(f[ans]<x) f[++ans]=x; else f[lower_bound(f+1,f+1+ans,x)-f]=x;}}printf("%d",ans+sum);return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 3693. 【NOI2014模拟6.20】慎二的随机数列的全部內容,希望文章能夠幫你解決所遇到的問題。

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