首页 > 其他分享 >AtCoder Beginner Contest 284 ABCDE

AtCoder Beginner Contest 284 ABCDE

时间:2023-06-12 18:33:47浏览次数:54  
标签:AtCoder 题意 10 int ABCDE cin Statement ans 284

AtCoder Beginner Contest 284

A - Sequence of Strings

Problem Statement

题意:给你n个字符串,让你倒序输出

Solve

#include<bits/stdc++.h>
using namespace std;
const int N = 20;
string s[N];
int main()
{
	int n;
	cin>>n;
	for(int i = 1;i<=n;i++)
		cin>>s[i];
	for(int i = n;i>=1;i--)
		cout<<s[i]<<endl;
	return 0;
}

B - Multi Test Casescenter

Problem Statement

题意:给你一个长度为n的序列,统计奇数出现次数

Solve

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		int ans = 0;
		for(int i = 1;i<=n;i++)
		{
			int x;
			cin>>x;
			if(x&1)ans++;
		}
		cout<<ans<<endl;
	}
	return 0;
}

C - Count Connected Components

Problem Statement

题意:给你一个简单无向图,\(N\)个点,\(M\)条边,找有多少个连通块

Solve

题解:并查集裸题,找有多少个连通块

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n,m,fa[N];
set<int>s;
int find(int x)
{
	if(x==fa[x])return x;
	return fa[x] = find(fa[x]);
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i = 1;i<=n;i++)fa[i] = i;
	for(int i = 1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		int fx = find(x),fy = find(y);
		if(fx!=fy)
			fa[fx] = fy;
	}
	for(int i = 1;i<=n;i++)
		fa[i] = find(fa[i]);
	for(int i = 1;i<=n;i++)
		s.insert(fa[i]);
	cout<<s.size()<<endl;
	return 0;
}

D - Happy New Year 2023

Problem Statement

题意:给你一个正整数\(N\),\(N=p^2 \times q\) ,其中\(p,q\)为两个不同的素数,现在需要找出这个\(p\)和\(q\)。

Solve

题解:

因为发现\(N\)的范围是\(10^{18}\),直接写肯定\(TLE\)。

我们发现\(min(p,q)<\sqrt[3]{N}\),因为当\(p=q\)时,\(min(p,q)\)有最大值等于\(\sqrt[3]{N}\)

又因为题目给的\(N\)一定保证了\(p\)和\(q\)的存在性,且都为质数,所以\(N\)不存在其他因子。

我们只需要找到其中一个去求另一个就行了。时间复杂度O(\(\sqrt[3]{N}\))。

#include<bits/stdc++.h>
using namespace std;
#define int long long

signed main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		for(int i = 2;i<sqrt(n)+1;i++)
		{
			if(n%(i*i)==0)
			{
				cout<<i<<" "<<n/(i*i)<<endl;
				break;
			}
			else if(n%i==0)
			{
				cout<<(int)sqrt(n/i)<<" "<<i<<endl;
				break;
			}
		}
	}

	return 0;
}

E - Count Simple Paths

Problem Statement

题意:给你一个简单无向图,\(N\)个点\(M\)条边,求从\(1\)出发简单路径的数量\(K\)。

简单路:路径中不出现重复的点。

题目保证\(ans = min(K,10^6)\)

  • \(1<=N<=2\times10^5\)
  • \(0 \leq M \leq \min \left(2 \times 10^5, \frac{N(N-1)}{2}\right)\)

Solve

题解:求路径条数?一眼\(dfs\),但是会不会\(TLE\)嘞,不会,因为当\(K>10^6\)时候输出\(10^6\),那就是一个裸的\(dfs\).

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5+10; 
vector<int>edge[N];
int ans  = 0;
bool vis[N];
void dfs(int x)
{
	if(ans>=1e6)
		return;
	ans++;
	for(auto y:edge[x])
	{
		if(!vis[y])
		{
			vis[y] = true;
			dfs(y);
			vis[y] = false;
			if(ans>=1e6)
				return;
		}
	}
}

signed main()
{
	int n,m;
	cin>>n>>m;
	for(int i = 1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		edge[x].push_back(y);
		edge[y].push_back(x);
	}
	vis[1] = true;
	dfs(1);
	cout<<ans<<endl;
	return 0;
}

标签:AtCoder,题意,10,int,ABCDE,cin,Statement,ans,284
From: https://www.cnblogs.com/nannandbk/p/17475818.html

相关文章

  • Atcoder-AGC033C
    看到这道题,是个博弈论,没见过树上的,于是想到在数列里的博弈论,又联想到树的特殊形式————链。于是我们来讨论一下链的情况(对于没有硬币的点,我们就视为它被删掉了):讨论链的情况发现若是选择两端的点,顶点数会减一;若是选择中间的点,顶点数会减二。现在我们站在链的角度来思考......
  • AtCoder Beginner Contest 302
    A-Attack题目大意给定两个数a和b,问我们需要进行多少次a-b,才能让a小于等于0解题思路签到题不多嗦了神秘代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e6+10;signedmain(){inta,b,c;cin>>a>>b;if(a%b......
  • AtCoder Beginner Contest 305 题解
    https://atcoder.jp/contests/abc305/tasks_printE-ArtGalleryonGraph冷知识:md这题赛时没做出来/cy刚看到题:这是什么题啊,\(K,h\)都\(1e5\)能做吗/fn确实能做。考虑类似SPFA的操作。设\(a_x\)表示\(x\)还可以对距离最多为\(a_x\)的点产生贡献,然后就直接......
  • AtCoder Beginner Contest 258 F Main Street
    洛谷传送门AtCoder传送门发现这题有个远古的WA就来改了(发现走法很多种,不想分类讨论,考虑最短路。设起点编号为\(1\),终点为\(11\)。\(x=Bn\)和\(y=Bn\)把坐标系分成了若干块。考虑过起点作一条平行于\(Ox\)的直线,与左右两条\(x=Bn\)的线有两个交点,给它们编号......
  • AtCoder Beginner Contest 305
    A-WaterStation(abc305a)题目大意给定一个数字\(x\),输出一个数字,它是最接近\(x\)的\(5\)的倍数。解题思路令\(y=x\%5\),如果\(y\leq2\),那答案就是\(x-y\),否则就是\(x+5-y\)。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=long......
  • ATCoder [ABC167D] Teleporter
    #题目解析这段代码的目标是处理一个含有$n$个元素的整数序列,根据一定的规则,重复操作$k$次后,确定操作结束时位于序列哪个位置。##解题思路1.**读取输入**:首先,我们读取输入的整数$n$和$k$,以及整数序列`a`。我们需要对序列的每个元素减一,以适应从0开始的索引。cin......
  • AtCoder Beginner Contest 290 Ex Bow Meow Optimization
    洛谷传送门AtCoder传送门考虑观察答案形态。当\(n,m\)均为偶数时,前一半位置有\(\frac{n}{2}\)个是狗,\(\frac{m}{2}\)个是猫。并且前半段从前往后和后半段从后往前都是按权值从小到大放。调整法证明即可。当\(n\)或\(m\)为奇数时,把\(a_i\)或\(b_i\)最大的放中间......
  • Atcoder ARC100D Equal Cut
    发现是\(3\)个断点且数据范围的\(n\le2\times10^5\),根据2022CSP-SA留下的心理阴影不难想到可以枚举中间的那个点的同时移动左右两个端点。考虑如何移动,已知现在在枚举中间的断点\(i\),则现在被分为了两部分\(1\simi\)和\(i\simn\),因为要使极差最小,那就先可以让每一......
  • Atcoder ABC221G Jumping sequence
    发现这个\((x,y)\)对应的是曼哈顿距离不太好求,那直接逆时针旋转\(45\)度(其实应该还要伸长\(\sqrt{2}\)倍,但是可以当做\(d_i\)也伸长\(\sqrt{2}\)倍不用去管)转化成切比雪夫距离\((x-y,x+y)\)。同时对应的\(4\)个方向在旋转后对应的方向也得到了改变:\(U(-d,d),......
  • AtCoder Beginner Contest 240 D
    D-StrangeBallstag:栈模拟发现自己隔了快半年再做此题看错相同数字的球消失的条件,不是\(k\geq2\)而是\(k=a_i\)电子竞技不需要视力题意:当球\(a_i(1\leqi\leqN)\)有\(a_i\)个一起出现时,这\(a_i\)个球就会消失,问每次放一个球进去,放进去后还剩多少个球?用个......