传智杯大赛B组合集


题目地址
https://www.luogu.com.cn/team/26074#contest

第四届“传智杯”全国大学生计算机大赛练习赛

T211364 [#4练习赛]符合条件的数

暴力

#include<bits/stdc++.h>
using namespace std;
long long n,k;

long long f(long long b){
	int ans=0;
	while(b){
		int y=b%10;
		if(y==3)ans++;
		b/=10;
	}
	return ans;
}

int main(){
	cin>>n>>k;
	for(long long i=n;;i++){
		if(f(i)==k){
			cout<<i;
			return 0;
		}
	}
	return 0;
} 

T211368 [#4练习赛]选代表

数组记录次数,不是0不输出

#include<bits/stdc++.h>
using namespace std;
int n,a[1000500];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int q;
        cin>>q;
        if(!a[q])cout<<q<<" ";
        a[q]=1;
    }
    return 0;
}

T211372 [#4练习赛]成绩统计

模拟
向上取整ceil
四舍五入round

#include<bits/stdc++.h>
using namespace std;
int n;
struct student{
	string name;
	int pscj,qmcj,zpcj,id;
}a[1050];
bool cmp(student a,student b){
	if(a.zpcj>b.zpcj)return true;
	else if(a.zpcj==b.zpcj && a.id<b.id)return true;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		a[i].id=i;
		cin>>a[i].name>>a[i].pscj>>a[i].qmcj;
		a[i].qmcj=ceil(1.0*sqrt(a[i].qmcj)*10);
		a[i].zpcj=round(1.0*a[i].qmcj*0.6+a[i].pscj*0.4);
	} 
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		cout<<a[i].name<<" "<<a[i].zpcj<<endl;
	}
	return 0;
} 

T211939 [#4练习赛]背答案

map大法直接模拟

#include<bits/stdc++.h>
using namespace std;
int n,q;
map<string,string>mp;
string s,ss;
int main(){
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>s>>ss;
		mp[s]=ss;
	}
	
	for(int i=1;i<=q;i++){
		string timu,answer;
		int ans=0;
		cin>>timu;
		for(int j=0;j<4;j++){
			cin>>answer;
			if(mp[timu]==answer){
				ans=j;
			}
		}
		cout<<char(ans+'A')<<endl;
	}
	return 0;
} 

T211943 [#4练习赛]击鼓传花

模拟大法

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int a[10000050];

int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++){
		int p;
		cin>>p;
		while(!a[p]){
			a[p]=1;
			p=(p+k)%n;
		}
	}
	int cnt=0;
	for(int i=0;i<n;i++){
		if(a[i]==0)cnt++;
	}
	cout<<cnt;
	return 0;
} 

第三届“传智杯”全国大学生计算机大赛初赛B组

A - 课程报名

暴力

#include<bits/stdc++.h>
using namespace std;
int n,v,m,a;
int ans,s,sum;
int main(){
	cin>>n>>v>>m>>a;
	for(int i=1;i<=n;i++){
		ans+=v;
		s++;
		if(s==m){
			s=0;
			v+=a;
		}
	}
	cout<<ans;
	return 0;
} 

B - 期末考试成绩

暴力

#include<bits/stdc++.h>
using namespace std;
int x;
double ans,sum;
int main(){
	cin>>x;
	if(x<60){
		x=sqrt(x)*10;
	}
	if(x<60){
		cout<<"0.0";
		return 0;
	}else if(x>=90){
		cout<<"4.0";
		return 0;
	}else if(x>=60&&x<=89){
		sum=1.0*(90-x)*0.1;
		ans=1.0*4.0-sum;
		printf("%.1lf",ans);
		return 0;
	}
	return 0;
} 

C - 志愿者

模拟,重载排序记得排好先后顺序

#include<bits/stdc++.h>
using namespace std;
int n;
struct zyz{
	long long level,time,num;
	long long ans;
}a[1005000];
bool cmp(zyz a,zyz b){
	if(a.ans!=b.ans)return a.ans>b.ans;
	if(a.time!=b.time)return a.time>b.time;
	if(a.num!=b.num)return a.num<b.num;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].time>>a[i].level;
		a[i].num=i;
		a[i].ans=a[i].time*a[i].level;
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		cout<<a[i].num<<" ";
	}
	return 0;
} 

D - 终端

双map配合模拟

使用iterator迭代器遍历map:
map <int,string>::iterator it;
for(it=mpp.begin();it!=mpp.end();++it){
cout<<(it->second)<<endl;
}
迭代器中,first 和 second,分别指向键值和数值

mp.erase(x) 删除x 如果这个数不存在,则什么都不干

mp.count(Key)返回值为1或者0,1返回存在,0返回不存在

#include<bits/stdc++.h>
using namespace std;
string s,ss,sss;
int n,sum;
map<string,int>mp;
map<int,string>mpp;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s;
		if(s=="touch"){
			cin>>ss;
			if(!mp.count(ss)){
				mp[ss]=++sum;
				mpp[sum]=ss;
			}
		}else if(s=="rm"){
			cin>>ss;
			int aa=mp[ss];
			mp.erase(ss);
			mpp.erase(aa);
			
		}else if(s=="rename"){
			cin>>ss>>sss;
			if(mp.count(ss) && !mp.count(sss)){
				int aa=mp[ss];
				mpp[aa]=sss;
				mp.erase(ss);
				mp[sss]=aa;
			}
		}else{
			map <int,string>::iterator it;
			for(it=mpp.begin();it!=mpp.end();it++){
				cout<<(it->second)<<endl;
			}
		}
	}
	return 0;
} 

E - 运气

模板题dfs,根据题意不需要建立vis标记

#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7;
long long n,k,a[10005],cnt;

void pr(){
	long long y=0;
		for(int i=1;i<=n;i++){
			y=y*10+a[i];
		}
		if(y%k==0)cnt++;
}

void dfs(int sum){
	if(sum>n){
		pr();
		return ;
	}
	for(int i=1;i<=6;i++){
		a[sum]=i;
		dfs(sum+1);
	}
}

int main(){
	cin>>n>>k;
	dfs(1);
	cout<<cnt%mod;
	return 0;
} 

第三届传智杯全国大学生IT技能大赛决赛B组

T172096 课程

暴力

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

int aa[100];
int ans=0;
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int a;
		cin>>a;
		aa[a]++;
	}
	for(int i=1;i<=m;i++){
		int a;
		cin>>a;
		aa[a]++;
	}
	for(int i=1;i<=21;i++){
		if(aa[i]>1)ans++;
	}
	cout<<ans;
	return 0;
} 

T172097 序列

暴力模拟

#include<bits/stdc++.h>
using namespace std;
long long n,k,a[10050000],ans;
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	} 
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(a[i]*a[j]<=k)ans++;
		}
	}
	cout<<ans;
	return 0;
} 

T172098 子串

tolower:字符串转小写
toupper:字符串转大写
b.find(a) 在字符串b中查询有没有a字符串,返回地址,没有返回-1
b.find(a,i); 在字符串b第i个下标中查询有没有a字符串,返回地址,没有返回-1

#include<bits/stdc++.h>
using namespace std;
int t,n,m,ans;
string a,b;


int main(){
	cin>>t;
	while(t--){
		cin>>n>>m;
		cin>>a>>b;
		for(int i=0;i<n;i++){
			a[i]=tolower(a[i]);
		}
		for(int i=0;i<m;i++){
			b[i]=tolower(b[i]);
		}
		int x;
		for(int i=0;i<m;i++){
			x=b.find(a,i);
			if(x!=-1){
				ans++;
				i=x;
			}
		}
		cout<<ans<<endl;
		ans=0;
	}
	return 0;
} 

T172099 打牌

不会

T172100 商店

贪心s双指针思想,排序后用最多钱的买最贵的

#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
long long w[100005],c[100005];


int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>w[i];
	}
	for(int i=1;i<=m;i++){
		cin>>c[i];
	}
	sort(w+1,w+1+n);
	sort(c+1,c+1+m);
	int l=n;
	for(int i=m;i>=1;i--){
		if(w[l]>=c[i]){
			ans++;
			if(l==0)break;
			l--;
		}
	}
	cout<<ans;
	return 0;
} 

第二届“传智杯”全国大学生IT技能大赛初赛B组

P6365 众数出现的次数

#include<bits/stdc++.h>
using namespace std;
int n;
map<int,int>cnt;

int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int ai,bi;
		cin>>ai>>bi;
		cnt[ai]++;
		if(ai!=ai^bi)cnt[ai^bi]++;
	}
	int maxx=-1,ans;
	for(map<int,int>::iterator it=cnt.begin();it!=cnt.end();it++){
		int x=it->first;
		int y=it->second;
		if(y>maxx){
			maxx=y;
			ans=x;
		}
	}
	cout<<ans;
	return 0;
}

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第六届传智杯B组初赛是传智播客举办的一次IT技术竞赛的初赛阶段,旨在选拔出各高校优秀的程序设计人才。该比赛中,参赛者将面临多道编程题目,通过编写程序解决问题来展示他们的技术水平和创新能力。 在初赛中,参赛者需要在规定的时间内完成多道程序设计题目。这些题目可能涉及数据结构、算法、网络通信等方面的知识,要求参赛者具备扎实的编程基础和解决实际问题的能力。 参赛者需要在规定的时间内完成编程题目,并提交给评委进行评分。评委会根据答案的正确性、效率、代码的可读性等方面对参赛者的作品进行综合评判。最终,得分高的参赛者将进入下一轮比赛。 第六届传智杯B组初赛的目的是为了选拔出具备优秀编程能力的学生,为他们提供一个展示才华、学习交流的平台。参赛者不仅可以通过比赛锻炼自己的编程技巧,还可以结识其他优秀的参赛者,相互学习、切磋技艺。 在比赛过程中,参赛者还可以通过与其他选手交流,了解各种不同的编程思路和解题方法,不断提高自己的编程水平。同时,参赛者还有机会与业界的专家学者进行交流,了解最新的技术动态和发展趋势。 总之,第六届传智杯B组初赛是一次很有意义的编程竞赛,为各大高校的IT人才选拔提供了一次难得的机会。通过比赛,参赛者可以展现自己的才华,提升技术水平,同时也可以与其他优秀选手进行交流,共同进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值