Loading

AtCoder Beginner Contest 402 (Tokio Marine & Nichido Fire Insurance Programming Contest 2025)



A - CBC

题意

思路

模拟

代码

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

const int mxn = 2e5 + 10;

void solve()
{
	string s;
	cin >> s;
	for (int i = 0; i < s.length(); i++)
	{
		if (isupper(s[i]))
		{
			cout << s[i];
		}
	}
}

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

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

	return 0;
}


B - Restaurant Queue

题意

思路

模拟

代码

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

const int mxn = 2e5 + 10;

queue<int> q;

void solve()
{
	int op;
	cin >> op;
	if (op == 1)
	{
		int x;
		cin >> x;
		q.push(x);
	}
	else
	{
		cout << q.front() << endl;
		q.pop();
	}
}

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

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

	return 0;
}


C - Dislike Foods

题意

思路

统计每道菜含有的不吃配料数量,遍历克服的配料,同时更新,为\(0\)就可以吃

代码

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

const int mxn = 2e5 + 10;

void solve()
{
	int n, m;
	cin >> n >> m;
	vector<vector<int>> a(m), idx(n);
	vector<int> cnt(m, 0);
	for (int i = 0; i < m; i++)
	{
		int k;
		cin >> k;
		cnt[i] = k;
		for (int j = 0; j < k; j++)
		{
			int x;
			cin >> x;
			x--;
			idx[x].push_back(i);
		}
	}
	int ans = 0;
	for (int i = 0; i < n; i++)
	{
		int x;
		cin >> x;
		x--;
		for (int j = 0; j < idx[x].size(); j++)
		{
			cnt[idx[x][j]]--;
			if (!cnt[idx[x][j]]) ans++;
		}
		cout << ans << endl;
	}
}

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

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

	return 0;
}


D - Line Crossing

题意

思路

\(a_i+b_i\ mod\ n\)相同的直线平行,统计平行的对数用总数减去即可

代码

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

const int mxn = 2e5 + 10;

void solve()
{
	int n, m;
	cin >> n >> m;
	vector<int> cnt(n, 0);
	for (int i = 0; i < m; i++)
	{
		int a, b;
		cin >> a >> b;
		cnt[(a + b) % n]++;
	}
	int ans = m * (m - 1) >> 1;
	for (auto& i : cnt)
	{
		ans -= i * (i - 1) >> 1;
	}
	cout << ans << endl;
}

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

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

	return 0;
}


E - Payment Required

题意

思路

\(n\) 位二进制串\(j\)表示过题的状态(\(1\)\(0\)不过),则总的状态就是\([0, 1 << n]\),对于每个状态,我们枚举此时过掉的题目 \(k\),当\(j\)的第\(k\)位是\(1\)时才表示这题在这次提交中通过,用 \(f_{i,j}\) 表示花费了\(i\)通过了状态为\(j\)的题目的最大期望,则此时的期望为 \(f_{i,j} =\ max\{\ f_{i,j},\ \frac {P_k} {100}\ (f_{i-c_k,\ j\ \oplus{(1<<k)}} + s_k) + \frac {100 - P_k} {100}\ f_{i-c_k,\ j}\}\)

代码

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

const int mxn = 2e5 + 10;


void solve()
{
	int n, x;
	cin >> n >> x;
	vector<int> s(n), c(n), p(n);
	for (int i = 0; i < n; i++)
	{
		cin >> s[i] >> c[i] >> p[i];
	}
	vector<vector<double>> f(x + 1, vector<double>((1LL << n) + 5, 0.0)); 
	double ans = 0.0;
	for (int i = 0; i <= x; i++)
	{
		for (int j = 0; j <= (1LL << n); j++)
		{
			for (int k = 0; k < n; k++)
			{
				if ((j >> k) & 1 && c[k] <= i)
				{
					// f[i - c[k]][j & ~(1LL << k)] 表示第k题没通过时的最大期望
					f[i][j] = max(f[i][j], p[k] / 100.0 * (f[i - c[k]][j & ~(1LL << k)] + s[k]) + (100.0 - p[k]) / 100.0 * f[i - c[k]][j]);
				}
				ans = max(ans, f[i][j]);
			}
		}
	}
	cout << fixed << setprecision(6) << ans << endl;
}

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

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

	return 0;
}



比赛链接 https://atcoder.jp/contests/abc402/tasks/abc402_f

posted @ 2025-04-22 22:02  _SeiI  阅读(48)  评论(0)    收藏  举报