此题为水题不讲解
根据无解析写代码1:
#include <bits/stdc++.h>
using namespace std;
string s;
int main(){
getline(cin,s);
int len=s.length();
for(int i=0;i<len;i++){
if(s[i]>='A' && s[i]<='Z'){
s[i]+=32;
}else if(s[i]>='a' && s[i]<='z'){
s[i]-=32;
}
}
cout<<s;
return 0;
}
根据解析写代码2:
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
long long t;
long long n;
cin>>t;
while(t--){
cin>>n;
cout<<(long long)sqrt(n-1)<<'\n';
}
return 0;
}
以下仅讨论 总个数为偶数的情况
1 的个数 = 0
---> 3 的个数 一定为偶数
---> 3的个数 = 0 奇数个 2 NO
偶数个 2 YES
---> 3的个数 > 0 1个2 NO
否则 YES
1 的个数 > 0
---> 1 的个数 >= 3 YES
---> 1 的个数 == 2
---> 3 的个数 = 0 YES
---> 3 的个数 > 0 YES
---> 1 的个数 == 1
---> 3 的个数是奇数
---> 2 的个数 = 0 NO
---> 2 的个数 > 0 YES
根据解析写代码3:
#include <bits/stdc++.h>
using namespace std;
int t,n,a[10005],sum,one,two,three;
int main(){
cin >> t;
while (t--){
cin >> n;
one = 0;
two = 0;
three = 0;
sum = 0;
for(int i = 1;i <= n;i++) {
cin >> a[i];
if (a[i] == 1)
one++;
else if (a[i] == 2)
two++;
else
three++;
sum += a[i];
}
if (sum % 2 == 1)
{
cout << "NO\n";
continue;
}
if(one == 0) {
if (three % 2 == 0)
{
if (three == 0)
{
if (two % 2 == 0)
cout << "YES\n";
else
cout << "NO\n";
}
else if(three > 0)
{
if (two == 1)
cout << "NO\n";
else
cout << "YES\n";
}
}
}
else if(one > 0){
if (one > 1)
cout << "YES\n";
else if (one == 1){
if (three % 2 == 1){
if(two == 0){
cout << "NO\n";
}else if(two > 0){
cout << "YES\n";
}
}
}
}
}
return 0;
}
1.一个标记升序(sort())
2.一个标记降序
然后比较1和原数组
如果1和原数组相等或2和原数组相等
输出0
不一样:遍历然后cnt++
根据解析写代码4:
#include <bits/stdc++.h>
using namespace std;
const int N=5e6+5;
int a[N];
int b[N];
int vis[N];
int main(){
long long n;
long long cnt=0;
long long ans=1e9;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i];
}
sort(b+1,b+1+n);
for(int i=1;i<=n;i++){
a[i]=lower_bound(b+1,b+1+n,a[i])-b;
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
int now=i;
while(vis[now]==0){
vis[now]=1;
now=a[now];
}
cnt++;
}
}
ans=min(ans,n-cnt);
reverse(a+1,a+1+n);
memset(vis,0,sizeof(vis));
cnt=0;
for(int i=1;i<=n;i++){
if(vis[i]==0){
int now=i;
while(vis[now]==0){
vis[now]=1;
now=a[now];
}
cnt++;
}
}
ans=min(ans,n-cnt);
cout<<ans;
return 0;
}