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

AtCoder Beginner Contest 379

时间:2024-11-09 23:29:48浏览次数:4  
标签:AtCoder 题意 Beginner int 代码 cin long 379 solve



A - Cyclic

题意

输入\(3\)个连续字符\(a,b,c\),输出另外两种顺序。

思路

模拟。

代码

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

const int mxn = 1e6 + 5;



void solve()
{
	char a, b, c;
	cin >> a >> b >> c;
	cout << b << c << a << endl;
	cout << c << a << b << 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 - Strawberries

题意

给定长度为\(n\)的串\(s\)(只包含\(O,X\)),和\(k\)。每次可以消耗连续个\(O\)来使答案加\(1\)。求答案。

思路

模拟。

代码

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

const int mxn = 1e6 + 5;

void solve()
{
	int n, k, ans = 0, cnt = 0;
	string s;
	cin >> n >> k >> s;
	for (int i = 0; i < n; i++)
	{
		if (s[i] == 'X')
		{
			cnt = 0;
		}
		else
		{
			cnt++;
		}
		if (cnt == k)
		{
			ans++;
			cnt = 0;
		}
	}
	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;
}

C - Sowing Stones

题意

\(n\)个格子,有\(m\)个格子有石头。接下来的\(2\)行每行\(m\)个数据,分别代表石头的位置及数量。每次能将一个石头前移一格(但不能越界)。求使得每个格子恰有一个石头的最小操作数,不可能则输出\(-1\)。

思路

假设开始所有石头都在第\(1\)格,则需要操作\(\frac {n \ (n + 1)} 2\)(等差数列求和)。刨去石头总数多/少了的情况,对于有石头的一格\(i\),它可以少操\(x[i] × a[i]\)次。
注意:输入不一定是有序的,就是这个让我打出了集训以来最不是人的操作

代码

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

const int mxn = 1e6 + 5;

void solve()
{
	int n, m, sum = 0;
	cin >> n >> m;
	vector<pii> v(m + 1);
	for (int i = 1; i <= m; i++)
	{
		cin >> v[i].first;
	}
	for (int i = 1; i <= m; i++)
	{
		cin >> v[i].second;
		sum += v[i].second;
	}
	if (sum > n)
	{
		cout << -1 << endl;
		return;
	}
	sort(v.begin(), v.end());
	int ans = n * (n + 1) / 2, now = 0;
	for (int i = 1; i <= m; i++)
	{
		if (now < v[i].first - 1)
		{
			cout << -1 << endl;
			return;
		}
		now += v[i].second;
		ans -= v[i].first * v[i].second;
	}
	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 - Home Garden

题意

\(10^100\)个花盆,\(q\)次操作,每次操作分\(3\)种:
\(1\):拿个空花盆种一颗植物,初始高度为\(0\);
\(2 t\):等\(t\)天,现有植物长高\(t\)。
\(3 h\):输出高度\(h\)及以上的植物的数量,并将这些植物移出花盆。

思路

由于植物的生长速度一致,所以收获的一定是先种下的植物,用队列来存各个植物种下的时间即可。

代码

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

const int mxn = 1e6 + 5;

int tim = 0;
queue<int> q;

void solve()
{
	int cmd;
	cin >> cmd;
	switch (cmd)
	{
	case 1:
		q.push(tim);
		break;
	case 2:
		int t;
		cin >> t;
		tim += t;
		break;
	case 3:
	{
		int h, ans = 0;
		cin >> h;
		while (q.size() && tim - q.front() >= h)
		{
			ans++;
			q.pop();
		}
		cout << ans << endl;
	}
		break;
	default:
		break;
	}
}

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

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

	return 0;
}

E -

题意

思路

代码

点击查看代码


F -

题意

思路

代码

点击查看代码


G -

题意

思路

代码

点击查看代码



比赛链接 <>

标签:AtCoder,题意,Beginner,int,代码,cin,long,379,solve
From: https://www.cnblogs.com/Seii/p/18537442

相关文章

  • 题解:AT_abc379_d [ABC379D] Home Garden
    难度严格小于C题。你考虑每盆花被种植的时间一定单调不降,这启示我们去用二分。具体的,我们用一个数组\(a\)表示当前所有的花的种植时间,并记录一个当前时间\(t\)。对于每个1操作都在数组后面加上个元素\(t\),对于\(2\)操作让\(t\leftarrowt+T\)。对于操作3,能够摘取的......
  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)题解
    总体情况A-Cyclic题意给你一个三位整数\(N\),其中每个数字都是介于\(1\)和\(9\)之间的整数。设\(a\),\(b\),\(c\)分别是\(N\)的百位、十位和个位数。打印一个按此顺序排列\(b\),\(c\),\(a\)所组成的整数,以及一个按此顺序排列\(c\),\(a\),\(b\)所组成......
  • AT_abc379_g
    过于一眼的轮廓线dp。兼纪念abc首场无伤AK。首先我们可以经过缜密的计算的得到矩形的宽不超过\(14\)。然后现在你有\(4\)个数(边界视作\(0\))。不难想到\(4\)进制状压轮廓线dp。轮廓线dp状压dp的一种,轮廓线是分隔已处理部分与未处理部分的线。在本题中,轮廓线......
  • atcoder DP做题笔记
    [ABC163E]ActiveInfants题意:给定长度为\(n(n\le2\times10^3)\)的序列\(a\),重排使得\(a_x\times|x-p_x|\)之和最大。独立完成。从大到小地考虑\(a_i\),贪心地使得\(|x-p_x|\)最大。那么\(p_x\)要么在最左,要么在最右。因此在左边和右边形成了一坨前/后缀,然后......
  • AtCoder Beginner Contest 358 - VP记录
    Preface这次的动规题真的多,起码有三道都是。赛时做完ABCD以后就去攻G去了,可惜犯了煞笔错误搞WA了。赛后补F的时候思路代码啥的都挺顺的(没看题解独立切的蓝题),就是犯了更煞笔的错误,成消愁......
  • AtCoder Beginner Contest 378 ——F
    https://atcoder.jp/contests/abc378/tasks/abc378_fhttps://atcoder.jp/contests/abc378/editorial/11307#include<bits/stdc++.h>#definexfirst#defineysecond#defineall(x)(x).begin(),(x).end()#definelowbit(x)(x)&-(x)usingnamespacestd;ty......
  • paddleSOT beginner
    paddleSOTbeginner入门学习一个例子说明什么是动转静示例:在动态图和静态图中的简单计算假设我们有一个简单的神经网络模型,每次输入一个张量x,然后做一些数学运算并输出结果。这个过程使用PaddlePaddle框架中的动转静技术可以分为两个部分来说明。1.动态图实现在动态图模......
  • AtCoder Beginner Contest 284题解
    AtCoderBeginnerContest284A没有什么难点,反着输出一遍就可以了。#include<bits/stdc++.h>usingnamespacestd;stringa[2000];intmain(){ intn; cin>>n; for(inti=1;i<=n;i++)cin>>a[i]; for(inti=n;i;i--)cout<<a[i]<<'\n';......
  • AtCoder Beginner Contest 378
    ContestLink还得加练。A&B&C&D不具备任何思维含量。SubmissionASubmissionBSubmissionCSubmissionDE注意到它计算答案的式子,每个子区间和都需要取模,否则就是沙币题了,可以对于每个位置\(O(1)\)地统计答案扫过去然后\(\bmodM\)。常规地,记\(S_i=\sum......
  • AtCoder Beginner Contest 360 - VP记录
    A-AHealthyBreakfast高桥日常出境。头一次知道getchar()的返回值是int。点击查看代码#include<cstdio>usingnamespacestd;intmain(){ chars[3]={getchar(),getchar(),getchar()}; if(s[0]=='R'&&s[1]=='M')puts("Yes"); els......