問題描述】
有乙個主序列,以及另外m個序列。請你判斷這些序列是否是主序列刪除若
幹個數字之後得到的。
【輸入格式】
輸入的第一行包含乙個整數n,代表主序列的長度。接下來一行包含?個空
格分隔的整數,代表主序列。
第三行包含乙個整數m,代表需要判斷的序列個數。每個序列用兩行描述,
第一行給出其長度li ,第二行包含li 個空格分隔的整數,代表這個序列。
【輸出格式】
對於每個需要判斷的序列,輸出一行 yes 或者 no,代表序列是否是由主序
列刪除若干個數字後得到的。
【樣例輸入】
71 5 4 5 7 8 645
1 5 5 8 6
32 2 2
35 7 8
41 5 7 4
【樣例輸出】
暴力直接對比兩個序列竟然有40分?!
震驚~我的**:
#include#includeview code#include
#include
using
namespace
std;
int b[1000005
];int t[1000005
];int a[1000005
];int k[1000005
];int
n,t,n;
bool
flag;
inline
intread()
while(ch>='
0'&&ch<='9'
) s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return s*w;
}int
main()
if(flag)
else haha++;
if(haha==n+1||tot==n+1)break
; }
if(tot!=n+1)flag=false
; }
if(flag)cout<
yes"
;
else cout<
; cout
<
; }
fclose stdin;
fclose stdout;
return0;
}/*71 5 4 5 7 8 645
1 5 5 8 6
32 2 2
35 7 8
41 5 7 4
*/
思路的話
大概就是有點貪心的感覺了,,
感性理解一下
孫土蛋還是nb呀
#include #includeview codeconst
int n = (int
)1e6;
//const int size = (int)24e6;
struct
node q[n + 1
];int s[n + 1], p[n + 1], st[n + 1], len[n + 1], h[n + 1], cnt = 0
;int
n, m;
bool v[n + 1
];//
char inbuf[size], *ip = inbuf;
//inline int read()
inline
void addnode(int x, int s, int
p) int
main()
for (int i = 1; i <= n; ++i)
}for (int i = 1; i <= m; ++i)
fclose(stdin);
fclose(stdout);
return0;
}
題解 括號序列 棧
可以猜到,ssw02爆0了 ssw02要懟一下 y 資料和標程都是反的,題還換錯了一道,t2做了一半換題意,s emmm 題目出現了九條老師.然後發現一句經典,不要先開題面 有九條 我妻 輸入 就是一行字串了 輸出 就是方案數了 我們先用棧來判斷是否合法,想著騙分,然後 咦?這個東西,可以簡化吧。然...
題解 出棧序列統計
描述 棧是常用的一種資料結構,有n個元素在棧頂端一側等待進棧,棧頂端另一側是出棧序列。你已經知道棧的操作有兩種 push和pop,前者是將乙個元素進棧,後者是將棧頂元素彈出。現在要使用這兩種操作,由乙個操作序列可以得到一系列的輸出序列。請你程式設計求出對於給定的n,計算並輸出由運算元序列1,2,n,...
題解 最長公共子串行
描述 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列。確切地說,若給定序列x 則另一串行z 是x的子串行是指存在乙個嚴格遞增的下標序列,使得對於所有j 1,2,k有 xij zjx z jxij zj 例如,序列z 是序列x 的子串行,相應的遞增下標序列為 2,3,5,7 給定兩個序列x和...