牛客練習賽44 A 小y的序列 (模擬,細節)

2022-05-03 12:39:27 字數 1699 閱讀 2024

小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 ...