题意:长度为n,m的2个数列a,b。a中有m个0,将m个数代替0,问是否只有一种放法让a为递增的,可以输出No,否则Yes
思路:当m大于1的时候,肯定是Yes,然后我们将他放进去试一下就行了
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main(){ 5 int n,k; 6 cin>>n>>k; 7 int a[100]; 8 int b[100]; 9 for(int i=1;i<=n;i++){ 10 scanf("%d",&a[i]); 11 } 12 for(int i=1;i<=k;i++) scanf("%d",&b[i]); 13 if(k>1){ 14 cout<<"Yes"<<endl; 15 } 16 else { 17 if(a[1]==0) a[1]=b[1]; 18 for(int i=1;i<n;i++){ 19 if(a[i+1]==0){ 20 swap(a[i+1],b[1]); 21 } 22 if(a[i]>=a[i+1]){ 23 cout<<"Yes"<<endl;return 0; 24 } 25 } 26 if(a[n-1]>=a[n]){ 27 cout<<"Yes"<<endl;return 0; 28 } 29 cout<<"No"<<endl; 30 } 31 return 0; 32 }