(AtCoder Beginner Contest 341)(A - D)

比赛地址 : 

Tasks - Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341)

A . Print 341

模拟就好了 , 先放一个 1 , 然后放 n 个 01 ;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lowbit(x) (x&(-x))
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
#define int long long
typedef long long LL;
const int mod = 1e9+7;
const int N = 2e5+10;

using namespace std;

inline void solve(){
	int n ; cin >> n ;
	cout << 1 ;
	 for(int i=0;i<n;i++){
	 	cout << "01";
	 }
}
 
signed main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

B . Foreign Exchange

 贪心, 因为后面操作不会影响前面的,前面的会使后面的变大,而题目要求使最后一个最大,那么 , 直接从前往后遍历就好了 ;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lowbit(x) (x&(-x))
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
#define int long long
typedef long long LL;
const int mod = 1e9 + 7;
const int N = 2e5 + 10;

using namespace std;

inline void solve() {
	int n ; cin >> n ;
	vector<int> a(n+1) ,s(n) , t(n) ;
	for(int i=1;i<=n;i++) cin >> a[i] ;
	for(int i=1;i<n;i++) cin >> s[i] >> t[i] ;
	// 第i个-si ,i+1就+ti
	for(int i=1;i<n;i++){
		if(a[i] >= s[i]){
			int k = a[i] / s[i] ;
			a[i] -= k * s[i] ;
			a[i+1] += k * t[i] ; 
		}
	}
	cout << a[n] << endl;
}	

signed main()
{
    IOS
        int _ = 1;
    // cin >> _;
    while (_--) solve();
    return 0;
}

C . TaKahashi Gets Lost

暴力 , 对于每一个点,找它是否满足题意,如果满足,则ans++;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lowbit(x) (x&(-x))
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
#define int long long
typedef long long LL;
const int mod = 1e9+7;
const int N = 510;

char c[N][N] ;

using namespace std;

inline void solve(){
	int h,w,n;cin>>h>>w>>n ;
	string t ; cin >> t ;
	for(int i=1;i<=h;i++){
		for(int j=1;j<=w;j++){
			cin >> c[i][j] ;
		}
	}
	int ans = 0 ;
	for(int i=1;i<=h;i++){
		for(int j=1;j<=w;j++){
			if(c[i][j]=='#') continue ;
			int a = i , b = j ;
			bool tag = true;
			for(int k=0;k<n;k++){
				if(t[k]=='L'){
					if(b==1){
						tag = false;
						break ; 
					}
					b-=1;
					if(c[a][b]=='#'){
						tag = false;
						break;
					}
				}
				else if(t[k]=='U'){
					if(a==1){
						tag = false;
						break ; 
					}
					a-=1;
					if(c[a][b]=='#'){
						tag = false;
						break;
					}
				}
				else if(t[k]=='R'){
					if(b==w){
						tag = false;
						break ; 
					}
					b+=1;
					if(c[a][b]=='#'){
						tag = false;
						break;
					}
				}
				else{// "D"
					if(a==h){
						tag = false;
						break ; 
					}
					a+=1;
					if(c[a][b]=='#'){
						tag = false;
						break;
					}
				}
			}
			if(tag){
				ans ++ ;
			}
		}
	}
	cout << ans << endl ;
}
 
signed main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

D . Only one of two

先找到n,m的最小公倍数l,那么对于一个数x,能被n整除且<=x的数的个数就是[x/n],所以可以得到下面式子(因为可能同时能被n,m整除,要删掉能被l整除的数字个数): 

[x/n] + [x/m] - 2 * [x/l] >= k;

这样就可以使用二分来进行查找 ;

#include <bits/stdc++.h>
using namespace std;
typedef long long LL ;
LL gcd(LL a , LL b){
	return b ? gcd(b, a % b) : a;
}

// 设 l 是 m,n的最小公倍数 

int main() {
	long long n,m,x,k;
	cin>>n>>m>>k;
	x=(n*m)/gcd(n,m);// 求出最小公倍数 
	long long l=0,r=(long long)2e+18,mid,y;
	while((l+1)<r){// 二分查找 t/n+t/m-2*t/x>=k的最佳答案  
		mid=(l+r)/2;
		y=(mid/n)+(mid/m)-2*(mid/x);
		if(y<k)l=mid;
		else r=mid;
	}
	cout<<r<<endl;
	return 0;
}

相关推荐

  1. ABC341A-D题解

    2024-02-19 18:20:01       51 阅读
  2. AtCoder ABC351 A-D题解

    2024-02-19 18:20:01       32 阅读
  3. ABC340(A-C)

    2024-02-19 18:20:01       52 阅读
  4. ABC340 A-F题解

    2024-02-19 18:20:01       50 阅读
  5. ABC344 A-E题解

    2024-02-19 18:20:01       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-19 18:20:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-19 18:20:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-19 18:20:01       82 阅读
  4. Python语言-面向对象

    2024-02-19 18:20:01       91 阅读

热门阅读

  1. Leetcode-1041. 困于环中的机器人

    2024-02-19 18:20:01       49 阅读
  2. Hexo删除主题

    2024-02-19 18:20:01       39 阅读
  3. 深度学习的进展

    2024-02-19 18:20:01       47 阅读
  4. devc++跑酷小游戏3.0.0 Dev-c++跑酷小游戏 1.0.0

    2024-02-19 18:20:01       43 阅读
  5. sql语句创建数据库

    2024-02-19 18:20:01       52 阅读
  6. 如何优雅地与ChatGPT对话?

    2024-02-19 18:20:01       62 阅读
  7. 数据结构三要素

    2024-02-19 18:20:01       41 阅读
  8. C++面试宝典第29题:sizeof使用大全

    2024-02-19 18:20:01       46 阅读