牛客小白月赛66

这一场比赛吃完饭回来才打。(此篇文章使用Markdown语法编写。测试用)
A 先交换
思维
- 如果是偶数,那就去后面找一个比大的奇数就行。
AC代码
x#include<bits/stdc++.h>
using namespace std;
int a[105];
int main()
{
int T; cin >> T;
while( T-- )
{
int n; cin >> n;
for( int i = 1 ; i <= n ; i++ ) cin >> a[i];
if( a[1] % 2 == 1 ) cout << 0 << endl;
else
{
int f = -1;
for( int i = 2 ; i <= n ; i++ )
{
if( a[i]%2 == 1 && a[i] < a[1] )
{
f = 1; break;
}
}
cout << f << endl;
}
}
}
B 再交换
思维 模拟
- 注意特殊情况,那就是这种情况,直接找数位相同的交换就好。
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T; cin >> T;
while( T-- )
{
int n, f1 = 0, f = 0; cin >> n;
string A, B;
cin >> A >> B;
// cout << A << endl << B;
for( int i = 0 ; i < n ; i++ )
{
if( A[i] > B[i] )
{
f1 = 1;
cout << i+1 << " " << i+1 << endl;
break;
}
else if( A[i] == B[i] ) f = i+1;
}
if( f1 == 1 )
{
continue;
}
else if( f1 == 0 && f != 0 )
{
cout << f << " " << f << endl;
}
else
cout << n << " " << n << endl;
}
}
C 空洞骑士
思维
这个题赛时并没有写出来,最后直接猜结论也没猜对,或许再多给一点时间就写出来了。
- 答案肯定只有三种。
AC代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5;
int p[N+5];
signed main()
{
int s = 0, t = 1e9;
int m;
cin >> m;
int mx = 0, mn = t;
for( int i = 1 ; i <= m ; i++ )
{
cin >> p[i];
mx = max(mx, p[i]);
mn = min(mn, p[i]);
}
int a = 2*mx - 1;
int b = 2*(t-mn)-1;
int c = t;
if( a >= b && a >= c ) cout << s << " " << 1;
else if( b>= a && b >=c ) cout << t << " " << t-1;
else cout << s << " " << t;
}