首页 > 其他分享 >AtCoder Beginner Contest 284题解

AtCoder Beginner Contest 284题解

时间:2024-11-06 22:32:05浏览次数:3  
标签:AtCoder int 题解 namespace cin Ts ans using 284

AtCoder Beginner Contest 284

A

没有什么难点,反着输出一遍就可以了。

#include<bits/stdc++.h>
using namespace std;
string a[2000];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=n;i;i--) cout<<a[i]<<'\n';
	return 0;
}

B

每次判断 \(x\) 是不是奇数即可,记得清空 \(ans\)。

#include<bits/stdc++.h>
using namespace std;
int Ts,x,ans,n;
int main(){
    cin>>Ts;
    while(Ts--){
        cin>>n;ans=0;
        for(int i=1;i<=n;i++){
            cin>>x;
            if(x&1) ans++;
        }cout<<ans<<'\n';
    }
    return 0;
}

C

模版求联通快个数的题目,考虑从一个没有染过色的点进行扩散,将可以扩散到达的点涂成相同的颜色,最后输出颜色数量就行了。

#include<bits/stdc++.h>
using namespace std;
const int N=200010;
int n,m,idx,head[N<<1];
int vis[N],cnt;
struct Edge{
	int v,nxt;
}e[N<<1];
void add(int u,int v){
	e[++idx]={v,head[u]},head[u]=idx;
}
void dfs(int now,int last){
	vis[now]=cnt;
	for(int i=head[now];i;i=e[i].nxt){
		if(e[i].v!=last){
			if(!vis[e[i].v]){
				dfs(e[i].v,now);
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		add(u,v),add(v,u);
	}
	for(int i=1;i<=n;i++){
		if(!vis[i]){
			cnt++;
			dfs(i,-1);
		}
	}
	cout<<cnt<<'\n';
	return 0;
}

D

根据试除法我们可以想到枚举 \(2\) 到 \(^3\sqrt{n}\) 求解 \(q,p\),然后就直接模拟即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int Ts,n,p,q;
signed main(){
	cin>>Ts;
	while(Ts--){
		cin>>n;
		p=q=0;
		for(int i=2;i*i*i<=n;i++){
			if(n%i) continue;
			if((n/i)%i==0) p=i,q=n/i/i;
			else q=i,p=(int)round(sqrt(n/i));
			break;
		}
		cout<<p<<' '<<q<<'\n';
	}
}

标签:AtCoder,int,题解,namespace,cin,Ts,ans,using,284
From: https://www.cnblogs.com/Merge-Change230/p/18531185

相关文章

  • AtCoder Beginner Contest 378
    ContestLink还得加练。A&B&C&D不具备任何思维含量。SubmissionASubmissionBSubmissionCSubmissionDE注意到它计算答案的式子,每个子区间和都需要取模,否则就是沙币题了,可以对于每个位置\(O(1)\)地统计答案扫过去然后\(\bmodM\)。常规地,记\(S_i=\sum......
  • 题解:HDU5628 Clarke and math
    数学题可爱捏~HintAnalysis注意到形式很好看,猜测是某种神奇迭代。考虑特殊情况\(k=1\),于是有:\(g(i)=\sum_{i_1\midi}f(i_1)=(f*1)(i)\)$即\(g=f*1\)。于是猜测\(g=f*1^k\),这里的幂运算表示多次Dirichlet卷积。简单证明一下,采用数学归纳法:基本情况\(k=1\),已经证过,......
  • 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......
  • CF 1438 题解
    CF1438题解ASpecificTastesofAndre考虑一种非常简单的构造:\(a_i=1\).不难发现满足条件.BValeriiAgainstEveryone结论:符合条件当且仅当有两个一样的元素.证明:充分性显然,下证必要性.若不存在两个一样的元素,则由于无法进位,故没有办法得到两个区间和在相......
  • 【考试题解】NOIP2024加赛2
    目录A.新的阶乘(factorial)题目内容部分分?pts正解思路代码B.博弈树(tree)题目内容部分分80pts正解思路代码C.划分(divide)题目内容部分分10pts14pts正解思路代码D.灯笼(lantern)A.新的阶乘(factorial)题目内容定义运算\(f(x)=x^1\times(x-1)^2\times(x-2)^3\dots2^{x-1......
  • CF2001 题解
    A给定循环数组,每次操作时,设当前大小为m。选择$i\in[0,m)$,若满足$a_i\lea_{i+1\bmodm}$,则可删除$a_i,a_{i+1\bmodm}$中的任意一个。求最小的操作次数,使得数组中所有元素都相等。$n\le100$操作非常强,除了两个相邻位置相等的情况,可以删除任意元素。然而所有位置都......
  • 暂存的题解
    P4011孤岛营救问题感觉其实我能想出来,但是对难题产生了恐惧,直接看题解了,确实简单,很抱歉浪费了一道题。数据范围很小,搜索bfs,钥匙直接状态压缩,找到答案立即返回,否则就无解。我们要彻底的分析问题,为什么我想不到,以后我要怎么总结,首先看到题之后要先看数据范围,看到数据范围非常小......
  • [USACO22JAN] Minimizing Haybales P 题解
    [USACO22JAN]MinimizingHaybalesP随机化?五分。显然对于任意\(a_i,a_j\),若\(|a_i-a_j|>K\),则这两堆草的先后顺序永远不会改变。所以易得暴力:对于所有这样的\(i,j\),不妨设\(i<j\),则连一条\(i\toj\)的边,答案就是这个图字典序最小的拓扑排序,优先队列即可。voidtoposort(......
  • [USACO21DEC] Tickets P 题解
    [USACO21DEC]TicketsP首先我们思考暴力的\(O(n^2)\)怎么做。显然比起每次以\(i\)为起点跑\(n\)遍最短路,建反图后分别以\(1\)和\(n\)为起点跑两遍最短路是更加经济的方式。然后你可能会以为\(\text{dis}(1,i)+\text{dis}(n,i)\)就是答案了,之后你就会发现连样例都过......
  • 【问题解决】java.lang.SecurityException: JCE cannot authenticate the provider BC
    问题复现历史项目升级JDK(由1.7升级到8),进行加密/解密时出现报错java.lang.SecurityException:JCEcannotauthenticatetheproviderBC。问题原因Wikipa上查到JCE的描述如下:JavaCryptographyExtension(JCE)isanofficiallyreleasedStandardExtensiontotheJavaPl......