題目:
題意:
有n個盒子,每個盒子最多裝乙個球. 球的顏色不一定相同.分析:現在要進行m次區間操作:
每次操作 [l, r] 後可以隨意將區間內的球重新分配回去.
問經過上述操作後是否有可能達到給定的狀態.
官方題解:
假設有4個紅球,初始時從左到右標為1,2,3,4。那麼肯定存在一種方案,使得最後結束時紅球的順序沒有改變,也是1,2,3,4。 那麼就可以把同色球都寫成若干個不同色球了。所以現在共有n個顏色互異的球。按照最終情況標上1,2,。。,n的序號,那麼貪心的來每次操作就是把乙個區間排序就行了。**:
using namespace std;
#define fi first
#define se second
typedef pairpii;
const int n=1e3+2;
pii q[n];
int n,m,x,l,r;
int main()
for(int i=1;i<=n;i++)
}while(m--)
bool flag=1;
for(int i=1;i<=n;i++)
if(q[i].fi!=i)
if(flag)puts("yes");
else puts("no");
}return
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 ...
HDU5821 Ball 2016多校第八場01
大意 給兩串序列,不同數字表示不同的球,0表示沒有,例如 1 0 0 0 0 0 0 1 再給定一組區間,例如 1 3 3 4 依次對區間內球重新放置,問最後能否從第一行變換成第二行序列。假設有4個紅球,初始時從左到右標為1,2,3,4。那麼肯定存在一種方案,使得最後結束時紅球的順序沒有改變,也是1...