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

AtCoder Beginner Contest 346

时间:2024-03-28 17:36:19浏览次数:20  
标签:std AtCoder Beginner int lst long 346 ans define

AtCoder Beginner Contest 346

比赛链接

A - Adjacent Product

思路:

b[i] = a[ i ] * a[ i+1 ]

Code

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

#define int long long
#define all(x) x.begin()+1,x.end()


void solve(){
	int n;
	cin>>n;
	std::vector<int> a(n+1);
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	std::vector<int> b(n);

	for(int i=1;i<n;i++){
		b[i]=a[i]*a[i+1];
	}
	// for(auto x:b+1){
	for(int i=1;i<n;i++){

		cout<<b[i]<<" ";
	}
	cout<<endl;
	return ;
	
}

signed main(){
	int t=1;
	while(t--) solve();
	
	return 0;
}

B - Piano

思路

模拟一下,看数据量构造一个长度位2000的字符串在遍历一下就可以了

Code

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

#define int long long
#define all(x) x.begin()+1,x.end()


void solve(){
	int w,b;
    cin>>w>>b;
    string a="wbwbwwbwbwbw";
    string s=" ";
    while(s.size()<=2000){
        s+=a;

    }
    std::vector<int> n1(2010),n2(2010);
    for(int i=1;i<s.size();i++){
        n1[i]=n1[i-1]+(s[i]=='w');
        n2[i]=n2[i-1]+(s[i]=='b');

    }
    for(int i=1;i<=s.size();i++){
        for(int j=i+1;j<=s.size();j++){
            if((n1[j]-n1[i]==w)&&(n2[j]-n2[i]==b)){
                cout<<"Yes"<<endl;
                return ;
            }
        }
    }
    cout<<"No"<<endl;
    return ;
    

}


signed main(){
	int t=1;


	while(t--){
		solve();
	}
	return 0;
}

C - Σ

思路:

map和数组简单的应用一下就可以了,感觉很好想到

Code

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

#define int long long
#define all(x) x.begin()+1,x.end()


void solve(){
	int n,k;
	cin>>n>>k;
	std::map<int, int> mp;
	std::vector<bool> st(n+1);
	int ans=(k+1)*k/2;
	std::vector<int> a(n+1);
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(mp[a[i]]==0){
			mp[a[i]]=i;
		}
		if(a[i]<=k&&a[i]>=1){
			if(st[mp[a[i]]]){
				continue;
			}
			else{
				st[mp[a[i]]]=true;
				ans-=a[i];

			}
		}
	}
	cout<<ans<<endl;
	return ;
}

signed main(){
	int t=1;
	while(t--) solve();
	
	return 0;
}

D - Gomamayo Sequence

思路

处理+贪心

Code

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

#define int long long
#define all(x) x.begin()+1,x.end()
const int INF = 1e18;
const int N = 2e5+10;
int fst[N][2];
int lst[N][2];


void solve(){
	int n;
	cin>>n;

	string s;
	cin>>s;
	s=" "+s;//处理一下字符串

	std::vector<int> a(n+1);
	for(int i=1;i<=n;i++){
		cin>>a[i];
		
	}	

	
    for (int i = 1; i <= n; i++) {
        fst[i][0] = fst[i - 1][1] + a[i] * (s[i] != '0');
        fst[i][1] = fst[i - 1][0] + a[i] * (s[i] != '1');
    }
    for (int i = n; i >= 1; i--) {
        lst[i][0] = lst[i + 1][1] + a[i] * (s[i] != '0');
        lst[i][1] = lst[i + 1][0] + a[i] * (s[i] != '1');
    }

    int ans = INF;//记录最小次数

    for (int i = 1; i < n; i++) {
        int now = a[i] * (s[i] != '0') + a[i + 1] * (s[i + 1] != '0');
        now += fst[i - 1][1] + lst[i + 2][1];
        ans = min(ans, now);
    }

    for (int i = 1; i < n; i++) {
        int now = a[i] * (s[i] != '1') + a[i + 1] * (s[i + 1] != '1');
        now += fst[i - 1][0] + lst[i + 2][0];
        ans = min(ans, now);
    }

   	cout << ans << endl;
   	return ;
}


signed main(){
	int t=1;
	while(t--) solve();
	
	return 0;
}

标签:std,AtCoder,Beginner,int,lst,long,346,ans,define
From: https://www.cnblogs.com/du463/p/18102197

相关文章

  • Atcoder
    D-食塩水\[\frac{\sum{w_ip_i}}{\sum{w_i}}\gex\\\sum{w_i(p_i-x)}\ge0\\\]fromcollectionsimport*fromitertoolsimport*fromfunctoolsimport*defLI():returnlist(map(int,input().split()))defI():returnint(input())de......
  • abc346
    D-GomamayoSequence给定\(N\)长的01字符串,使其满足,只有一个下标\(i,S_{i}=S_{i+1}\)对于\(S_i\),他改变的花费为\(C_i\),若\(S_i=0,则它变为1,否则变为0\)因为只有一对相同的字符组(i,i+1)维护\(1-i\)以\(j\in{0,1}\)结尾的01交替串的花费维护\(i-结尾\)以......
  • Atcoder ABC245H Product Modulo 2
    发现这个\(m\)很大,且这个式子是\(\times\)。一个想法是拆成\(m=\prod{p_i}^{e_i}(p_i\in\mathbb{P})\)然后对于\(M=p_i^{e_i}\)依次考虑\(b_i=a_i\bmodM\)和\(N=n\bmodM\)。根据\(\text{CRT}\),对于任意一个\(M\)得到的不同的\(b_i\)对于最后的\(a_i......
  • UNIQUE VISION Programming Contest 2024 Spring(AtCoder Beginner Contest 346)
    C我们用\(1\simK\)的和减去出现在\(1\simK\)中的数的和。intn,k,a[N],res;map<int,int>vis;signedmain(){ cin>>n>>k; _for(i,1,n)cin>>a[i]; res=k*(1+k)/2; _for(i,1,n)if(a[i]>=1&&a[i]<=......
  • Atcoder ABC 346 全题解
    闲话上一篇全题解反向不错,如果大家支持我就会继续更。我ABC也打了,ARC也打了,没打好,疯狂掉大分……包括本场比赛也是整整补了EFG三道题,以及ARC死磕D结果使赛后五分钟AC又有素材了……A懒得讲B由于我被B题坑了,所以在此纪念。最简单的方法就是把字符串复制......
  • AtCoder Regular Contest 173 E Rearrange and Adjacent XOR
    洛谷传送门AtCoder传送门不妨考虑最后的结果可以成为哪些\(a_i\)的组合。为了方便分析,我们令\(a_i=2^{i-1}\)。进行一次操作后,所有\(\text{popcount}(a_i)\)都为偶数。所以一个\(x\in[0,2^n-1]\)能被生成出来的必要条件是\(\text{popcount}(x)\)为偶数。然......
  • AtCoder Beginner Contest 346 (ABCDEF)
    AtCoderBeginnerContest346A-AdjacentProduct题意给你一个数组a1,a......
  • Atcoder ABC144E Gluttony
    [ABC144E]Gluttony题面翻译【题目描述】高桥君参加大胃王比赛。比赛由\(N\)人组成的团队为基本单位参赛,高桥君的队伍的队员从\(1\simN\)编号。第\(i\)名队员的消化代价为\(A_i\)。比赛有\(N\)种不同的食物,每位队员需要负责吃掉其中一种食物,不能有两名队员吃同一种......
  • AtCoder Beginner Contest 346 题解
    A-AdjacentProductQuestion给你\(N\)个整数\(A_1,A_2,\dots,A_N\)。同时,定义\(B_i=A_i\timesA_{i+1}\(1\leqi\leqN-1)\)按此顺序打印\(B_1,B_2,\dots,B_{N-1}\)Solution按照题意模拟Code#include<bits/stdc++.h>usingnamespacestd;intmain......
  • Programming Abstractions in C阅读笔记:p338-p346
    《ProgrammingAbstractionsinC》学习第80天,p338-p346,总计9页。一、技术总结栈的实现包括入栈、出栈、判断栈是否为满,判断栈是否为空等。作者结合RPN计算器来实现,稍显无聊。/**File:rpncalc.c*---------------*Thisprogramsimulatesanelectroniccalculatorth......