首页 > 其他分享 >【Atcoder训练记录】AtCoder Beginner Contest 377

【Atcoder训练记录】AtCoder Beginner Contest 377

时间:2024-10-26 22:09:38浏览次数:7  
标签:Atcoder return Beginner insert int long AtCoder solve include

训练情况

赛后反思

D题差一点点吧?可能不去乐跑就能写出来了

A题

我们发现 ABC 是字典序单调递增的,字符串先排序再判断是否为 ABC 即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	string s; cin>>s;
	sort(s.begin(),s.end());
	if(s == "ABC") cout<<"Yes"<<endl;
	else cout<<"No"<<endl;	
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

B题

记录每一行每一列是否有棋子,有就不能放,最后每一格都枚举一遍,判断当前行当前列是否有棋子即可,没有棋子就答案加一。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	vector<string> s(8);
	for(int i = 0;i<8;i++) cin>>s[i];	
	vector<bool> r(8),c(8);
	int ans = 0;
	for(int i = 0;i<8;i++){
		for(int j = 0;j<8;j++){
			if(s[i][j] == '#') r[i] = 1,c[j] = 1;
		}
	}
	for(int i = 0;i<8;i++){
		for(int j = 0;j<8;j++){
			if(!r[i]&&!c[j]) ans++;
		}
	}
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

C题

上一题的加强版?这次可以往八个方向,考虑到可能会出现重复被占的点,所以我们用 set 进行去重即可,最后判断棋子是否在棋盘上,求被占的格子,最后再用全部的减一下即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n,m; cin>>n>>m;
	set<pair<int,int>> s;
	for(int i = 1;i<=m;i++){
		int x,y; cin>>x>>y;
		s.insert({x,y});
		s.insert({x+2,y+1});
		s.insert({x+1,y+2}); 
		s.insert({x-1,y+2});
		s.insert({x-2,y+1});
		s.insert({x-2,y-1});
		s.insert({x-1,y-2});
		s.insert({x+1,y-2});
		s.insert({x+2,y-1});
	}
	int ans = 0;
	for(auto i:s){
		if(i.first>=1&&i.first<=n&&i.second>=1&&i.second<=n) ans++;
	}
	cout<<n*n-ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

D题

考虑 \(O(m)\) 的同时,维护一个左边界,就是当前位置能最多往前多少是刚好不完全覆盖的,最后这个左边界需要取个 max,因为如果前面的左边界更右,那后面的左边界也要和前面一样。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n,m; cin>>n>>m;
	vector<int> d(m + 1,1);
	for(int i = 1;i<=n;i++){
		int l,r; cin>>l>>r;
		d[r] = max(d[r],l+1);
	}	
	for(int i = 1;i<=m;i++){
		d[i] = max(d[i],d[i-1]);
	}
	int ans = 0;
	for(int i = 1;i<=m;i++){
		ans += i - d[i] + 1;
	}
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

标签:Atcoder,return,Beginner,insert,int,long,AtCoder,solve,include
From: https://www.cnblogs.com/longxingx/p/18504765

相关文章

  • AtCoder Regular Contest 185 题解
    A-modMGame2第一个观察是如果一个人手中还有2张牌,那么他一定不会被秒。这可以推出决定胜负的时刻一定是Alice和Bob手中只剩一张牌的时候,此时如果Alice被秒了,那么她就似了,否则她就赢了。考虑Alice什么时候能被秒。记决定胜负的时刻Alice手中的牌是\(a\),Bob手......
  • BeginnersBook-Java-示例-一-
    BeginnersBookJava示例(一)原文:BeginnersBook协议:CCBY-NC-SA4.0Java程序:计算复合利率原文:https://beginnersbook.com/2019/07/java-program-to-calculate-compound-interest/在本教程中,我们将编写一个java程序来计算复合利率。复利计算公式使用以下公式计算复利:......
  • BeginnersBook-Java-集合教程-一-
    BeginnersBookJava集合教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0如何在Java中对ArrayList进行排序原文:https://beginnersbook.com/2013/12/how-to-sort-arraylist-in-java/在本教程中,我们分享了对ArrayList<String>和ArrayList<Integer>进行排序的示例。另请阅......
  • BeginnersBook-Java-IO-教程-一-
    BeginnersBookJavaIO教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0如何在Java中创建文件原文:https://beginnersbook.com/2014/01/how-to-create-a-file-in-java/在本教程中,我们将了解如何使用createNewFile()方法在Java中创建文件。如果文件在指定位置不存在并且......
  • BeginnersBook-C-语言示例-一-
    BeginnersBookC语言示例(一)原文:BeginnersBook协议:CCBY-NC-SA4.0C程序:检查阿姆斯特朗数原文:https://beginnersbook.com/2014/06/c-program-to-check-armstrong-number/如果数字的各位的立方和等于数字本身,则将数字称为阿姆斯特朗数。在下面的C程序中,我们检查输入的......
  • BeginnersBook-C---教程-一-
    BeginnersBookC++教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0C++中的for循环原文:https://beginnersbook.com/2017/08/cpp-for-loop/循环用于重复执行语句块,直到满足特定条件。例如,当您显示从1到100的数字时,您可能希望将变量的值设置为1并将其显示100次,在每......
  • BeginnersBook-Servlet-教程-一-
    BeginnersBookServlet教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0项目的web.xml文件中的welcome-file-list标签原文:https://beginnersbook.com/2014/04/welcome-file-list-in-web-xml/你有没见过web.xml文件中的<welcome-file-list>标签并想知道它是什么?在本文中,我将......
  • BeginnersBook-Perl-教程-一-
    BeginnersBookPerl教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0Perl-列表和数组原文:https://beginnersbook.com/2017/05/perl-lists-and-arrays/在Perl中,人们可以交替使用术语列表和数组,但是存在差异。列表是数据(标量值的有序集合),数组是保存列表的变量。如何定......
  • AtCoder Snuke21 J. Drink Bar 部分分题解
    这里将每一个三元组\((a_i,b_i,c_i)\)称为一组数。Subtask1暴力枚举所有的非空子集即可。枚举方式可以采用类似状压DP的二进制枚举或者直接DFS。时间复杂度\(O(N\times2^N)\)。Subtask2性质:此时的特征值最多由两个有效组组成,原因可见Subtask3。因为\(a_i=......
  • AtCoder Beginner Contest 375 C题 (python解)
    PanasonicProgrammingContest2024(AtCoderBeginnerContest375)C-SpiralRotation(python解)**原题链接:[(https://atcoder.jp/contests/abc375/tasks/abc375_c)]题目简述:这道题要求对一个NxN的网格进行特定的螺旋旋转操作,而这个N总是偶数。在这里,网格中的每个单元......