首页 > 编程语言 >青岛市程序设计竞赛冲刺⑥(2023第四届上海市青少年算法竞赛小学组试题)

青岛市程序设计竞赛冲刺⑥(2023第四届上海市青少年算法竞赛小学组试题)

时间:2023-05-03 16:22:30浏览次数:90  
标签:竞赛 青岛市 int ll long freopen 2023 include sum

2.幸运数

原题:

 

原代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e7+5;
ll a[505]={0,6,8,66,68,86,88,666,668,686,688,866,868,886,888,6666,6668,6686,6688,6866,6868,6886,6888,8666,8668,8686,8688,8866,8868,8886,8888,66666,66668,66686,66688,66866,66868,66886,66888,68666,68668,68686,68688,68866,68868,68886,68888,86666,86668,86686,86688,86866,86868,86886,86888,88666,88668,88686,88688,88866,88868,88886,88888};
ll n,p=2;
string s[N],s1[N];
int main(){
//	freopen("T2.in","r",stdin);
//	freopen("T2.out","w",stdout);
	cin>>n;
	if(n<=62)cout<<a[n];
	else{
		s1[1]="6";
		s1[2]="8";
		while(n-p>0){
			n-=p;
			p*=2;
		}
		for(ll i=4;i<=p;i*=2){
			for(ll j=1;j<=i/2;j++)s[j]=(string)("6"+s1[j]);
			for(ll j=i/2+1;j<=i;j++)s[j]=(string)("8"+s1[j-i/2]);
			for(ll j=1;j<=i;j++)s1[j]=s[j];
		}
		cout<<s1[n];
	}
	return 0;
}

  

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[67],x=2,n,len;
string ans;
int main(){
//	freopen("T2.in","r",stdin);
//	freopen("T2.out","w",stdout);
	cin>>n;
	a[1]=1;
	for(int i=2;i<=60;i++)x*=2,a[i]=x-1;
	for(int i=1;i<60;i++){
		if(n>=a[i]&&n<a[i+1]){
			len=i;
			n-=a[i];
			break;
		}
	}
	while(n>0){
		ans=char(n%2+48)+ans;
		n/=2;
	}
	int t=len-ans.length();
	for(int i=1;i<=t;i++)ans="0"+ans;
	for(int i=0;i<ans.length();i++){
		if(ans[i]=='0')cout<<6;
		else cout<<8;
	}
	return 0;
}

  

错误原因:

正解的规律是将幸运数字转换成二进制,而错解是运用组数的方法进行求解,所找的规律不同

 

3.连环画

原题:

 

 

原代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e6+5,M = 3*N;
ll a[M],cnt[M];
int n,ans=0,Ok=0,t=1,n1;
bool p[M];
int main(){
//	freopen("T3.in","r",stdin);
//	freopen("T3.out","w",stdout);
	cin>>n;n1=n;
	for(int i=1;i<=n;i++)cin>>a[i],cnt[a[i]]++;
	while(t<=n1){
		Ok++;if(!p[a[t]])ans++;
		p[a[t]]=1;
		if(Ok>=2){
			int p=-1;
			for(int i=1;i<=3*n;i++){
				if(cnt[i]==0){
					p=i;
					break;
				}
			}
			if(p!=-1){
				a[++n1]=p;
				Ok-=2;
				cnt[p]++;
			}
		}
		t++;
	}
	cout<<ans;
	return 0;
}

  

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e6+5;
int n,a[2*N],ans,sum;
int main(){
	cin>>n;
	for(int i=1,x;i<=n;i++)cin>>x,a[x]++;
	for(int i=1;i<=2*n;i++)if(a[i]>1)sum+=a[i]-1,a[i]=1;
	int j=2*n;
	for(int i=1;i<=2*n;i++){
		if(a[i]){
			ans=i;
			sum++;
		}else{
			if(sum>1){
				sum--;
				ans=i;
			}else{
				for(int k=j;k>i;k--){
					if(a[k]){
						sum++;
						a[k]=0;
						j=k;
						if(sum==2)break;
					}
				}
				if(sum==2){
					ans=i;
					sum=1;
				}else{
					cout<<ans;
					return 0;
				}
			}
		}
	}
	return 0;
}

  

错误原因:

考虑情况不周全,且条件不分明

 

4.团队竞赛

原题:

 

 

原代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e6+520;
pair<int,int>PI[N];
int n,X,a[N],k;
int main(){
//	freopen("T4.in","r",stdin);
//	freopen("T4.out","w",stdout);
	cin>>n>>X;
	for(int i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		for(int j=i+1;a[j]-a[i]<=X&&j<=n;j++){
			PI[++k].first=i;
			PI[k].second=j;
		}
	}
	cout<<ceil(k/3.0);
	return 0;
}

  

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n,x,a[100005],last;
long long ans,m,s;
bool v[100005];
int main(){
	cin>>n>>x;
	for(int i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		int p=upper_bound(a,a+n+1,a[i]+x)-a;;
		if(v[p])continue;
		v[p]=1;
		if(last!=0)m=last-i;
		m=m*(m-1)*(m-2)/6;
		s=p-i;
		s=s*(s-1)*(s-2)/6;
		ans+=s-m;
		last=p;
	}
	cout<<ans;
	return 0;
}

  

错误原因:

根本性错误,没有想到区间和二分,思路不明确

 

5.集训题单

原题:

 

 

原代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e3+5,MOD = 998244353;
ll n,m,k,X,a[N],sum=0,sum1=0;
ll add(ll a,ll b){return ((a%MOD)+(b%MOD))%MOD;}
int main(){
//	freopen("T5.in","r",stdin);
//	freopen("T5.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>k>>X;
	for(int i=1;i<=n;i++)if(a[i]>=X)sum++;
	for(int i=k;i<=m;i++)sum1=add(sum1,(m-i?(n-sum)*(sum-i+1):(sum-i+1)));
	cout<<sum1%MOD;
	return 0;
}

  

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e3+5,MOD = 998244353;
ll n,m,k,X,a[N],sum=0,sum1=0,c[N][N],ans=0;
ll add(ll a,ll b){return ((a%MOD)+(b%MOD))%MOD;}
int main(){
//	freopen("T5.in","r",stdin);
//	freopen("T5.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>k>>X;
	for(int i=1;i<=n;i++){
		if(a[i]>=X)sum++;
		else sum1++;
	}
	for(int i=0;i<=n;i++)c[i][0]=c[i][i]=1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<i;j++){
			c[i][j]=add(c[i-1][j-1],c[i-1][j]);
		}
	}
	for(int i=k;i<=sum;i++){
		if(i<=m){
			if(i==m)ans=add(ans,c[sum][i]);
			else ans=add(ans,c[sum][i]*c[sum1][m-i]);
		}
	}
	cout<<ans;
	return 0;
}

  

错误原因:

思路错误,正解运用杨辉三角求得组合数,统计两种情况后,运用乘法原理求解,而错解是累计个数的选法

 

标签:竞赛,青岛市,int,ll,long,freopen,2023,include,sum
From: https://www.cnblogs.com/zhanghx-blogs/p/17369206.html

相关文章

  • 2023.5
    5.3模拟赛A:这个东西明显是个诈骗啊,我想了很久那个小数有什么特殊。然后就没有做出来。实际上画画图就会发现全是1的情况不可能取到。所以问题转化为多个连通块,选出\(m\)个点,然每个连通块最多只有一个。这是简单的。......
  • 20230429 模拟赛(jnxxhzz)
    T1.神奇零食柜略,oj上交要加快读T2.防御工事数据范围:\(1\len,m\le100\)不难想到是网络流(虽然我没想到……)这是一个挺基础的网络流对于每个\(V\),我们将它们连到一个超级源点上在往它的四个方向分别建边最后把所有的\(M\)连到一个汇点上而在建边时注意其实\(E->E\)的边......
  • 2023.5.1——软件工程日报
    所花时间(包括上课):0h代码量(行):0行博客量(篇):1篇今天,数学建模比赛中。。。我了解到的知识点:数学建模的相关知识......
  • 2023-05-02 量学基础 换挡买点
    1.放量上攻,缩量下跌,阳盖阴买入  1.放量上攻,缩量下跌,阳盖阴买入案例1:李16期答疑课2020年5月2号271.位置:攻守冲防的冲的位置2.压力:上方还有一堆套牢盘,所以无法直接上攻3.当下:(1)高量(2)第二天缩量站上高量(3)第三天首阴,放量阴,压力位(4)之后缩量调整。4.买入:(1)底部阳盖......
  • day63(2023.5.2)
    1.函数 2.对象概述 3.Math对象 4.Date对象 运行结果: 5.DOM概述 ......
  • 每日总结2023-05-02
     对于listView,内部item为这种格式,<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layo......
  • 2023.5.2 高一下半期总结
    2023.5.2高一下半期总结随着半期考试的结束,高一已经过去了上半学期。上半学期主要用于寒假集训的总结和整理,巩固知识点,我们对整理的题单进行了有效的覆盖,扎实了基础;还扩展了FWT、点分治等算法。上半期对我而言,唯一美中不足的是,省选的Day2得到了近乎爆零的成绩,与其他队友间都有相......
  • 2023.5.2
    今天进行了python作业写作,爬取只了解一点还有很多不理解,下面就是程序运行截图:    ......
  • 万众期待的FL Studio 2023最新发布的21版本新功能介绍/主题包/下载安装激活教程
    FLStudio21国人也叫它水果编曲软件,是一款有着25多年历史的经典音乐创作软件。全球已有上千万的用户每天在使用水果编曲创作自己的音乐。它被公认为最适合新手的编曲软件之一,有着业内领先的工作流,以及丰富的生产力插件,同时也是唯一一款支持终生免费升级的DAW软件。来自DJMAG评选的......
  • 2023前端面试题二
    图片png无损压缩,尺寸体积要比jpg的大,适合做小图标jpg采用压缩算法,有一点失真,比png体积要小,适合做中大图片gif一般是做动图的webp同时支持有损或者无损压缩,相同质量的图片,webp具有更小的体积css的盒子模型标准盒子模型margin/border/padding/contentie盒子模型marg......