牛客竞赛语法入门班数组字符串习题完结

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客竞赛语法入门班数组字符串习题完结相关的知识,希望对你有一定的参考价值。

题目地址:https://ac.nowcoder.com/acm/contest/19306?from=acdiscuss

目录

随机序列

#include<bits/stdc++.h> 
using namespace std;
const int N=1e6+10;
int a[N],t,n;
int main(void)

	cin>>t;
	while(t--)
	
		cin>>n;
		double sum=0,ans=0;
		for(int i=0;i<n;i++) cin>>a[i],sum+=a[i];
		sort(a,a+n);
		sum/=n;
		for(int i=0;i<n;i++) ans+=(a[i]-sum)*(a[i]-sum);
		printf("%d %.3lf\\n",a[n-1]-a[0],ans/n);
	
	return 0;

[NOIP2013]记数问题

#include<bits/stdc++.h>
using namespace std;
int a[15];
int main(void)

	int n,x; cin>>n>>x;
	for(int i=1;i<=n;i++) 
	
		int t=i;
		while(t) a[t%10]++,t/=10;
	
	cout<<a[x];

约瑟夫环

#include<bits/stdc++.h>
using namespace std;
int n,k,m;
deque<int>q;
int main(void)

	cin>>n>>k>>m;
	for(int i=k;i<n;i++) q.push_back(i);
	for(int i=0;i<k;i++) q.push_back(i);
	int cnt=0;
	while(q.size()>1)
	
		cnt++; 
		int temp=q.front(); q.pop_front();
		if(cnt==m) cnt=0;
		else q.push_back(temp);
	
	cout<<q.front()<<endl;
	return 0;

[NOIP2005]校门外的树

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int s[N],n,m,l,r; 
int main(void)

	cin>>n>>m;
	while(m--)
	
		cin>>l>>r;
		l++,r++;//从将其 [0,n] 变成  [1,n+1]
		s[l]+=1,s[r+1]-=1;
	
	int ans=0;
	for(int i=1;i<=n+1;i++) 
	
		s[i]=s[i]+s[i-1];
		if(!s[i]) ans++;
	
	cout<<ans;
	return 0;

比较月亮大小

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n; 
int main(void)

	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	if(n==1)
	
		if(a[n-1]==0) puts("UP");
		else if(a[n-1]==15) puts("DOWN");
		else puts("-1");
	
	else if(a[n-1]>a[n-2])
	
		if(a[n-1]==15) puts("DOWN");
		else puts("UP");
	
	else if(a[n-1]<a[n-2])
	
		if(a[n-1]==0) puts("UP");
		else puts("DOWN");
	
	return 0;

求距离

#include<bits/stdc++.h>
using namespace std;
map<int,int>mp;
int a[1000005],n;
int main(void)

	cin>>n;
	int ans=0;
	for(int i=0;i<n;i++) cin>>a[i],mp[a[i]]=i;
	for(int i=0;i<n;i++)
	
		for(int j=i+1;j<n;j++)
		
			mp[a[i]]=j;
			mp[a[j]]=i;
		//	cout<<mp[n]<<" "<<mp[1]<<endl;
			ans=max(ans,abs(mp[n]-mp[1]));
			mp[a[i]]=i;
			mp[a[j]]=j;
		
	
	cout<<ans;
	return 0;

数列下标

#include<bits/stdc++.h>
using namespace std;
int a[10005],b[100005],n;
int main(void)

	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++)
		for(int j=i+1;j<n;j++)
		
			if(a[j]>a[i])
			
				b[i]=j+1;
				break;
			
		
	for(int i=0;i<n;i++) cout<<b[i]<<" ";
	return 0;

求逆序数

#include<bits/stdc++.h>
using namespace std;
int a[10005],n,cnt;
int main(void) 

	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++)
	
		for(int j=0;j<i;j++) if(a[j]>a[i]) cnt++;
	
	cout<<cnt;
	return 0;

F课程满意度计算

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,a[100005];
int main(void)

	cin>>n>>m;
	for(int i=0;i<n;i++)
	
		int w,x; cin>>w;
		for(int j=0;j<w;j++) cin>>x,a[x]++;
	
	for(int i=0;i<=m;i++) if(a[i]==n) cnt++;
	cout<<cnt;
	return 0;

二进制?十进制!

#include<bits/stdc++.h>
using namespace std;
int a,b;
string s1,s2;
string get(int x)

	string temp;
	while(x) temp+=to_string(x%2),x/=2;
	return temp;

string add(string a,string b)

	int t=0;
	string s;
	for(int i=0;i<a.size()||i<b.size();i++)
	
		if(i<a.size()) t+=a[i]-'0';
		if(i<b.size()) t+=b[i]-'0';
		s+=to_string(t%10);
		t/=10;
	
	if(t) s+=to_string(t);
	reverse(s.begin(),s.end());
	return s;

int main(void)

	cin>>a>>b;
	s1=get(a);
	s2=get(b);
	cout<<add(s1,s2);
	return 0;

序列中整数去重

#include<bits/stdc++.h> 
using namespace std;
int a[10005],n;
map<int,int>mp;
int main(void)

	cin>>n;
	for(int i=0;i<n;i++)
	
		cin>>a[i];
		if(mp[a[i]]) continue;
		cout<<a[i]<<" ";
		mp[a[i]]++;
	
	return 0;

有序序列插入一个整数

#include<bits/stdc++.h> 
using namespace std;
int a[10005],n;
int main(void)

	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	cin>>a[n];
	sort(a,a+n+1);
	for(int i=0;i<n+1;i++) cout<<a[i]<<" ";
	return 0;

打印质数表

#include<stdio.h>
#include<math.h>
int main(void)

    int i,j;
    int N;
    int temp=0;
    scanf("%d",&N);
    for(i=2;i<=N;i++)
    
        temp=0;
        for(j=2;j<=sqrt(i);j++)
        
            if(i%j==0)
            
                temp=1;
            
        
        if(!temp)
        
            printf("%d ",i);
        
    
    return 0;

素数分布

#include<bits/stdc++.h> 
using namespace std;
const int N=1e6+10;
int prime[N],st[N],t,cnt;
void init(int n)

    st[1]=1,st[0]=1;
	for(int i=2;i<=n;i++)
	
		if(!st[i]) prime[cnt++]=i;
		for(int j=0;prime[j]<=n/i;j++)
		
			st[prime[j]*i]=1;
			if(i%prime[j]==0) break;
		
	

int s[N];
int main(void)

	cin>>t;
	init(100000);
	for(int i=1;i<=100000;i++) s[i]=s[i-1]+!st[i];
    while(t--)
    
    	int x; cin>>x;
    	cout<<s[x]<<endl;
    
	return 0;

有序序列合并

#include<bits/stdc++.h> 
using namespace std;
const int N=1e5+10;
int n,m,a[N牛客竞赛语法入门班顺序结构习题完结

牛客竞赛语法入门班循环结构习题完结

牛客竞赛语法入门班循环结构习题完结

牛客竞赛语法入门班选择结构习题完结

牛客竞赛语法入门班数组栈队列和stl习题未完成

2021算法竞赛入门班第九节课线段树练习题