CCF-CSP-1

29-1田地丈量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e4+10;
int n,a,b;

bool st[N][N];
int main()
{
	cin>>n>>a>>b;
while(n--)
	  {
	  	int x1,y1,x2,y2;
	  	cin>>x1>>y1>>x2>>y2;
	  	x1=max(0,x1),x2=max(0,x2),y1=max(y1,0),y2=max(0,y2);
	  	for(int i=x1;i<x2;i++)
	  	   for(int j=y1;j<y2;j++)
	  	     st[i][j]=1;
	  } 
	  int res=0;
	for(int i=0;i<a;i++)
	  for(int j=0;j<b;j++)
	    if(st[i][j])  res++;
	cout<<res;
}

28-1*现值输入

在这里插入图片描述
在这里插入图片描述

*理解100%

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
double m,res;
int main()
{
	scanf("%d%lf",&n,&m);
	double x;
	for(int i=0;i<=n;i++) 
	{
		cin>>x;
		res+=x*pow(1+m,-i); 
	}
	printf("%.3f",res);
}

27-1 如此编码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100%

//根据提示
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=40;
int c[N],b[N],a[N];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)  cin>>a[i];
	c[0]=1;
	int sum=0;
	for(int i=1;i<n;i++)
	{
		c[i]=c[i-1]*a[i];
		b[i]=m%c[i]/c[i-1];
		sum+=c[i-1]*b[i];
	}
	for(int i=1;i<n;i++)  cout<<b[i]<<" ";
	b[n]=(m-sum)/c[n-1];
	cout<<b[n]<<endl;
 } 

26-1归一化处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100%

//根据题目中的提示
#include<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>    //开平方需要加的头函数
using namespace std;
const int N=100000;
double a[N];
double q[N];
int main()
{
    int n;
    cin>>n;
    double sum=0;
    for(int i=1;i<=n;i++) 
    {
        cin>>a[i];
        sum+=a[i];
    }
   double s_um=sum/n;
   double he=0;
   for(int i=1;i<=n;i++)
     he+=(a[i]-s_um)*(a[i]-s_um);
   double D=he/n;
   
   for(int i=1;i<=n;i++)
   {
       q[i]=(a[i]-s_um)/ sqrt(D);
   }
   for(int i=1;i<=n;i++)
     cout<<q[i]<<endl;
}

25-1未初始化警告

在这里插入图片描述
在这里插入图片描述

50%,时间超时

#include<iostream>
#include<cstring>
#include<algorithm>

#define x first
#define y second

using namespace std;
const int N=1e5+10;
typedef pair<int ,int> PII;
PII p[N]; 
int main()
{
	int n,k;
	cin>>n>>k;
	for(int i=0;i<k;i++)  cin>>p[i].x>>p[i].y;
	int res=0;
	for(int i=0;i<k;i++)
	{
		int flag=0;
		for(int j=0;j<i;j++)
		{
			if(p[i].y==p[j].x||p[i].y==0)   	flag=1;
		}
		if(flag==0)  res++;
	}
	cout<<res<<endl;
 } 

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int  N=1e5+10;
int q[N];
int n,k,res;
int main()
{
	cin>>n>>k;
	q[0]=1;            //注意当y为零时的特殊情况   
	for(int i=0;i<k;i++)
	{
		int x,y;
		cin>>x>>y;
		if(!q[y])
		{
			res++;	
		}
		q[x]=1;        //在if语句外面
	}
	cout<<res<<endl;
}

24-1序列查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100%

//题意理解
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=210;
int a[N],cnt;
int main()
{
	int n,k;
	cin>>n>>k;
	int res=0;
	for(int i=1;i<=n;i++)   cin>>a[i];

    for(int i=1;i<=n;i++)
    {
    	res+=(a[i]-a[i-1])*cnt;
    	//cout<<res<<endl;
    	cnt++;
	}
	res+=cnt*(k-a[n]);
	cout<<res<<endl;
}

23-1数组推导

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
int a[N];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)  cin>>a[i];
	int maxs=a[1],mins=a[1];
	for(int i=2;i<=n;i++)
	{
		maxs+=a[i];
		if(a[i]>a[i-1])
		 mins+=a[i];
	}
	cout<<maxs<<endl;
	cout<<mins<<endl;
}

22-1*灰度直方图

在这里插入图片描述在这里插入图片描述

100%

题意读懂:统计每个数出现的次数

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=300;
int h[N];
int n,m,l;
int main()
{
	cin>>n>>m>>l;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		 {
		 	int x;
		 	cin>>x;
		 	h[x]++;
		 
		 }
		 
	}
	for(int i=0;i<l;i++)  cout<<h[i]<<" ";	
}

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

在这里插入图片描述
在嗷嗷嗷片描述
在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N],w[N];
int main()
{
	int res=0;
  int n;
  cin>>n;
  for(int i=0;i<n;i++)
  {
  	cin>>a[i]>>w[i];
  	res+=a[i]*w[i];
  }
  if(res<0)   res=0;
  
  cout<<res<<endl;
}

20-1称监测点查询

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

100% 结构体存储,sort排序

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=220;
 struct point{                 //定义结构体
	int x;
	int y;
	int num;
	int d;
}a[N]; 

bool cmp(point c,point b)        //排序
{
	if(c.d==b.d)  return c.num<b.num;  //不要漏!!!!!
	else return c.d<b.d;	
}

int main()
{
   int n,x1,y1;
   cin>>n>>x1>>y1;
   for(int i=0;i<n;i++) 
   {
   
	cin>>a[i].x>>a[i].y;
	a[i].num=i+1;
	a[i].d=(a[i].x-x1)*(a[i].x-x1)+(a[i].y-y1)*(a[i].y-y1);
   }
   sort(a,a+n,cmp);                      //格式
   for(int i=0;i<3;i++)
   cout<<a[i].num<<endl;
}

19-1*线性分类器

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=1010;
struct point{
    long long int x,y;
    char z;
}p[N];
int n,m;

int get(int a,int b,int c,char z)
{
    int s=0;
    for(int i=0;i<n;i++)
    {
        if(p[i].z==z)
        {
            if(a+b*p[i].x+c*p[i].y>0)  s=s|1;
            else s=s|2;
        }
    }
    return s;
}

bool check(int a,int b,int c)
{
    int s1=get(a,b,c,'A'),s2=get(a,b,c,'B');
    if(s1==3||s2==3)  return false;    //一边有A也有B
    if(s1&s2)  return false;        //全在一边 ,全是1,或全是2 
     return true; 

}
int main()
{

    cin>>n>>m;
    for(int i=0;i<n;i++)  cin>>p[i].x>>p[i].y>>p[i].z;
    for(int i=0;i<m;i++)
    {
        int q1,q2,q3;
        cin>>q1>>q2>>q3;
        if(check(q1,q2,q3))  puts("Yes");
        else puts("No");
    }
}

100%

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e3+10;
int n,m;
struct p{
	int x,y;
	char c;
}a[N];
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>a[i].x>>a[i].y>>a[i].c;
	}
	while(m--)
	{
		int q1,q2,q3;
		cin>>q1>>q2>>q3;
		int ax=0,bx=0;
		for(int i=0;i<n;i++)
		{
		   int t=q1+q2*a[i].x+q3*a[i].y;
			if(a[i].c=='A')
			{
				
				if(t>0)  ax=ax|1;
				else ax=ax|2;
			} 
			else{
			  if(t>0) bx=bx|1;
			  else bx=bx|2;
			}	
		}
		if(ax==3||bx==3) puts("No");
		else puts("Yes");
	}
}

18-1报数

在这里插入图片描述
在这里插入图片描述

100%

//读题
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int h[5];

bool clde(int x)
{
	while(x>0)
	{
		int n=x%10;
		if(n==7)  return true;
		else   x=x/10;
	}
	return false;
}
int main()
{
	int n;   cin>>n;
	int cnt=1;
	int i=1;
    while(cnt<n)
	{ 
	     i++;
		if(i%7==0||clde(i))   h[i%4]++;
		else cnt++;
	} 
   for(int i=1;i<4;i++)  cout<<h[i]<<endl;
   cout<<h[0]<<endl;
}

17-1小明种苹果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100%

输出序号较小的

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
	int minn=0,mins=0;
	int n,m;
	cin>>n>>m;
	int sum=0;
	int a[n][m+1];
	
	for(int i=0;i<n;i++)
		for(int j=0;j<=m;j++)
			cin>>a[i][j];
		
	for(int i=0;i<n;i++)
		for(int j=0;j<=m;j++)
			sum+=a[i][j];
			
	for(int i=0;i<n;i++)
	{
		int s=0;
		for(int j=1;j<=m;j++)
			s=a[i][j]+s;
	
		if(mins<abs(s))  
		{
	    	mins=abs(s);
	    	minn=i+1;
	   }
   }
   cout<<sum<<" "<<minn<<" "<<mins;
}

16-1小中大

在这里插入图片描述
在这里插入图片描述

80%(浮点数的表示)

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
int n;
cin>>n;
int a[n];
int min,max=0;
double mid=0;
int i=0;
for(int i=0;i<n;i++)	cin>>a[i];
	 
if(a[0]>a[n-1])  
{
	max=a[0];
	min=a[n-1];
}
else
{
	max=a[n-1];
	min=a[0];
}
if(n%2==0)  
{
   mid=(a[n/2]+a[n/2-1])/2.0;       //除以2.0
   if((a[n/2]+a[n/2-1])%2!=0)   printf("%d %.1f %d",max,mid,min); 
   else printf("%d %.0f %d",max,mid,min);
}
else  
{
  mid=a[n/2];
   printf("%d %.0f %d",max,mid,min);
}
}

100%

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

int main()
{
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++)  cin>>a[i];
    int max=0,min=0;
    int c=0;
    if(a[0]>a[n-1]) 
    {
        max=a[0];
        min=a[n-1];
    }
    else
    {
        max=a[n-1];
        min=a[0];
    }
    if(n%2!=0)
    {
        c=a[n/2];
        cout<<max<<" "<<c<<" "<<min;
        return 0;
    }
    else
    {
        int  b=a[n/2]+a[n/2-1];
        if(b%2==0)
        {
            cout<<max<<" "<<b/2<<" "<<min;
            return 0;
        }
        else
        {
            double z=(a[n/2]+a[n/2-1])/2.0;
            printf("%d %.1f %d",max,z,min);
            return 0;
        }
    }
}

15-1小明上学

在这里插入图片描述

在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;   //直接k,t,边输入边计算
PII a[110];
int main()
{
	int r,y,g;
	cin>>r>>y>>g;
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	  cin>>a[i].x>>a[i].y;
	  int sum=0;
	for(int i=0;i<n;i++)
	{
		if(a[i].x==0)  sum+=a[i].y;
		else if(a[i].x==3)   continue;
		else if(a[i].x==2)  sum+=a[i].y+r;
		else  sum=sum+a[i].y;
	}
	cout<<sum<<endl;	
}

14-1卖菜

在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1010;

int a[N],b[N];
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)   cin>>a[i];
	b[0]=(a[0]+a[1])/2;
	b[n-1]=(a[n-1]+a[n-2])/2;
	
	for(int i=1;i<n-1;i++)  b[i]=(a[i-1]+a[i]+a[i+1])/3; 
	for(int i=0;i<n;i++)   cout<<b[i]<<" ";
}

13-1跳一跳

在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
 {
 	int x;
 	cin>>x;
 	int sum=0;
 	if(x==2)  sum=2;
 	if(x==1)  sum=1;
 	int s=x;    //上一局的得分 
 
 	while(cin>>x&&x!=0)
 	{
 		if(x==1)  
		 {
		 sum+=1;
		 s=1;
	    }
 		else if(x==2&&s==1)   
		 {
		 	sum+=2;
		 	s=2; 
		  } 
	    else
		{
			sum=sum+2+s;
			s=s+2;
		 } 
	 }
 	cout<<sum<<endl;
 }

12-1最小差值

在这里插入图片描述在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=1010;
int a[N];
int main()
{
	int n;
	cin>>n;
	int min=1e8;
	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(min>abs(a[i]-a[j]))  min=abs(a[i]-a[j]);
	  }
	  cout<<min<<endl;
 } 

11-1打酱油

在这里插入图片描述

100%

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
	int n;
	cin>>n;
	int m=n/50;
	n=n%50;
   int p=n/30;
   n=n%30;
   int sum=0;
   sum=2*m+n/10+p+m*5+p*3;
   cout<<sum<<endl;
 } 

10-1分蛋糕

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N];
int main()
{
	int n,k;
	cin>>n>>k;
	for(int i=0;i<n;i++)  cin>>a[i];
	int res=0;
	int sum=0;
	for(int i=0;i<n;i++)
	{
	  sum=sum+a[i];
	  if(sum>=k)
	  {
	  	sum=0;
	  	res++;
	  }  	
	}
	if(sum<k&&sum>0)  res++;    //sum>0
	cout<<res<<endl;
}

9-1中间数

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N];
int main()
{
	int n;            	cin>>n;
	for(int i=0;i<n;i++)   cin>>a[i];
	for(int i=0;i<n;i++)
	{
	  int low=0,big=0;
    	for(int j=0;j<n;j++)
		 {
		 	if(a[i]<a[j])  big++;
		 	if(a[i]>a[j])  low++;	
	     }
		if(low==big)  
		{
		    cout<<a[i];
		    return 0;
	    }
   }	
cout<<"-1"<<endl;
return 0;
}

8-1最大波动

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N];
int main()
{
	int n;
	cin>>n;
	int max=0;
	for(int i=0;i<n;i++)   cin>>a[i];
	
    for(int i=1;i<n;i++)
       if(max<abs(a[i]-a[i-1]))  max=abs(a[i]-a[i-1]);
	cout<<max;
}

7-1折点计数

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N];
int main()
{
	int n;
	cin>>n;
    int res=0;
	
	for(int i=0;i<n;i++)   cin>>a[i];
    for(int i=1;i<n-1;i++)
    {
    	int l=0,r=0;       //上升记为1,下降记为0,折点为一个上升一个下降
    	if(a[i]>a[i-1])  l=1;
    	if(a[i]<a[i+1])   r=1;
    	
    	if(l+r==1)  res++;
	}
	cout<<res;
}

在这里插入图片描述

6-1数位之和

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N];
int main()
{
	int n;
	cin>>n;
    int res=0;
	while(n)
	{
		res+=n%10;
		n=n/10;
	}
	cout<<res;
}

5-1数列分段

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N];
int main()
{
	int n;
	cin>>n;
   for(int i=0;i<n;i++)    cin>>a[i];
int res=1;
for(int i=1;i<n;i++)
{
	if(a[i]!=a[i-1])  res++;
}
cout<<res;
}

4-1图像旋转

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int a[N][N];
int main()
{
	int n,m;
	cin>>n>>m;
   for(int i=0;i<n;i++)   
     for(int j=0;j<m;j++) 
        cin>>a[i][j];

    for(int j=m-1;j>=0;j--)
      {
	     for(int i=0;i<n;i++)
             cout<<a[i][j]<<" ";
         cout<<endl;
     }     
    
}

3-1门禁系统

在这里插入图片描述

100%

哈希表

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=1010;
int h[N];
int main()
{
	int n;   cin>>n;
   for(int i=0;i<n;i++)
   {
   int x;   cin>>x;
     h[x]++;
   cout<<h[x]<<" "; 	  
	} 
}

2-1相邻数对

在这里插入图片描述

100%

哈希表

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=10010;
int h[N];
int main()
{
	int n;
	cin>>n;
   
int res=0;
   for(int i=0;i<n;i++)
   {
     int x;
     cin>>x;
     h[x]=1; 
	}  
for(int i=1;i<N;i++)
	if(h[i]==1&&h[i-1]==1)  res++;
cout<<res;
}

1-1相反数

在这里插入图片描述

100%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=510;
int a[N];
int main()
{
	int n;
	cin>>n;
   int res=0;
   for(int i=0;i<n;i++)    cin>>a[i];
    for(int i=0;i<n;i++)
    {
    	if(a[i]<0)
    	{
    		for(int j=0;j<n;j++)
    		  if(a[j]==abs(a[i]))
    		  res++;
		}
	}
cout<<res;
}

0-1出现次数最多的数

在这里插入图片描述

90%

#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N=10010;        //注意数据范围
int h[N];
int main()
{
	int n;
	cin>>n;
   int max=0;
   for(int i=0;i<n;i++)
     {
     	int x;
     	cin>>x;
     	h[x]++;
    	 }
    int res=0;
	
    for(int i=0;i<N;i++)
    {
        if(h[i]>max) 
		{
		  max=h[i];
		  res=i;
	    }
	}
   cout<<res;
}

技巧

查看csp(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值