張大牛:「我是天才!」
大肥熊:「你為什麼是天才?」
張大牛:「你隨便給我乙個單詞(大小寫字母組成)長度為n,去掉m個字元後,我能知道字典序最小的字串是什麼樣子的」
大肥熊:「換過來,現在假設這個字典序最小的字串中第ai個字元在原串中的位置為pos,那麼原串中區間[pos-ki,pos+ki]中字典序最大的字元是什麼?」
張大牛又被難倒了。現在這個難倒天才的題目交到你手上了。
注:區間[ pos-ki , pos+ki ]超過原字串的邊界,按照原字串的邊界處理。原串的整個區間為[1,n],如果pos可以取多個值,按照最靠前的位置計算。
輸入檔名為(genius.in)。
第一行m,t。m如題意,t為t組詢問。
第二行為乙個由大、小寫字母組成的字串。串的長度n(n>m>0)。
接下來t行每行兩個正整數ai,ki(1<=ai<=n-m),(1<=ki<=n)。
輸出檔名為(genius.out)。
t行,每行對詢問給出乙個答案。
20 2
abcdefghijklmnopqrstuvwxyz
5 20
3 3
y
f
對於100%資料,n<=10^5 t<=10^5
乍一看,貌似是rmq的題,但是rmq是什麼我不會寫啊!所以我用的線段樹水過。
維護區間最大和區間最小兩個線段樹,用區間最小的線段樹來求字典序最小的子串,記錄子串在字串中的位置,之後對於每個查詢就可以用區間最大的線段樹搞出來。
#include
#include
#include
#include
#include
#define n 100010
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,ls
#define rson mid+1,r,rs
using
namespace
std;
struct node
;node mx[n<<2],mn[n<<2];
int n,m,q;
char s[n];
int a[n];
int f[n];
void pushup(int rt)
void build(int l,int r,int rt)
int mid=(l+r)>>1;
build(lson);
build(rson);
pushup(rt);
}node query_mx(int l,int r,int l,int r,int rt)
node query_mn(int l,int r,int l,int r,int rt)
int main()
build(1,n,1);
int t=n-m,s=1,al=0;
while(++t&&al1,n,1);
f[++al]=x.x;
s=x.x+1;
}for(int i=1;i<=q;i++)
return
0;}
誰是天才 解題報告
誰是天才 time limit 1000ms memory limit 65536k description 這天張大牛遇到了了大肥熊。張大牛 我是天才!大肥熊 你為什麼是天才?張大牛 你隨便告訴我乙個數字,我立即可以算出它所有約數的和,以及所有約數的倒數和!大肥熊 換過來,我告訴你乙個數的所有約數...
天才學生的天才回答 爆笑)
天才學生的天才回答 爆笑 1.某次考試考語文,我的同桌在默詞的時候突然靈感來了 前句 問君能有幾多愁 要求補後句,他補了句 恰似一道紅叉卷上留 原句 恰似一江春水向東流 老師毫不客氣得在卷上打了個x 他還沾沾自喜說 原來我的靈感好靈的!2.也是語文考試默詞,題目是 玉不琢,不成器,結果我們班一強人答...
生意和技術,誰是雞,誰是蛋?
一直以來,有兩種相反的想法 1.技術派覺得,技術是雞,技術的發展往往產生了新的生意 2.生意派覺得,生意是雞,技術都是因生意需要而產生的。但是新的問題來了 1.如果技術是雞,為什麼很多技術無法實際應用於生意?2.如果生意是雞,為什麼很多生意完全不需要技術也能發展得很好?創業者一直在探索的是 1.怎樣...