srm 300 div2 1000(貪心高階)

2021-06-29 10:31:36 字數 844 閱讀 6119

題意:

有乙個環,上面2n個位置,其中n個互不相同的小寫字母。

小寫代表車,大寫代表車位。

一次操作是指把某輛車直接移動到車位上。

如 bacacb,乙個合法的移動順序是,a, c, b

求出字典序最小的移動順序,如果無解輸出none。

思路:

貪心策略:每次取字典序最小的可以移動的車移動, 如果不存在。則無解。

如果最後有解,因為每次取最小,所以自然是最小字典序。

但是,怎麼在無解的情況下,其他的取法也不可能有解呢?

假設…c….c….現在最小的可以移動的車是c

如果存在乙個合法順序,把c放到以後來移動。那麼c…c之間的一段在c移動之前一定都是空的, 也就意味著c的移動順序可以被提前。

string notok = "none";

class circleorder

if (circle[pos] == j+'a'-('a'-'a'))

pos = p[j];

while ( (islower(circle[pos]) && used[circle[pos] - 'a'] || isupper(circle[pos]) && !used[circle[pos] - 'a'] || circle[pos] - 'a' == j)

&& circle[pos] != j+'a'-('a'-'a'))

if (circle[pos] == j+'a'-('a'-'a'))

}if (ok)

else

return notok;

}return ans;

}}

SRM 07 D 天才麻將少女KPM

天才麻將少女kpm立志要在日麻界闖出一番名堂。kpm上週叒打了n場麻將,但她這次又沒控分,而且因為是全市參與的麻將大賽,所以她的名次範圍是0.10 5。名次可能等於0是因為kpm那場沒去打 沒去打就意味著無限的可能性。kpm叒想要讓自己的名次嚴格遞增。為了避免被妹子懷疑,她只能把沒打的比賽的名次改成...