首页 > 其他分享 >AtCoder_abc329

AtCoder_abc329

时间:2023-12-03 12:23:20浏览次数:27  
标签:AtCoder votes Contest int Limit abc329

AtCoder_abc329

比赛链接

A - Spread

A题链接

题目大意

输入一个字符串由大写字母组成的$S$,输出$S$并在每一个字符之间加上空格

解题思路

随便打打就能过.jpg

代码

// Problem: A - Spread
// Contest: AtCoder - Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329)
// URL: https://atcoder.jp/contests/abc329/tasks/abc329_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int main(){
	char c=getchar();
	while(c!='\n'){
		cout<<c<<' ';
		c=getchar();
	}
	return 0;
}

B - Next

B题链接

题目大意

给出$N(2 \le N \le 100)$个整数$A_1,A_2,A_3.....A_N(1 \le A_i \le 100)$,输出其中第二大的整数

解题思路

数据量不大,使用sort()排序之后输出倒数第二个

代码

// Problem: B - Next
// Contest: AtCoder - Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329)
// URL: https://atcoder.jp/contests/abc329/tasks/abc329_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int n;
int a[105];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+1+n);
	int p=n-1;
	while(a[p]==a[p+1])p--;
	cout<<a[p];
	return 0;
}

C - Count xxx

C题链接

题目大意

输入一个长度为$N(n \le 10^5)$,由小写字母组成的字符串$S$,输出$S$中由同一字母组成的非空子串的个数(完全相同的子串不会被重复计数)

例如像是:ssskkyskkkky

他有s,ss,sss,k,kk,kkk,kkkk,y这八个符合要求的子串

解题思路

可以枚举a~z这26个字母。对于每一个字母,遍历一次字符串$S$,记录最长的、连续的、由这个字母构成的子串的长度,那么这个由这个字母构成的子串数量即为该长度数。

代码

// Problem: C - Count xxx
// Contest: AtCoder - Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329)
// URL: https://atcoder.jp/contests/abc329/tasks/abc329_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int n,ans;
string s;
int main(){
	cin>>n>>s;
	s=" "+s;
	for(int c='a';c<='z';c++){
		int len=0;
		for(int i=1;i<=n;i++){
			int t=0;
			while(s[i]==c&&i<=n)
				i++,t++;
			len=max(len,t);
		}
		ans+=len;
	}
	cout<<ans;
	return 0;
}

D - Election Quick Report

D题链接

题目大意

有一场选举,从$N$名候选人中选出一名获胜者,候选人编号为$1,2.....N$。每张选票只投给一位候选人,第$i$张选票投给候选人$A_i$。

选票将按从第一张到最后一张的顺序进行计数,每次计数后,将更新并显示当前的获胜者。

在统计的票数中得票最多的候选人是获胜者。如果有多个候选人得票最多,则编号最小的候选人为获胜者。

对于每一个$i=1,2,....M$,在只计算前$i$张选票时确定一名获胜者。

解题思路

我一看见这道题:这不明显是堆吗,简单。

然后很快啊,就打出了第一版代码:

// Problem: D - Election Quick Report
// Contest: AtCoder - Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329)
// URL: https://atcoder.jp/contests/abc329/tasks/abc329_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int n,m;
int vn[200005];
struct node{
    int id;
    int votes;
    bool operator < (node b){
        if(votes!=b.votes)
        	return votes<b.votes;
        return id>b.id;
    }
};
priority_queue <node> heap;
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x;cin>>x;
		vn[x]++;
		node np;np.id=x,np.votes=vn[x];
		heap.push(np);
		cout<<heap.top().id<<endl;
	}
	return 0;
}

然后一编译,发现连编译都过不了!

我查了大概半个小时左右,只知道是priority_queue <node> heap;这一句报错,大概是定义结构体的时候出了什么问题。

然后就打开了浏览器认真思考,发现只要我吧结构体重载运算符的部分改成:

bool operator < (node b) const {
    if(votes!=b.votes)
    	return votes<b.votes;
    return id>b.id;
}

加上一个const,问题就神奇的解决了。

代码

见上

标签:AtCoder,votes,Contest,int,Limit,abc329
From: https://www.cnblogs.com/lmq742643/p/17872827.html

相关文章

  • AtCoder_abc330
    AtCoder_abc330比赛链接A-CountingPassesA题链接题目大意给出$N$个数$a_1,a_2,a_3\cdots,a_N$,和一个正整数$L$。输出有几个$a_i\leL$.解题思路O(n)遍历一遍就好了代码//Problem:A-CountingPasses//Contest:AtCoder-TOYOTASYSTEMSProgrammingContest20......
  • AtCoder_abc331
    AtCoder_abc331(这次题真的真的真的好难)比赛链接A-Tomorrow题目链接题目大意有一个$M$个月,$D$天的日历,请输出$y年m月z日$的下一天。解题思路先让天数加一,如果超过了$D$就让月份加一,天数减$D$,然后月份同理代码//Problem:A-Tomorrow//Contest:AtCoder-DaiwaSec......
  • ALGO ARTIS Programming Contest 2023 Autumn(AtCoder Regular Contest 168)
    Preface先补一下这场ARC的博客,因为在来回合肥的路上一直在想这场的CD,所以有空后就先把这场补了A-<Inversion>不难发现对于一段连续的<,设其长度为\(x\),则它最少要贡献\(\frac{x(x+1)}{2}\)的答案而我们很容易构造一种方案刚好满足这个下界,只要让每段的结束比下一段的开头大......
  • 像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459
    地址:https://zhuanlan.zhihu.com/p/459579152 我这里翻译一下官方的文档。首先需要满足几个性质。(注意 ∗ 是个操作,不是单纯的一个乘号)1)操作满足结合律即 (a∗b)∗c=a∗(b∗c)2)操作需要有个幺元(基本元/单位元)a∗e=e∗a=a如果你有这个一个序列S,长度为N ,接下......
  • Atcoder-Countings4
    Atcoder-Countings4[ABC231G]BallsinBoxesProblem有\(n\)个盒子,初始时第\(i\)个盒子内有\(a_i\)个小球,进行\(k\)次操作后,每次操作等概率随机选择一个盒子放入一个小球,设\(k\)次操作后每个盒子的小球个数为\(b_i\),那么得分为\(\prod_{i=1}^nb_i\)。求出期望得分......
  • AtcoderDP1
    AtcoderDP1收录非计数dp题。[ABC227F]TreasureHunting(2323)Problem给你一个\(N\timesM\)的矩阵,你需要从坐标\((1,1)\)走到坐标\((N,M)\)去,每次只能向右或者向下走。坐标\((i,j)\)的价值是\(A_{i,j}\)。我们定义一条路径的价值是,这条路径经过的坐标的前\(K\)......
  • AtCoder Beginner Contest 330
    B-MinimizeAbs1思维题题意:给定一个范围,你选择一个数,使得思路:如果A[i]在l,r中间,那么直接打印就行,如果不是就打印就近的usingnamespacestd;voidsolve(){ intn,l,r; cin>>n>>l>>r; for(inti=1;i<=n;i++){ intx; cin>>x; if(x<l){ cout<<l<<"......
  • AtCoder Beginner Contest 326
    A-2UP3DOWN#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){inta,b;cin>>a>>b;if(a<bandb-a<=2)cout<<"Yes\n";elseif(a>banda......
  • AtCoder Beginner Contest 322
    A-FirstABC2#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definempmake_pairusingvi=vector<int>;usingpii=pair<int,int>;voidsolve(){intn;strings;cin>>n>>s;......
  • AtCoder 329. E - Stamp (搜索 + 思维
    importjava.util.Scanner;classMain{staticintn,m;staticStrings,t;staticStringBuilderox;/***思路:*思路的大门:题目要要求把x变成s,我们可以反过来,把s变成只有#的x,所以我们就有了思路*1.从前......