首页 > 其他 > 详细

csp刷题001

时间:2021-02-01 21:45:36      阅读:39      评论:0      收藏:0      [点我收藏+]

202012-1期末预测之安全指数


202009-1称检测点查询


202006-1 线性分类器

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

const int N = 1010;
int n,m;

vector< pair<long,long> > a;
vector< pair<long,long> > b;

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		long long u,v;
		char c;
		scanf("%lld%lld %c",&u,&v,&c); //字符读入老是出锅 
		if(c==‘A‘) a.push_back(make_pair(u,v));
		else b.push_back(make_pair(u,v));
	}
	while(m--)
	{
		//cout<<"**********"<<endl;
		long long x,y,c;
		scanf("%lld%lld%lld",&c,&x,&y);
		
		int fl=1;
		long long s=a[0].first*x+a[0].second*y+c;
		
		//cout<<‘a‘<<0<<‘ ‘<<s<<endl;
		for(int i=1;i<a.size();i++) 
			if( (a[i].first*x+a[i].second*y+c) * s > 0)
			{
				s = a[i].first*x+a[i].second*y+c;
			//	cout<<‘a‘<<i<<‘ ‘<<s<<endl;
			}
			else
			{
				fl=0;
				break;	
			} 
		
		if(s*(b[0].first*x+b[0].second*y+c) > 0) fl = 0;
		else
		{
			//cout<<‘b‘<<0<<‘ ‘<<s<<endl;
			s = b[0].first*x+b[0].second*y+c;
			for(int i=1;i<b.size();i++) 
			if( (b[i].first*x+b[i].second*y+c) * s > 0)
			{
				s = b[i].first*x+b[i].second*y+c;
			//	cout<<‘b‘<<i<<‘ ‘<<s<<endl;
			}
			else
			{
				fl=0;
				break;	
			} 
		}	
		
		if(fl) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	//	cout<<"***********"<<endl;
	}
	return 0;
}

201912-1报数

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

const int N = 1010;
int n,m;

vector<int> res;

bool get_byte(int n)
{
	while(n){
		if(n%10 == 7) return true;
		n/=10;
	}
	return false;
}
int main()
{
	cin>>n;
	int cnt=0;
	for(int i=1;cnt<n;i++)
	{
		if(get_byte(i) || (i % 7 == 0))
		{
			res.push_back(i);
		}
		else
		{
			cnt++;
		}
	}

	int a=0,b=0,c=0,d=0;
	for(int i=0;i<res.size();i++)
	{
		if(res[i]%4==1) a++;
		else if(res[i]%4==2) b++;
		else if(res[i]%4==3) c++;
		else if(res[i]%4==0) d++;
	}
	cout<<a<<endl<<b<<endl<<c<<endl<<d<<endl;
	return 0;
}


201909-1小明种苹果

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

const int N = 1010;
int n,m;
int t[N];

int main()
{
	cin>>n>>m;
	int ind=1,ans_s=-1;
	for(int i=1;i<=n;i++)
	{
		int y,s=0;
		scanf("%d",&t[i]);
		for(int j=1;j<=m;j++)
		{
			scanf("%d",&y);
			s+=abs(y);
		} 
		t[i]-=s;
		if(s>ans_s)
		{
			ans_s=s;
			ind=i;
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++) ans+=t[i];
	cout<<ans<<‘ ‘<<ind<<‘ ‘<<ans_s<<endl;	
	
	return 0;
}

201903-1小中大

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

const int N = 100010;
int n,m;
int a[N];

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	
	int mid;
	mid=a[n/2+1];
	int ma,mi;
	if(a[n]>mid){
		ma=a[n];
		mi=a[1];
	}
	else{
		ma=a[1];
		mi=a[n];
	}
	cout<<ma<<‘ ‘;
	
	if(n%2==0) {
		if((a[n/2]+a[n/2+1])%2==0) cout<<(a[n/2]+a[n/2+1])/2<<‘ ‘;	
		else cout<<(a[n/2]+a[n/2+1])/2<<".5"<<‘ ‘;
	}
	else cout<<a[n/2+1]<<‘ ‘;
	cout<<mi<<endl;
	return 0;
}

201809-1卖菜

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

const int N = 100010;
int n,m;
int a[N];

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	
	cout<<(a[1]+a[2])/2<<‘ ‘;
	
	for(int i=2;i<n;i++) cout<<(a[i-1]+a[i]+a[i+1])/3<<‘ ‘;
	
	cout<<(a[n-1]+a[n])/2<<endl;
	return 0;
}



201803-1跳一跳

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

const int N = 100010;
int n,m;
int a[N];

int main()
{
	int last=1,ans=0;
	while(cin>>n, n)
	{
		if(n==1){
			ans+=1;	
			last=1;
		} 
		else if(n==2)
		{
			if(last==1){
				ans+=2;	
				last=2;
			} 
			else {
				ans+=(last+2);
				last+=2;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

201712-1最小差值

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N];

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	int mi = INF;
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			if(abs(a[i]-a[j])<mi)
				mi=abs(a[i]-a[j]);
		
	cout<<mi<<endl;
	return 0;
}

201709-1打酱油

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N];

int main()
{
	cin>>n;
	int ans = 0; 
	int a = n / 50;
	ans += a * 7;
	n -= a*50;
	int b = n / 30;
	ans += b * 4;
	n -= b*30;
	ans += n / 10;
	cout << ans << endl; 
	return 0;
}

201703-1分蛋糕

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N];

int main()
{
	cin>>n>>m;
	int ans=0,all=0;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++)
	{
		all+=a[i];
		if(all>=m){
			all=0;
			ans++;
		}
	}	
	if(all != 0) ans++; 
	cout<<ans<<endl;
	return 0;
}

201612-1中间数

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n;
int a[N];

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	int ans=-1;
	for(int i=1;i<=n;i++)
	{
		int ans1=0,ans2=0;
		for(int j=1;j<=n;j++)
		{
			if(a[j]<a[i]) ans1++;
			if(a[j]>a[i]) ans2++;
		}
		if(ans1==ans2) {ans=a[i];break;} //判断条件加上 ans1!=0 就错了!!! 可以0
	}

	cout<<ans<<endl;
	return 0;
}

201609-1最大波动

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n;
int a[N];

int main()
{
	cin>>n;
	int ans=-1;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=2;i<=n;i++)
		ans = max(ans, abs(a[i]-a[i-1]));

	cout<<ans<<endl;
	return 0;
}

201604-1折点计数

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n;
int a[N];

int main()
{
	cin>>n;
	int ans=0;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=2;i<n;i++)
		if( (a[i-1]<a[i] && a[i+1]<a[i]) || (a[i-1]>a[i] && a[i+1]>a[i]))
			ans++;
	cout<<ans<<endl;
	return 0;
}

201512-1数位之和

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n;
int a[N];

int main()
{
	cin>>n;
	int ans=0;
	while(n)
	{
		ans+=n%10;
		n/=10;
	}
	cout<<ans<<endl;
	return 0;
}

201509-1数列分段

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n;
int a[N];

int main()
{
	cin>>n;
	int ans=1;      //注意ans=1为初始值下面从2开始统计 而不是ans=0初始值下面从1开始统计
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=2;i<=n;i++) {
		if(a[i-1]!=a[i]) ans++;
	}
	cout<<ans<<endl;
	return 0;
}

201503-1图像旋转

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N][N];

int main()
{
	cin>>n>>m;

	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]);
	for(int i=m;i>=1;i--)
	{
		for(int j=1;j<=n;j++)
			printf("%d ",a[j][i]);
		cout<<endl;
	} 
	
	return 0;
}

201412-1门禁系统

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N],p[N];

int main()
{
	cin>>n;

	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);	
		p[a[i]]=0;
	} 
	for(int i=1;i<=n;i++) printf("%d ",++p[a[i]]);
	cout<<endl;

	return 0;
}

201409-1相邻数对

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N],p[N];

int main()
{
	cin>>n;

	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	} 
	sort(a+1,a+n+1);
	int ans=0;
	for(int i=2;i<=n;i++) if(a[i]-a[i-1]==1) ans++;
	cout<<ans<<endl;

	return 0;
}

201403-1相反数

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
const int INF = 100010;
int n,m;
int a[N],p[N];

int main()
{
	cin>>n;

	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	} 
	int ans=0;
	for(int i=1;i<=n;i++) 
		for(int j=i+1;j<=n;j++)
			if(a[i]==-a[j])
				ans++;
	cout<<ans<<endl;

	return 0;
}

201312-1出现次数最多的数

#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
const int INF = 100010;
int n,m;
int a,p[N];

int main()
{
	cin>>n;

	for(int i=1;i<=n;i++){
		scanf("%d",&a);
		p[a]++;
	} 
	
	int ma=-1,ans=a;
	for(int i=1;i<=10000;i++) 
		if(p[i]>ma) {
			ma=p[i];	
			ans=i;
		}
	cout<<ans<<endl;

	return 0;
}

csp刷题001

原文:https://www.cnblogs.com/snuonuo/p/14357103.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!