首页 > 其他分享 >AtCoder Beginner Contest 380

AtCoder Beginner Contest 380

时间:2024-11-16 22:30:21浏览次数:1  
标签:AtCoder 题意 Beginner int 代码 cin long 380 ++



A - 123233

题意

给个\(6\)位数,判断是否是\(1\)个\(1\),\(2\)个\(2\),\(3\)个\(3\)。

思路

模拟。

代码

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 1e6 + 5;


void solve()
{
	string s;
	cin >> s;
	int a = 0, b = 0, c = 0;
	for (int i = 0; i < s.length(); i++)
	{
		if (s[i] == '1')
		{
			a++;
		}
		else if (s[i] == '2')
		{
			b++;
		}
		else if (s[i] == '3')
		{
			c++;
		}
	}
	if (a == 1 && b == 2 && c == 3)
	{
		cout << "Yes" << endl;
		return;
	}
	cout << "No" << endl;
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}

B - Hurdle Parsing header

题意

给个字符串,输出被"|"隔开的"-"每块有几个。

思路

模拟。

代码

点击查看代码


C - Move Segment

题意

给个\(01\)串,可以分为\(1\)-块和\(0\)-块(连续的\(1\)/\(0\))。现在将第\(k\)个\(1\)-块移动到第\(k-1\)个\(1\)-块之后,输出移动后的字符串。(题目保证至少有\(k\)个\(1\)-块)

思路

刚开始自己模拟\(wa\)了,后来发现题目已经告诉答案了:

那就记录一下每个\(1\)-块的起始、结束位置按上边的写。

代码

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 1e6 + 5;

int st[mxn], ed[mxn];

void solve()
{
	int n, k;
	cin >> n >> k;
	string s;
	cin >> s;
	int cnt = 1, t = 0;
	for (int i = 0; i < s.length(); i++)
	{
		if (s[i] == '1')
		{
			if (!t)
			{
				st[cnt] = i;
			}
			t++;
		}
		else
		{
			if (t)
			{
				ed[cnt] = i - 1;
				cnt++;
				t = 0;
			}
		}
	}
	if (t)
	{
		ed[cnt] = s.size() - 1;
	}
	string ans = s;
	for (int j = ed[k - 1] + (ed[k] - st[k]) + 2; j <= ed[k]; j++)
	{
		ans[j] = '0';
	}
	for (int i = ed[k - 1] + 1; i <= ed[k - 1] + (ed[k] - st[k]) + 1; i++)
	{
		ans[i] = '1';
	}
	cout << ans << endl;
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}

D - Strange Mirroring

题意

给定字符串\(s\),进行如下操作10^{100}次:颠倒\(s\)中的大小写得到\(t\),令\(s = s + t\)。后有\(q\)次询问,输出每次询问\(s\)中第\(k\)个位置的字符。

思路

容易发现每次字符串的出都会\(×2\),那就看要查询的位置是在当前字符串的前半段还是后半段,前者不需要颠倒大小写,后者需要,同时后半段对应前半段的位置为\(k - len\)。(开始写的循环有点问题,后面换成递归解决了)

代码

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 1e6 + 5;

string s;

inline char change(char c)
{
	return isupper(c) ? tolower(c) : toupper(c);
}

char f(int k, bool flag)
{
	int len = s.size();
	if (k < len)
	{
		return flag ? change(s[k]) : s[k];
	}
	while (k >= (len << 1))
	{
		len <<= 1;
	}
	return f(k - len, !flag);
}


void solve()
{
	int q;
	cin >> s >> q;
	while (q--)
	{
		int k;
		cin >> k;
		k--;
		putchar(f(k, false));
		putchar(' ');
	}
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}

E -

题意

思路

代码

点击查看代码



比赛链接 https://atcoder.jp/contests/abc380

标签:AtCoder,题意,Beginner,int,代码,cin,long,380,++
From: https://www.cnblogs.com/Seii/p/18549992

相关文章

  • ABC380题解(F&G)
    ABC380F.ExchangeGame因为\(n+m+k\leq12\),考虑状压dp,设\(f(x,s1,s2,s3)\)表示先手,后手,桌子上的牌分别是哪一些,这有\(O(3^n)\)种状态。然后只要枚举出哪一张即可,有\(f(s1,s2,s3)\tof(s2,s1-i+j,s3+i-j)(i\ins1,j\ins3,a_j<a_i)\)\(f(s1,s2,s3)\tof(s2,s1-i,s3+i......
  • ABC380
    Clink点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn,k;chars[500005];intqr,dg,dl,dr;signedmain(){ cin>>n>>k>>s+1; intlx=1,rx=0,op=0,gs=0; for(inti=1;i<=n&&op<=k;++......
  • AtCoder Grand Contests 杂做
    感觉AGC003及以前的题做了大部分,所以从AGC004开始,选一些我觉得合适的题做。AGC004E-*3200一直在往静态的几何(或者代数)限制想,结果没想到可以动态规划。为了更加直观可以看作出口在移动,然后到过的点加分,某些出界的点就被ban掉了。我们可以直接考虑定义\(f_{l,r,u,d}\)......
  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)题解总结
    AtCoderBeginnerContest379Rated:\(770\)A-Cyclic简单模拟。B-Strawberries字符串模拟,substr函数秒了C-Repeating中等模拟。思路:判断是否合法很简单,重点在计算花费。假设我们是\(0\)号点有\(N\)个棋子,然后移动到每个点上,显然花费为\(\frac{N(N+1)}{......
  • AtCoder Beginner Contest 379
    省流版A.模拟即可B.贪心,有\(k\)个就吃,模拟即可C.维护已经有棋子的格子,有多个棋子往右推,代价等差数列求和,模拟即可D.注意到植物高度=当前天-种植天,维护植物的种植天然后二分找对应高度的植物即可E.考虑最终答案每一个数位的值,然后处理进位即可F.单调栈处理建筑\(r\)......
  • Atcoder ABC 216 G 01Sequence 题解 [ 蓝 ] [ 差分约束 ]
    01Sequence:比较板的差分约束,但有一个很妙的转化。朴素差分约束设\(x_i\)表示第\(i\)位的前缀和。我们要最小化\(1\)的个数,就要求最小解,就要求最长路。因为约束条件都是大于等于号,所以求最长路才能满足所有条件。求最大解也是同理。我们可以对于每一个条件,列出如下不等式......
  • Atcoder Beginner Contest 379 (A-F)
    AtcoderBeginnerContest379(A-F)题目链接A-Cyclic#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){chara,b,c;cin>>a>>b>>c;cout<<b<<c<<a<<""<......
  • AtCoder Beginner Contest 353 - VP 记录
    Preface这次比赛蛮简单的,就是黄题有点多,少了区分度。而且SigmaProblemAnotherSigmaProblemYetAnotherSigmaProblem是什么奇妙的题目名称?SigmaProblemAnotherSigmaProblemYetAnotherSigmaProblem\(\texttt{\scriptsizeYet\footnotesizeA......
  • AtCoder 板刷记录
    话说为啥这些场都没有G题的说[ABC200F]MinflipSummation显然的策略是把全部都是一个数的段变成全不都是另一个数,然后考虑进行dp设一个dp[i][0/1][0/1]表示一下前i个字符中奇偶性为j填的数是k时j的总和然后直接做就行了,需要矩阵快速幂加速一下[ABC201F]Insert......
  • AtCoder Beginner Contest 378 题解
    AtCoderBeginnerContest378题解比赛链接A-Pairing贪心#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){vector<int>a(5);for(inti=0;i<4;i++){intx;cin>>x;a[x]++;......