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

AtCoder Beginner Contest 373

时间:2024-09-28 22:23:14浏览次数:8  
标签:AtCoder 题意 Beginner int 代码 long mxn ++ 373



A - September

题意

给\(12\)个字符串,问长度等于标号的字符串个数。

思路

模拟。

代码

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

const int mxn = 1e6 + 5;

void solve()
{
	int ans = 0;
	for (int i = 0; i < 12; i++)
	{
		string s;
		cin >> s;
		if (s.size() == i + 1)
		{
			ans++;
		}
	}
	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;
}

B - 1D Keyboard

题意

给从\(A\)到\(Z\)的\(26\)个英文字母,从\(A\)开始,一次走\(1\)步,每个字母都要走到,问走到\(Z\)要几步。

思路

模拟。

代码

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

void solve()
{
	string s;
	cin >> s;
	vector<int> v(26);
	for (int i = 0; i < s.size(); i++)
	{
		v[s[i] - 'A'] = i;
	}
	int ans = 0;
	for (int i = 1; i < 26; i++)
	{
		ans += abs(v[i] - v[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;
}

C - Max Ai+Bj

题意

两个长度为\(n\)的序列,找出\(A_i+B_j\)的最大值。

思路

两个序列各自的最大值之和就是答案。

代码

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

void solve()
{
	int n, x, maxn1 = LLONG_MIN, maxn2 = LLONG_MIN;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> x;
		maxn1 = max(maxn1, x);
	}
	for (int i = 0; i < n; i++)
	{
		cin >> x;
		maxn2 = max(maxn2, x);
	}
	cout << maxn1 + maxn2 << 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 - Hidden Weights

题意

给\(n\)个点,\(m\)条边及其边权\(w\),给每个点赋权\(x\),使得\(x_{v_j} - x_{u_j} = w_j\),题目保证有解。

思路

从任意一个顶点开始赋值,然后使用\(dfs\)遍历其所有邻点,计算每个顶点的值\(x_{v_j} = x_{u_j} + w_j\)。

代码

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

const int mxn = 1e6 + 5;

int idx;
int to[mxn], nxt[mxn], head[mxn], edge[mxn], ans[mxn];
bool vis[mxn];

void add(int u, int v, int w)
{
    to[++idx] = v;
    edge[idx] = w;
    nxt[idx] = head[u];
    head[u] = idx;
}

void dfs(int u, int val)
{
    vis[u] = true;
    ans[u] = val;
    for (int i = head[u]; i; i = nxt[i])
    {
        int v = to[i];
        if (!vis[v])
        {
            dfs(v, val + edge[i]); //  val_v - val_u = edge[i]
        }
    }
}

void solve()
{
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < m; i++)
    {
        int u, v, w;
        cin >> u >> v >> w;
        u--, v--;
        add(u, v, w);
        add(v, u, -w); // 反向边
    }
    for (int i = 0; i < n; i++) // 遍历所有点,防止不连通
    {
        if (!vis[i])
        {
            dfs(i, 0);
        }
    }
    for (int i = 0; i < n; i++)
    {
        cout << ans[i] << " ";
    }
}

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

    int T = 1;
    while (T--)
    {
        solve();
    }
    return 0;
}

E - How to Win the Election

题意

思路

代码

点击查看代码


F -

题意

思路

代码

点击查看代码


G -

题意

思路

代码

点击查看代码



比赛链接 <>

标签:AtCoder,题意,Beginner,int,代码,long,mxn,++,373
From: https://www.cnblogs.com/Seii/p/18438486

相关文章

  • 题解 ABC373G【No Cross Matching】/ POJ3565【Ants】
    题目描述年轻的自然主义者比尔在学校里研究蚂蚁。他的蚂蚁以生活在苹果树上的蚜虫为食。每个蚂蚁群需要自己的苹果树来养活自己。比尔有一张地图,上面标有\(n\)个蚂蚁群和\(n\)棵苹果树的坐标。他知道蚂蚁从它们的蚂蚁群到它们的取食地点,然后返回蚂蚁群,都是使用化学标记的路线......
  • 【Atcoder训练记录】AtCoder Beginner Contest 373
    https://atcoder.jp/contests/abc373/tasks赛后反思B题第一次读错题意,浪费了几分钟,需加强审题能力对于图论有些生疏,D题为简单图论,在76min的时候才AC,需加强训练图论A题给定12个字符串,求字符串长度\(=i\)的个数,直接模拟#include<bits/stdc++.h>#defineintlonglongu......
  • Buildings(AtCoder Beginner Contest 372)
    #include<bits/stdc++.h>#defineendl'\n'usingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();signedmain(){#ifdefGordenfreopen("E:/ProgramFiles/CLion2023.2.2/my/exe/in.txt&quo......
  • AtCoder Beginner Contest 372(4/7)
    比赛链接:https://atcoder.jp/contests/abc372开头:过去一个多月了,虽然暑假就上了蓝,但感觉自已一直还没达到蓝的水准,网络赛也打了两场,打的一般,开学之后一直比较忙,现在稳定了下来,接下来打算尽量每周3-4篇atcoder的题解吧,这是这周第一篇,虽然有点水(A.delete.思路:签......
  • AtCoder Regular Contest 184 D Erase Balls 2D
    转化计数对象。直接数最终剩下的球的集合似乎并不好做。考虑数选择的球的集合(显然选择的顺序不重要,只有选择了哪些球重要)。先把所有球按\(x\)坐标从小到大排序。设我们选择的球的下标为\(i_1<i_2<\cdots<i_k\)。那么能选择这些球当且仅当\(y_{i_1}>y_{i_2}>\cdots......
  • AtCoder Beginner Contest 372 补题记录
    A-delete题意:输出删除字符串中.后的字符串思路:只输出字符串中不是.的字符voidsolve(){strings=sread();for(autoit:s)if(it!='.')cout<<it;cout<<endl;}B-3^A题意:给出M,求将M拆分成N个3的\(A_i\)次方相加思路:贪心,从大到小用......
  • AtCoder Beginner Contest 372(A - F)
    A:直接输出。B:把\(M\)三进制拆分,最多10位,每位最多为2,\(N\le20\)足够了。C:暴力修改,每次只产生\(O(1)\)影响。D:预处理st表,二分每个\(j\)会断哪些\(i\)产生贡献,差分一下。E:启发式合并平衡树,\(k\)更大也能做。F:只保留有特殊边经过的点,把\(i,j\)之间的\(j-i......
  • Atcoder Beginner Contest 372
    AtcoderBeginnerContest372A模拟即可。#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;voidsolve(){charch;while(cin>>ch){if(ch!='.'){cout<<ch;}}}......
  • AtCoder Beginner Contest 372
    省流版A.暴力即可B.转换3进制即可C.考虑答案的组成,仅修改发生变化的部分即可D.维护答案数组\(ans_i\),考虑枚举\(j\)对哪些\(i\)有贡献,通过单调栈找到对应的区间\(i\),通过差分维护区间加法即可E.并查集维护连通块,\(set\)维护点标号大小,合并\(set\)时启发式合并,查询......
  • UNIQUE VISION Programming Contest 2024 Autumn (AtCoder Beginner Contest 372)
    总结(我的塘人局):单调栈是忘得差不多了 A-delete.题意:输出删除所有'.'的字符串思路:遍历输出不是'.'复杂度:O(n) Code:#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;usingi64=int64_t;voidsolve(){strings;cin......