HDU5821 Ball 2016多校第八場01

2021-07-16 14:38:13 字數 830 閱讀 9164

大意:給兩串序列,不同數字表示不同的球,0表示沒有,例如:

1 0 0 0

0 0 0 1

再給定一組區間,例如:

1 3

3 4

依次對區間內球重新放置,問最後能否從第一行變換成第二行序列。

假設有4個紅球,初始時從左到右標為1,2,3,4。那麼肯定存在一種方案,使得最後結束時紅球的順序沒有改變,也是1,2,3,4。 那麼就可以把同色球都寫成若干個不同色球了。所以現在共有n個顏色互異的球。按照最終情況標上1,2,。。,n的序號,那麼貪心的來每次操作就是把乙個區間排序就行了。 ——學軍中學

其實就是很簡單的乙個貪心,將a跟b匹配後,給a按照b的順序重新標號,然後每次按區間對a排序,最後看是否能得到b。

比賽的時候基本沒有什麼有用的思路,看過的學校越來越多,被卡了,哎,還是思維不夠開闊。

#include 

#include

using

namespace

std;

int main()

for(i = 1; i <= n; ++i)

if(j>n)

flag = 1;

}//for(i = 1; i <= n; ++i)

// coutfor(i = 1; i <= n; ++i)

if(s[i] != i)

flag = 1;

if(flag)

cout

<<"no"

cout

<<"yes"

0;}

2016多校總結 hdu5821Ball

新套路get 首先要判斷a陣列可以不可以到達b陣列,如果是1 n那麼就是排序,然後看ab相不相等。但是這個是部分。這裡有兩點關鍵點 1.如果有三個1.位置在b陣列中是pa pb pc 那麼。由a b如果可以到達,那麼一定存在一種方法 是在a中依次遞增的1分別到依次遞增的b陣列。例如 1 1 0 0 ...

Hdu 5821 Ball 貪心 模擬

n個數的序列,給你m次操作,每次操作 l,r 中的數隨意調換位置,問能否變成目標序列。題解在最後 anthor wwq include include include include includeusing namespace std int n1 1005 int n2 1005 struct ...

hdu 5821 Ball 貪心(多校)

題目 題意 有n個盒子,每個盒子最多裝乙個球.球的顏色不一定相同.現在要進行m次區間操作 每次操作 l,r 後可以隨意將區間內的球重新分配回去.問經過上述操作後是否有可能達到給定的狀態.分析 官方題解 假設有4個紅球,初始時從左到右標為1,2,3,4。那麼肯定存在一種方案,使得最後結束時紅球的順序沒...