牛客竞赛语法入门班数组字符串习题完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客竞赛语法入门班数组字符串习题完结相关的知识,希望对你有一定的参考价值。
题目地址:https://ac.nowcoder.com/acm/contest/19306?from=acdiscuss
目录
- 随机序列
- [NOIP2013]记数问题
- 约瑟夫环
- [NOIP2005]校门外的树
- 比较月亮大小
- 求距离
- 数列下标
- 求逆序数
- F课程满意度计算
- 二进制?十进制!
- 序列中整数去重
- 有序序列插入一个整数
- 打印质数表
- 素数分布
- 有序序列合并
- 杨辉三角
- 矩阵元素定位
- 上三角矩阵判定
- 扫雷
- Matrix
- 矩阵转置
- wyh的矩阵
- 病菌感染
- 李在赣神魔
- 数独合理吗?
- 回型矩阵
- 蛇形矩阵
- 竞赛技巧
- [NOIP2006]明明的随机数
- lcryin的排序题
- [NOIP2009]分数线划定
- [NOIP2007]奖学金
- [NOIP2003]乒乓球
- 斗兽棋
- 珂朵莉的假toptree
- BFS
- 简写单词
- 小y的考试
- 字符统计
- Alanyyds
- [NOIP2008]笨小猴
- 添加逗号
- [NOIP2000]计算器的改良
- Check In
- [NOIP2011]统计单词数
- 译码
- 字符串操作
- 火车上的2连座
- String
- [NOIP2017]图书管理员
- 潜伏者
- [NOIP2012]Vigenère 密码
- 字符串分类
- [NOIP2005]谁拿了最多奖学金
- 勇气获得机
随机序列
#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牛客竞赛语法入门班顺序结构习题完结