數集
題目背景:
11.06 noip
模擬t1
分析:佇列
考慮暴力的想法當然是直接維護乙個堆,每一次取出最小的乙個,然後把
2 * x + 1, 3 * x + 1 push
進去,但是看看最大資料,
1000000
還有10
組資料,這怕不是要死人······於是乎,認真想正解,然後就發現了,顯然,因為每一次取出的數是一次遞增的,那麼
2 * x + 1
和3 * x + 1
也一定是遞增的,也就是說這兩個數值都是單調的,有沒有很熟悉,沒錯就是
noip2016
蚯蚓的想法,我們直接維護兩個佇列,乙個是
2 * x + 1
的佇列,乙個
3 * x + 1
的佇列,每次取隊首較小的乙個然後將新的兩個數加到隊尾即可。
注意:本題需要去重,具體怎麼去呢,你想想看如果同乙個數有兩個,那你第二次取出這個數的時候,一定是你第一次取出之後的那一次······所以直接判斷和上一次取出的數是否一樣即可。
source:
/*
created by scarlyw
*/#include #include #include #include #include #include #include #include #include #include const int maxn = 1000000 + 10;
int a, n, cur;
int q[2][maxn << 1 | 1];
inline void solve()
int tail1 = 0, tail2 = 0, head1 = 1, head2 = 1, last = a;
q[0][++tail1] = 2 * a + 1, q[1][++tail2] = 3 * a + 1;
for (int i = 2; i <= n; ++i) while (cur == last);
q[0][++tail1] = cur * 2 + 1, q[1][++tail2] = cur * 3 + 1, last = cur;
} std::cout << cur << '\n';
}int main()
NOIP模擬(10 30)T1 比賽
比賽 題目背景 10.30 noip 模擬t1 分析 暴力 將資料從小到大排序,從大到小找到第乙個滿足 a i k a i 1 的位置,那麼答案就是 n i 了,如果找不到那麼就是 n了 注意邊界 source created by scarlyw include include include i...
11 06 模擬賽T1 字串
倉鼠有乙個長度為 n 的字串,但他不小心把這個字串丟掉了。幸運的是,他曾經記下了這個字串的所有長度為 m 的子串。請你幫他還原出這個字串。第一行兩個整數 n,m。接下來 n m 1 行每行乙個長度為 m 的字串。字符集 為小寫字母。一行乙個長度為 n 的字串表示答案。保證有解,如果有多組解可以輸出任...
NOIP模擬 簡單 T1 舉辦比賽
border 0 width 330 height 86 src mstdream 舉辦了一場搶答比賽!這場搶答比賽有 n 支隊伍參賽,第 i 支隊伍將會被分配乙個隨機值 si,每乙個問題,si 值較小的隊伍會擁有優先發言權,於是 mstdream 想知道所有隊伍最小的 si 值,以便統計 但是,由...