版权声明:本文为博主原创文章,未经博主允许也可以转载。 https://blog.csdn.net/FrankAx/article/details/82896614
Code:
#include <bits/stdc++.h>
using namespace std;
int main(){
int T;
cin >> T ;
string s ;
while( T-- ){
cin >> s;
int a = 0 , b = 0 , c = 0 ;
int len = s.size() ;
for( int i = 0 ; i < len ; i++ ){
if( s[i] >= 'a' && s[i] <= 'z' ){
a ++ ;
}else if( s[i] >= 'A' && s[i] <= 'Z' ){
b ++ ;
}else c ++ ;
}
if( a && b && c ){
cout << s << endl;
}
else if( a && !b && !c ){
cout << 1 << 'A' ;
for( int i = 2 ;i < len ; i++ ) cout << s[i] ;
cout << endl;
}
else if( !a && b && !c ){
cout << 1 << 'a' ;
for( int i = 2 ;i < len ; i++ ) cout << s[i] ;
cout << endl;
}
else if( !a && !b && c ){
cout << 'a' << 'A' ;
for( int i = 2 ;i < len ; i++ ) cout << s[i] ;
cout << endl;
}
else if( a && b && !c ){
int id ;
if( a > 1 ){
for( int i = 0 ; i < len ; i++ ) if(s[i]>='a' && s[i] <='z') { s[i] = '1' ; break;}
}else{
for( int i = 0 ; i < len ; i++ ) if(s[i]>='A' && s[i] <='Z') { s[i] = '1' ; break;}
}
for( int i = 0 ; i < len ; i++ ) cout << s[i] ;
cout << endl;
}
else if( a && !b && c ){
int id ;
if( a > 1 ){
for( int i = 0 ; i < len ; i++ ) if(s[i]>='a' && s[i] <='z') { s[i] ='A'; break;}
}else{
for( int i = 0 ; i < len ; i++ ) if(s[i]>='0' && s[i] <='9') { s[i] ='A'; break;}
}
for( int i = 0 ; i < len ; i++ ) cout << s[i] ;
cout << endl;
}
else if( !a && b && c ){
int id ;
if( b > 1 ){
for( int i = 0 ; i < len ; i++ ) if(s[i]>='A' && s[i] <='Z') { s[i] = 'a' ; break;}
}else{
for( int i = 0 ; i < len ; i++ ) if(s[i]>='0' && s[i] <='9') { s[i] = 'a' ; break;}
}
for( int i = 0 ; i < len ; i++ ) cout << s[i] ;
cout << endl;
}
}
return 0 ;
}
Code:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long l , r ;
cin >> l >> r ;
cout << "YES" << endl;
for( long long i = l ; i <= r ; i++ ){
cout << i << ' ' << i + 1 << endl;
i ++ ;
}
return 0 ;
}
Code:
#include <bits/stdc++.h>
using namespace std;
const int AX = 1e2 + 6 ;
int a[AX];
int main(){
int n ;
cin >> n ;
set<int> s ;
map<int,int>mp;
int len = 0 ;
for( int i = 0 ; i < n ; i++ ){
cin >> a[i] ;
mp[a[i]] ++ ;
}
for( int i = 0 ; i < n ; i++ ){
if( mp[a[i]] == 1 ){
len ++ ;
}
}
if( len % 2 == 0 ){
cout << "YES" << endl;
int num = len / 2 ;
int cnt = 0 ;
for( int i = 0 ; i < n ; i++ ){
if( mp[a[i]] == 1 ){
if( cnt < num ){
cnt ++ ;
cout << "A" ;
}else{
cout << "B" ;
}
}else cout << "A" ;
}
cout << endl;
}else{
int f = 0 ;
for( int i = 0 ; i < n ; i++ ){
if( mp[a[i]] >= 3 ){
f = 1 ;
break ;
}
}
if(!f) cout << "NO" << endl;
else{
cout << "YES" << endl;
//cout << len << endl;
int num = (len - 1) / 2 ;
int cnt = 0 ;
map<int,int>sp ; int ff = 0 ;
for( int i = 0 ; i < n ; i++ ){
if( mp[a[i]] == 1 ){
if( cnt < num ){
cnt ++ ;
sp[i] = 1 ;
}else{
sp[i] = 2 ;
}
}else if( mp[a[i]] >= 3 && !ff ){
sp[i] = 1 ; ff = 1 ;
}
}
for( int i = 0 ; i < n ; i++ ){
cout << ( sp[i] == 1 ? 'A' : 'B' ) ;
} cout << endl;
}
}
return 0 ;
}
思路:
只有两行,所以用0代表白1代表黑,就能表示最后一列的状态,然后用
dp[i][k][s] 表示共i列第k行状态是s的方案数。
Code:
#include <bits/stdc++.h>
#define LL long long
using namespace std ;
const int MOD = 998244353 ;
const int AX = 1e3 + 66 ;
LL dp[AX][AX*4][5];
void init(){
memset( dp , 0 , sizeof(dp) ) ;
dp[1][1][0] = 1 ;
dp[1][1][3] = 1 ;
dp[1][2][1] = 1 ;
dp[1][2][2] = 1 ;
}
int main(){
int n , k ;
init() ;
for( int i = 2 ; i <= 1000 ; i++ ){
for( int k = 1 ; k <= 2 * i ; k ++ ){
dp[i][k][0] = 0LL + dp[i-1][k-1][3] + dp[i-1][k][0] % MOD + dp[i-1][k][1] + dp[i-1][k][2] % MOD ;
dp[i][k][1] = 0LL + dp[i-1][k-1][3] + dp[i-1][k-1][0] % MOD + dp[i-1][k][1] % MOD ;
if( k >= 2 ) dp[i][k][1] = ( dp[i][k][1] + dp[i-1][k-2][2] ) % MOD ;
dp[i][k][2] = 0LL + dp[i-1][k-1][3] + dp[i-1][k-1][0] % MOD + dp[i-1][k][2] % MOD ;
if( k >= 2 ) dp[i][k][2] = ( dp[i][k][2] + dp[i-1][k-2][1] ) % MOD ;
dp[i][k][3] = 0LL + dp[i-1][k][3] + dp[i-1][k-1][0] % MOD + dp[i-1][k][1] + dp[i-1][k][2] % MOD ;
}
}
cin >> n >> k ;
LL res = 0LL ;
res = ( dp[n][k][0] + dp[n][k][1] % MOD + dp[n][k][2] + dp[n][k][3] ) % MOD;
cout << res << endl;
return 0 ;
}