A
题意如图。
思路:
构造出一个负正负正负正。。。的序列即可。
B
.
题意如图。
思路:
直接构造到最终情况即可
.
C
.
C 思路:
直接比较第一个数和最后一个数的大小即可。
.
D
.
D 思路:
把这个序列变成0 1 2 3 。。。 n-1 n 这样的序列。
每次暴力得到一个mex,如果mex <= n-1 ,就把它放到该放的位置。
否则就放到 一个不影响正确序列的位置即可。
代码A
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+15;
typedef long long ll;
ll a[N];
int main()
{
ll t,n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
if(a[1]>0) a[1]=-a[1];
for(int i=2;i<=n;i++)
{
if(i%2==0)
{
if(a[i]<0) a[i]=-a[i];
}
else
{
if(a[i]>0) a[i]=-a[i];
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}
代码B
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+15;
typedef long long ll;
ll a[N][N];
int main()
{
ll t,n,m;
cin>>t;
while(t--)
{
int f=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]>4)
{
f=1; //break;
}
}
}
if(a[1][1]>2||a[1][m]>2||a[n][1]>2||a[n][m]>2)
f=1;
for(int i=2;i<=m-1;i++)
{
if(a[1][i]>3||a[n][i]>3)
f=1;
}
for(int i=2;i<=n-1;i++)
{
if(a[i][1]>3||a[i][m]>3)
f=1;
}
if(f==1)
{
cout<<"NO"<<endl; continue;
}
cout<<"YES"<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
a[i][j]=4;
}
}
for(int i=1;i<=m;i++)
{
a[1][i]=3; a[n][i]=3;
}
for(int i=1;i<=n;i++)
{
a[i][1]=3; a[i][m]=3;
}
a[1][1]=2; a[1][m]=2; a[n][1]=2; a[n][m]=2;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}
代码C
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+15;
typedef long long ll;
ll a[N];
int main()
{
ll t,n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
if(a[n]<a[1])
{
cout<<"NO"<<endl; continue;
}
cout<<"YES"<<endl;
}
return 0;
}
代码D
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+15;
typedef long long ll;
ll a[N*10],b[N*10];
int mp[N]; int vis[N][N];
vector<int>v;
int main()
{
ll t,n,mex=0,x,cnt,lf;
cin>>t;
while(t--)
{
cnt=0,lf=0;
cin>>n;
for(int i=0;i<=n-1;i++)
{
cin>>x; a[i]=x;mp[x]++;
vis[x][i]=1;
}
while(1)
{
for(int i=0;i<=n;i++)
{
if(mp[i]==0)
{
mex=i; break;
}
}
if(mex<=n-1)
{
ll op=a[mex]; a[mex]=mex;
b[++cnt]=mex+1;
mp[op]--; mp[mex]++;
}
else
{
for(int i=0;i<=n;i++)
{
if(i==n) { lf=1; break; }
if(a[i]!=i)
{
b[++cnt]=i+1;
mp[a[i]]--; mp[mex]++;
a[i]=mex; break;
}
}
}
if(lf==1) break;
}
cout<<cnt<<endl;
for(int i=1;i<=cnt;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
for(int i=0;i<=n+10;i++)
mp[i]=0;
}
return 0;
}
//2222222222222222