Codeforces Round #784 (Div. 4)

Problem - C - Codeforces

题意:给定任意次变换(下标为奇数的集体+1或者是下标为偶数的集体+1),判断是否有可能将下标为奇数的元素全部变成奇数,下标为偶数的元素全部变成偶数

思路:如果下标为奇数或者偶数的元素同时存在奇数或者偶数,那么必定不能通过转换变成完全是奇数或者是偶数,反之,则可以

#include
#define x first
#define y second
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define debug cout<<"debug"<<'\n';
using namespace std;
typedef long long LL;
typedef pair PII;
const int N=1e5+10,M=1,inf=0x3f3f3f3f,mod=1e9+7;
int a[N];
int n,t;

int main()
{
    cin>>t;
    
    while(t--)
    {
    	cin>>n;
    	
    	bool flag1=false,flag2=false;
    	bool flag3=false,flag4=false;
    	
    	for(int i=1;i<=n;i++) 
		{
		   int x;
		   cin>>x;
		   
		   if(i%2==1)
		   {
		   	   if(x%2==1) flag1=true;
		   	   else if(x%2==0) flag2=true;
		   }
		   else if(i%2==0)
		   {
		   	   if(x%2==1) flag3=true;
		   	   else if(x%2==0) flag4=true;
		   }
		   
        }
    	
    	if((flag1==true&&flag2==true)||(flag3==true&&flag4==true))
    	{
    		cout<<"NO"<

Problem - D - Codeforces

题意:给你一个字符串,初始是里面字符全为W,你可以将相邻的两个有效位置的字符变成"BR"或者是"RB",可以在同一个位置操作多次,问是否可以通过至少0次变换成指定字符串

结论:连续的BR串一定有R和B

双指针

#include
#define x first
#define y second
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define debug cout<<"debug"<<'\n'
#define endl '\n'
using namespace std;
typedef long long LL;
typedef pair PII;
const int N=1e5+10,M=1,inf=0x3f3f3f3f,mod=1e9+7;
char a[N];
int n,t;

void solve()
{
	cin>>n;
    cin>>a+1;
    
    bool ok=1;
    
    for(int i=1;i<=n;i++)
    {
    	if(a[i]=='W') continue;
    	int j=i;
    	
    	while(j>t;

   while(t--)
   {
	   solve();
   }






	return 0;
}

你可能感兴趣的:(c++,蓝桥杯,算法)