小y的序列
時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
special judge, 64bit io format: %lld
題目描述
小y有一塊長度為n的布匹。顏色全部為0。他要給這個布匹染色。他總共有m種染料。小y認為一種染料用多次是不和諧的。所以每種染料會被用剛好一次。也就是說小y要給這塊布匹染m次色。第i次會把l_ili
到r_iri
這個區間染成顏色i。現在給出最終布匹每段的顏色。請你輸出一種染色方案。資料保證有解
輸入描述:
輸入共兩行。
第一行兩個個正整數n,m,表示布匹的長度和染料的數量
第二行n個用空格隔開的正整數,第i個數字a_iai
表示第i個布匹的顏色。
輸出描述:
輸出m行。
第i行包含兩個正整數l_i,r_ili
,ri ,表示第i次染色的區間。
示例1輸入
複製3 3
1 2 3
輸出複製
1 32 3
3 3備註:
1 \leq n ,m\leq 10^51≤n,m≤10
50 \leq a_i \leq m0≤ai
≤m1\le l_i \le r_i\le n1≤li
≤ri ≤n
思路:本題細節過多,需要仔細讀題。
我們用兩個陣列 l[i] ,r[i] 分別代表 顏色i出現的最左位置和最右位置,
如果這個顏色在最終陣列中沒有出現,那麼一定是被編號比它大的顏色覆蓋掉了,
那麼對於沒有出現的顏色,我們就輸出出現過的編號最大的顏色所在的位置即可。
細節見**:
#include #include #include #include #include #include #include #include #include #include #include #define all(x) (x).begin(), (x).end()
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i#define pll pair#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define ms0(x) memset((x), 0, sizeof((x)))
#define msc0(x) memset((x), '\0', sizeof((x)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getint(&x)
#define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<>n>>m;
repd(i,1,m)
int x;
int ok;
repd(i,1,n)
for(int i=m;i>=1;i--)
}repd(i,1,m)
}else
}}
牛客練習賽44 A 小y的序列 模擬
小y有一塊長度為n的布匹。顏色全部為0。他要給這個布匹染色。他總共有m種染料。小y認為一種染料用多次是不和諧的。所以每種染料會被用剛好一次。也就是說小y要給這塊布匹染m次色。第i次會把li到ri這個區間染成顏色i。現在給出最終布匹每段的顏色。請你輸出一種染色方案。資料保證有解 輸入共兩行。第一行兩個...
牛客練習賽44 小y的線段 思維
題目描述 給出n條線段,第i條線段的長度為 ai 每次可以從第 i 條線段的j位置跳到第 i 1 條線段的 j 1 位置。如果第 i 1 條線段長度不到j 1,那麼就會回到第 i 條線段的 0 位置,然後繼續跳。問從第 i 條線段的 0 位置跳到第 n 條線段需要跳多少次。解題思路 題目上的 n 的...
牛客練習賽44 B 小y的線段 (思維)
題目描述 給出n條線段,第i條線段的長度為a iai 每次可以從第i條線段的j位置跳到第i 1條線段的j 1位置。如果第i 1條線段長度不到j 1,那麼就會回到第i條線段的0位置,然後繼續跳。問從第i條線段的0位置跳到第n條線段需要跳多少次 為了減少輸入量,a陣列將由以下方式得到 unsigned ...