題目描述
繁繁有乙個雙向佇列,佇列裡有數字1-n這n個數字,繁繁每次可以從佇列中任意拿出乙個數字,將其放在佇列的頭部或者佇列的尾部,不停這樣操作,直到佇列變成公升序,求最小操作次數。
輸入第一行乙個數字n(n<=50000)
接下來n行,每行乙個數字
輸出
乙個數表示最小操作次數
樣例輸入525
341
樣例輸出2
提示對於樣例1,5個數:2,5,3,4,1
step1:5放到隊尾→2,3,4,1,5;
step2:1放到隊頭→1,2,3,4,5;
需要兩步操作。
對於30%的資料,n<=100
對於50%的資料,n<=1000
對於100%的資料,n<=50000
//#pragma gcc optimize(3)
#include#include#include#include#include#include#include#include#include#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define swap(x,y) (x^=y,y^=x,x^=y)
using namespace std;
typedef long long ll;
const int n=5e4+10;
const int mod=1e9+7;
int a[n];
templateinline void read(t &x)
templateinline void print(t x)
int dp[n];
int vis[n];
int main()
int maxn=-1;
for(int i=1;i<=n;i++)
}print(n-maxn);
cout《具體思路就是找相差1的最長遞增子串行。
繁繁的數字
題目描述 繁繁今天學習了二進位制,繁繁覺得二進位制很神奇,任何乙個整數都可以由一些互不相同的2的方冪表示,例如7的二進位制是111 2,所以7 4 2 1,繁繁不滿足於此,繁繁在想,如果把互不相同這個條件去掉,會有多少種方案呢?輸入 一行乙個整數n 1 n 1000000 輸出 乙個乙個數,表示答案...
繁繁的遊戲
題目描述繁繁想和小夥伴們打遊戲,遊戲在乙個山莊進行,這個山莊有n座山,編號為1到n,為了方便大家在不同的山之間移動,繁繁建了一些橋,由於技術的原因,橋連線的兩座山的高度差不能超過d,現在已知這些橋,求這個山莊最高的山和最低的山差距最大是多少?資料保證所有山之間都是聯通的。輸入第乙個乙個數t,表示測試...
繁繁的遊戲 Floyd
繁繁想和小夥伴們打遊戲,遊戲在乙個山莊進行,這個山莊有n座山,編號為 1 到 n 為了方便大 家在不同的山之間移動,繁繁建了一些橋,由於技術的原因,橋連線的兩座山的高度差不能超過 d 現在已知這些橋,求這個山莊最高的山和最低的山差距最大是多少?輸入格式 第乙個乙個數t,表示測試資料數量 t 5,2 ...