首页 > 其他分享 >Educational Codeforces Round 163 (Rated for Div. 2) - VP记录

Educational Codeforces Round 163 (Rated for Div. 2) - VP记录

时间:2024-10-29 13:59:50浏览次数:6  
标签:Educational Rated int scanf Codeforces l2 && l1 include

Preface

这次难度感觉挺平均的,前面的题不水,后面的题也不毒瘤(可能是因为我做的不够后面)

A. Special Characters

开局构造题。

因为特殊字符一定是成对出现的(包括两边的,可以分类讨论思考一下),所以只有 \(n\) 为偶数的时候才有解。

然后直接以 AABBAABB... 的格式输够 \(n\) 个就行了。

点击查看代码
#include<cstdio>
using namespace std;

int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		int n; scanf("%d",&n);
		if(n&1) printf("NO\n");
		else
		{
			printf("YES\n");
			for(int i=1;i<=n>>1;i++)
			{
				char ch='A'+(i&1);
				putchar(ch),putchar(ch);
			}
			putchar('\n');
		}
	}
	return 0;
}

B. Array Fix

利用贪心,让前面的数拆的尽量小,所以只要可以拆(十位大于个位且拆开后比前面打)就直接拆,最后判断是不是不降序列。

点击查看代码
#include<cstdio>
using namespace std;

const int N=55;
int n,a[N];
int m,b[N<<1];

int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		m=0;
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			if(a[i]<10) b[++m]=a[i];
			else
			{
				if(a[i]/10>=b[m] && a[i]/10<=a[i]%10)
				{
					b[++m]=a[i]/10;
					b[++m]=a[i]%10;
				}
				else b[++m]=a[i];
			}
		}
		bool ans=true;
		for(int i=2;i<=m;i++)
			if(b[i]<b[i-1])
			{
				ans=false;
				break;
			}
		printf("%s\n",ans?"YES":"NO");
	}
	return 0;
}

C. Arrow Path

类似图遍历的处理方法,记录每一个位置能否通过第一/二步到达,然后转换步骤尝试再走。

最后判断终点是否能以第二步到达。

点击查看代码
#include<cstdio>
#include<queue>
using namespace std;

const int N=2e5+5;
int n;
char str[5][N];
bool arrow[5][N];
bool f[5][N],g[5][N]; //can reach there by step 1/2
const int dx[5]={1,-1,0,0};
const int dy[5]={0,0,1,-1};

int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		scanf("%d%s%s",&n,str[1]+1,str[2]+1);
		for(int i=1;i<=n;i++)
		{
			f[1][i]=f[2][i]=g[1][i]=g[2][i]=false;
			arrow[1][i]=str[1][i]=='>';
			arrow[2][i]=str[2][i]=='>';
			//0-'<'; 1-'>'
		}
		
		queue<pair<pair<int,int>,bool>> q;
		q.push({{1,1},0});
		while(!q.empty())
		{
			int x=q.front().first.first,y=q.front().first.second;
			bool type=q.front().second;
			q.pop();
			if(type==0) //to go step1
			{
				for(int i=0;i<4;i++)
				{
					int tx=x+dx[i],ty=y+dy[i];
					if(tx>=1&&tx<=2 && ty>=1&&ty<=n && !f[tx][ty])
					{
						f[tx][ty]=true;
						q.push({{tx,ty},1});
					}
				}
			}
			if(type==1) //to go step2
			{
				int tx=x,ty=y;
				if(arrow[x][y]) ty++;
				else ty--;
				if(tx>=1&&tx<=2 && ty>=1&&ty<=n && !g[tx][ty])
				{
					g[tx][ty]=true;
					q.push({{tx,ty},0});
				}
			}
		}
		printf("%s\n",g[2][n]?"YES":"NO");
	}
	return 0;
}

D. Tandem Repeats?

如果我告诉你我是用暴力 \(O(N^3)\) 卡过的你信吗?

就是枚举两段序列开头,然后暴力判断是否合法。

然后剪枝 + 各种反转搜索顺序 + 猜测 Hack 数据就稀里糊涂卡过了(\(1609\) ms)

不建议学,可以去看下正解

点击查看代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=5005;
int n; char s[N];

int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		scanf("%s",s+1);
		n=strlen(s+1);
		int ans=0;
		for(int l1=1;l1<=n&&l1<=n-(ans<<1);l1++)
		{
//			if(ans>=(n-l1+1)>>1) break;
			for(int l2=l1+((n-l1+1)>>1);l2>l1&&l2>ans+l1;l2--)
			{
//				if(ans>=l2-l1) break;
				bool flag=true;
				for(int len=l2-l1;len>=1;len--)
				{
					int p1=l1+len-1,p2=l2+len-1;
					if(!(s[p1]=='?'||s[p2]=='?' || s[p1]==s[p2]))
						{flag=false; break;}
				}
				if(flag) ans=max(ans,l2-l1);
			}
		}
		printf("%d\n",ans<<1);
	}
	return 0;
}

E. Clique Partition

正在施工……

标签:Educational,Rated,int,scanf,Codeforces,l2,&&,l1,include
From: https://www.cnblogs.com/jerrycyx/p/18512693

相关文章

  • CodeForces
    CodeForces做题记录CodeforcesGlobalRound27ASliding当\((r,c)\)被取走时:\(\foralli\in[r+1,n],(i,1)\)会移动到\([i-1,m]\),曼哈顿距离为\(m\)。\(\foralli\in[r+1,n],j\in[2,m],(i,j)\)会移动到\((i,j-1)\),曼哈顿距离为\(1\)。\(......
  • Educational Codeforces Round 171 (Rated for Div. 2)题解记录
    比赛链接:https://codeforces.com/contest/2026A.PerpendicularSegments题目说了必定有答案,直接对角线即可#include<iostream>#include<queue>#include<map>#include<set>#include<vector>#include<algorithm>#include<deque>#include<......
  • Educational Codeforces Round 171 (Rated for Div. 2)
    目录写在前面A签到B暴力C反悔贪心D枚举,分块,推式子E网络流,最大权闭合子图F写在最后写在前面比赛地址:https://codeforces.com/contest/2026。因为太困了决定睡大觉,于是赛时unratedregister只写了DE。然而十一点半上床还是失眠到一点半睡的太搞了呃呃A签到B暴力限......
  • Educational Codeforces Round 171 (Rated for Div. 2)
    A.PerpendicularSegments分析题目中的要求\(34\),说明需要较短的线段尽量长,那么两个线段应该一样长而又要求线段垂直,那么两线段可以放在一个正方形内做对角线那么此时\(x\)和\(y\)对称(代数一样上),取两个的较小值做一个正方形,答案即为对角线#include<bits/stdc++.h>usin......
  • Codeforces Round 982 (Div. 2) 10.26 (ABC)题解
    CodeforcesRound982(Div.2)10.26(ABC)题解A.RectangleArrangement数学(math)题意:有一个无限长宽的方形网格,初始为白色,现在有\(n\)个印章,每个印章有自己的宽\(w_i\)和高\(h_i\)。印章会使得网格涂色,变成黑色。这\(n\)个印章都需要使用一次,需要求解出最后网格中黑色......
  • Codeforces Round 982 (Div. 2) 题解(A-D)
    目录A思路codeB思路codeC思路卡题原因codeD思路未ac原因codeCodeforcesRound982(Div.2)A思路因为图形可以重叠,所以答案就是最长的长和最长的宽组成的矩形周长.codevoidfunc(void){ intn; cin>>n; intl=0,r=0; while(n--) { intx,y; cin>>x>>y......
  • Codeforces Round 982 (Div. 2)
    A.RectangleArrangement题目给定\(n\)个矩形,\(n\)个矩形可以组成的图形(可以重叠)中,最小的周长的多少,矩形不能旋转,分析乍一看并没有什么思路,但是写出这个题并不能,案例很好的提示了我们要将所有矩形一角放一起,那么最后就会组成一个阶梯形状的图案,感觉割补法,这个图形周长等......
  • Codeforces Round 981 (Div. 3) 题解(A-E)
    目录分析A思路代码B思路卡题原因代码C思路卡题原因codeD思路卡题原因代码E思路wa原因codeCodeforcesRound981(Div.3)分析这场整体发挥都不好,虽然题也抽象,但是对于这些题完全没必要卡这么久.正常至少能看到\(\mathbf{F}\)A思路因为边界\(n\)管辖\(\pm\),而Sak......
  • Codeforces Round 980 (Div. 2) 题解(A-D)
    目录A思路B思路wa原因C思路wa原因代码D思路未ac原因代码CodeforcesRound980(Div.2)A思路推方程式即可,勉强算贪心吧.需要使得\({a-x}\)最小,那么\(x\)就需要最小,而满足题目条件,需要\(a-x\geb-2x\)得出\(x\geb-a\),又因为需要\(a\)最大,所以\(......
  • Python's exec Functions: Execute Dynamically Generated Code
      #encoding:utf-8#版權所有2024©塗聚文有限公司#許可資訊查看:言語成了邀功的功臣,還需要行爲每日來值班嗎?#描述:主、子表單窗體傳值Parent-childformoperations#Author:geovindu,GeovinDu塗聚文.#IDE:PyCharm2023.1python3.11#OS......