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

AtCoder Beginner Contest 382

时间:2024-11-30 22:45:19浏览次数:9  
标签:AtCoder 题意 Beginner 寿司 int 代码 long ++ 382



A - Daily Cookie

题意

给定长为\(n\)的串,“.”代表空,“@”代表饼干,一天吃一块饼干,问\(d\)天后有几个格子是空的。

思路

模拟。

代码

点击查看代码
#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, d;
	string s;
	cin >> n >> d >> s;
	int cnt = count(s.begin(), s.end(), '@');
	cout << s.size() - (cnt - d) << 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 - Daily Cookie 2

题意

题意同\(A\),每天吃最右边的饼干,输出最后的情况。

思路

模拟。

代码

点击查看代码
#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, d;
	string s;
	cin >> n >> d >> s;
	int cnt = 0;
	for (int i = s.size() - 1; i >= 0; i--)
	{
		if (s[i] == '@')
		{
			s[i] = '.';
			cnt++;
			if (cnt == d)
			{
				cout << s << endl;
				return;
			}
		}
	}
}

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

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

	return 0;
}

C - Kaiten Sushi

题意

\(n\)个寿司,第\(i\)个寿司有美味度\(b_i\);\(m\)个人,第\(i\)个人有标准\(a_i\)。将寿司放在传送带上,当第\(i\)个人面前经过寿司\(j\)且\(a_i \ge b_j\),他会把寿司吃掉,否则什么都不做。问每个寿司被几号人吃掉,没人吃就输出\(-1\)。

思路

容易发现,当一个人\(i\)前边有人\(j\)且\(a_i \ge a_j\)时,\(i\)永远吃不到寿司,因此能吃到寿司的人就是原序列中的递减子序列。而人的顺序是不能变的,那就将寿司降序排序,如果一个人吃不了当前的寿司,那后边的他都吃不了(a_i < b_j),就看下一个人。

代码

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

const int mxn = 1e6 + 5;
int n, m;

vector<pii> b;

int _get(int x)
{
	int l = 0, r = m;
	while (l <= r)
	{
		int mid = l + r >> 1;
		if (b[mid].first >= x)
		{
			l = mid + 1;
		}
		else
		{
			r = mid - 1;
		}
	}
	return l;
}

void solve()
{
	cin >> n >> m;
	vector<int> a(n), ans(m, -1);
	vector<pii> A;
	b.resize(m);
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	int minn = a[0];
	A.push_back({ a[0], 1 });
	for (int i = 1; i < n; i++)
	{
		if (a[i] < minn)
		{
			minn = a[i];
			A.push_back({ a[i], i + 1 });
		}
	}
	for (int i = 0; i < m; i++)
	{
		cin >> b[i].first;
		b[i].second = i;
	}
	sort(b.begin(), b.end(), greater<pii>());
	int now = 0;
	for (int i = 0; i < A.size(); i++)
	{
		int p = _get(A[i].first);
		for (int j = now; j < p; j++)
		{
			ans[b[j].second] = A[i].second;
		}
		now = p;
	}
	for (int i = 0; i < m; i++)
	{
		cout << ans[i] << 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 -

题意

思路

代码

点击查看代码


E -

题意

思路

代码

点击查看代码



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

标签:AtCoder,题意,Beginner,寿司,int,代码,long,++,382
From: https://www.cnblogs.com/Seii/p/18579026

相关文章

  • Atcoder Beginner Contest 330 题解
    前言过于水的一场。ACountingPasses题面给出一个长度为\(n\)的序列\(a\),求出\(a\)之中大于等于\(l\)的数个个数。\(1\len\le100,1\lea_i\le1000,1\lel\le1000\)。制約入力は全て整数$1\\le\N\\le\100$$1\\le\L\\le\1000$$0\\le\A_i\\le......
  • AtCoder Beginner Contest 381
    省流版A.按题意判断即可B.按题意判断即可C.枚举/的位置,然后分别向左右找到最长的1串和2串,然后取最小值即可D.讨论起始位置的奇偶性,然后用双指针,每两个字符每两个字符,维护出现的次数为2,两种情况取最大值即可E.答案为所有/的左右12个数的最小值的最大值,注意到个数随着/......
  • AtCoder ABC321F - #(subset sum = K) with Add and Erase 题解 可撤销背包
    题目链接:https://atcoder.jp/contests/abc321/tasks/abc321_f题目大意:给定大小为\(k\)的背包和\(q\)次操作,支持两种操作:插入一个大小为\(x\)的元素;删除一个大小为\(x\)的元素。每次操作后,求装满背包方案数。解题思路:可撤销背包。插入\(x\)时,fori=K->x......
  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)
    A-Cyclic链接:A-Cyclic代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){ stringss; cin>>ss; cout<<ss[1]<<ss[2]<<ss[0]<<""<<ss[2]<<ss[0]<<ss[1]; return0;}B-Strawberri......
  • 【Atcoder训练记录】AtCoder Beginner Contest 381
    训练情况赛后反思简单题A题做红温了,怒吃6罚时,C题双指针其实差不多想出来了,但是对于判断字符串合法其实可以只判断两个端点,不需要全部遍历,中途还想了二分做法(?),然而写到最后发现并没有二分单调性。A题记得判断字符串的长度必须是奇数,\(1\sim\frac{n+1}{2}-1\)是1,\(\frac{......
  • AtCoder Beginner Contest 381
    这场比赛打的冷汗直流,然后无奈寄掉。C-11/22Substring本以为直接暴力就可以,但是需要加前缀和优化,一个正向处理,一个反向处理,然后查找/。abc381_d赛前2分钟hack掉自己的代码,然后寄掉。双指针答案必须是连续的区间,所以想到双指针维护区间合法性,但需要处理以下细节:\(a_r\n......
  • BeginnersBook-Perl-教程-一-
    BeginnersBookPerl教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0Perl-列表和数组原文:https://beginnersbook.com/2017/05/perl-lists-and-arrays/在Perl中,人们可以交替使用术语列表和数组,但是存在差异。列表是数据(标量值的有序集合),数组是保存列表的变量。如何定......
  • 洛谷 P3382 三分
    三分题目背景本题可能存在严重精度问题,部分数据下难以通过。本题数据较水,仅供参考。题目描述如题,给出一个NNN次函数,保证在范围......
  • C - Word Ladder (Toyota Programming Contest 2024#9 (AtCoder Beginner Contest 370)
    题目链接:C-WordLadder题目:样例:分析:不要被题目所吓到,一切长题目都是纸老虎。题目大意就是给你两个字符串s和t,一次只能更换一个字母,求s变到t更换的次数,并输出每次更换一个字母后的最小字典序字符串。题意好理解,可以直接暴力,大力出奇迹。但是有没有更好的方法呢?既然问了......
  • Atcoder Beginner Contest 372
    AtcoderBeginnerContest372A模拟即可。#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;voidsolve(){charch;while(cin>>ch){if(ch!='.'){cout<<ch;}}}......