CCF CSP认证/试题/1,2

csp
总网页:https://www.cspro.org/
http://118.190.20.162/home.page

介绍

https://www.bilibili.com/video/BV1oK411W7st?from=search&seid=3385498905670966399
在这里插入图片描述
在这里插入图片描述

题型

在这里插入图片描述在这里插入图片描述
set: https://blog.csdn.net/changjiale110/article/details/79108447
vector:http://c.biancheng.net/view/6749.html
在这里插入图片描述在这里插入图片描述
c++用标准输入输出流测试数据:https://blog.csdn.net/sunlanchang/article/details/70207749

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
	int n;
	freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	freopen("out.txt", "w", stdout); //输出重定向,输出数据将保存在out.txt文件中
	cin>>n;
	cout<<n;
	fclose(stdin);//关闭文件 
	fclose(stdout); //关闭文件
	return 0;
}

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

进阶

在这里插入图片描述

知识点

在这里插入图片描述

循环用while比for好
万能头文件 #include<bits/stdc++.h>

创建动态数组

二维

 //n=行;m=列 
 int **p=new int*[n];//开辟一块存放每一行的地址 
 for(int i=0;i<n;i++)//为每一行开辟 
   p[i]=new int[m]; 
   
 //删除
 for(int i=0;i<n;i++)//删除每一行空间 
   delete [] p[i];
  delete [] p;//删除行指针 
 p=NULL;

函数

排序

sort(start, end, cmp)
cmp 可不写,默认升序
头文件 #include

https://www.cnblogs.com/junbaobei/p/10776066.html

最大最小

头#include
min()
max()
拓展 C++ 头文件 https://blog.csdn.net/liuweiyuxiang/article/details/51865991
swap

STL

vector

https://blog.csdn.net/weixin_41743247/article/details/90635931?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163036805016780265467779%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163036805016780265467779&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-90635931.first_rank_v2_pc_rank_v29&utm_term=vector&spm=1018.2226.3001.4187

count

https://blog.csdn.net/lyj2014211626/article/details/69615514

题目

1

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

https://blog.csdn.net/Houstox/article/details/113806001
https://blog.csdn.net/zy440458/article/details/113753329
在这里插入图片描述在这里插入图片描述
c语言

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
	int flag;
	int score;
}Course;

int main()
{
	int n, sum = 0;
	scanf_s("%d", &n);
	Course course[n];//??
	for (int i = 0; i < n; i++)
		scanf_s("%d %d", &course[n].flag, &course[n].score);
	for (int i = 0; i < n; i++)
		sum += &course[i].flag * &course[i].score;
	if (sum <= 0)
		printf("0");
	else
		printf("%d", sum);
	return 0;
}



分割线

c++

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
	int n, w, score,sum = 0;
	cin >> n;
	while (n--) {
		cin >> w >> score;
		sum += w * score;
	}
	if (sum > 0)
		cout << sum;
	else
		cout << "0";
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

struct N{
	int w,s;
};



int main()
{
	//freopen("in.txt","r",stdin);
	
	int n;
	cin>>n;
	vector<N> nn(n);
	
	int w,s;
	long long sum=0;
	_for(i,0,n)
	{
		cin>>w>>s;
//		nn[i].w=w;
//		nn[i].s=s;
        sum+=w*s;
	}
    if(sum>=0)
    {
    	cout<<sum;
	}
	else
	{
		cout<<"0";
	}

	
    
    //fclose(stdin);
	return 0;
 } 

202104-1 灰度直方图

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

https://blog.csdn.net/CS_Kevin_1/article/details/115605311
new的用法

#include <iostream>
#include <stdio.h>
using namespace std;

int main() 
{
	int n, m, L, i;
	cin >> n >> m >> L;
	int num = n * m;
	int* res = new int[L];//动态分配
	for ( i = 0; i < L; i++)
		res[i] = 0;
	for (i = 0; i < num; i++)
	{
		int data;
		cin >> data;
		res[data]++;
	}
	for (i = 0; i < L ; i++)
		cout << res[i] << " ";
	return 0;
}

202009-1 称检测点查询

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

c
https://blog.csdn.net/qq_33439662/article/details/110681128

c++

#include <iostream>
#include <stdio.h>
using namespace std;

int main() 
{
	int n, X, Y, i, j;
	int x, y, t, k;
	cin >> n >> X >> Y;
	int* di = new int[n];//记录各个市民的距离
	int* num = new int[n];//编号
	for (i = 0; i < n; i++)
	{
		num[i] = i + 1;
	}
	for (i = 0; i < n; i++)
	{
		cin >> x >> y;
		di[i] = (X - x) * (X - x) + (Y - y) * (Y - y);
	}
	//冒泡排序
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - 1 - i; j++)
		{
			if (di[j] > di[j + 1])
			{
				//距离
				t = di[j];
				di[j] = di[j + 1];
				di[j + 1] = t;
				//编号
				k = num[j];
				num[j] = num[j + 1];
				num[j + 1] = k;
			}
		}
	}
	for (i = 0; i < 3; i++)
	{
		cout << num[i];
		if (i != 2)//注意输入格式
			cout << "\n";
	}
	return 0;
}

202006-1 线性分类器

在这里插入图片描述在这里插入图片描述在这里插入图片描述
题目意思:判断测定的线能否区分AB两个区域

//参考
#include <iostream>
#include <stdio.h>
using namespace std;
struct node
{
	int x, y;
	char id;
}node[1001];

int main() 
{
	int n, m, i, j;
	cin >> n >> m;
	for (i = 0; i < n; i++)
		cin >> node[i].x >> node[i].y >> node[i].id;
	int q0, q1, q2;
	int t, f1, f2, f;
	for (i = 0; i < m; i++)
	{
		cin >> q0 >> q1 >> q2;
		f = 1;
		f1 = f2 = -1;
		for (j = 0; j < n; j++)
		{
			t = (q0 + q1 * node[j].x + q2 * node[j].y) > 0 ? 1 : 0;
			if (node[j].id == 'A')//分类
			{
				if (f1 == -1)
					f1 = t;
				else if (f1 != t)
				{
					f = 0;
					break;
				}
			}
			else if (node[j].id == 'B')
			{
				if (f2 == -1)
					f2 = t;
				else if(f2 != t)
				{
					f = 0;
					break;
				}
			}
			if (f1 == f2)//全部点都在线上
			{
				f = 0;
				break;
			}
		}
		if (f == 0)
			cout << "No\n";
		else
			cout << "Yes\n";
	}
	return 0;
}

201912-1 报数

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

https://blog.csdn.net/weixin_45884316/article/details/103603660

#include<iostream>
using namespace std;

int main()
{
	int n;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n;
	int ans=0,count=0;
	int a[4]={0};
	while(count!=n) 
	{
		ans++;
		int f=1;
		if(ans%7==0)
		{
			a[ans%4]++;
			f=0;
		}
		else //含有7的
		 {
		 	int y=ans;
		 	while(y>=1)
			 {
			 	int x=y%10;
			 	if(x==7)
			 	{
			 		a[ans%4]++;
			 		f=0;
			 		break;
				 }
				 y/=10;
			 }	
		 }
		 if(f==1)
		   count++;
	}
	cout<<a[1]<<endl;
	cout<<a[2]<<endl;
	cout<<a[3]<<endl;
	cout<<a[0]<<endl;
	//fclose(stdin); 
	return 0;
}

201909-1 小明种苹果

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

#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n,m,x;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
    cin>>n>>m;
    int *a=new int[m+1];
    int *b=new int[n];//存每棵放疏果的总个数 
    int ke=0,k=0;
    while(k!=n)
    {
    	_for(i,0,m+1)
    	{
    		cin>>a[i];
    		if(i!=0)
    		  b[k]+=a[i];
    		else
    		{
    			 ke+=a[i];//a[0]
    			 b[k]=0;
			}
    		 
		}
		k++;	
	}
	int min=b[0],sub=0;
	_for(i,0,n)
	{
		ke+=b[i];
		if(min>b[i])
		  {
		     min=b[i];
		     sub=i;
        }
	}
    delete []a;
    delete []b;
    cout<<ke<<" "<<sub+1<<" "<<-min;
	//fclose(stdin); 
	return 0;
}

201812-1 小明上学

在这里插入图片描述
在这里插入图片描述
k=0,k=1时加上t,k=2时加上t+r,k=3时加上0。

#include<iostream>
using namespace std;


int main()
{
	int r,y,g,n;
//	freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>r>>y>>g>>n;
	int sum=0,k,t;
	while(n)
	{
		cin>>k>>t;
		if(k==0||k==1)
		  sum=sum+t;
	    if(k==2)
		  sum=sum+t+r;
		n--; 
	}
	cout<<sum;
//	fclose(stdin); 
	return 0;
}

201809-1 卖菜

在这里插入图片描述

#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n;
	int *a=new int[n];
	int *b=new int[n];
	_for(i,0,n)
	  cin>>a[i];
	_for(i,0,n)
	{
		if(i==0)
		  b[i]=(a[0]+a[1])/2;
		else if(i==n-1)
		  b[n-1]=(a[n-1]+a[n-2])/2;
		else
		   b[i]=(a[i-1]+a[i]+a[i+1])/3; 
	}
	_for(i,0,n)
	  cout<<b[i]<<" ";
	  delete []a;
	  delete []b;
//	fclose(stdin); 
	return 0;
}

201712-1 最小差值

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

#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n;
	//freopen("in.txt","r",stdin);
	cin>>n;
	int *a=new int[n];
	_for(i,0,n)
		cin>>a[i];
	sort(a,a+n);
	int min=10010;
	_for(i,1,n)
	{
		int x=a[i]-a[i-1];
		if(x<min)
		  min=x;
	}
	cout<<min;
	delete []a;
	//fclose(stdin);
	return 0;
 } 


201709-1 打酱油

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

#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int N; 
	//freopen("in.txt","r",stdin);
	cin>>N;
	int ans=0;
	int wu=N/50;
	if(wu)
	{
		N-=wu*50;
		ans=7*wu;
	}
	int san=N/30;
	if(san)
	{
		N-=san*30;
		ans+=san*4;
	}
	ans+=N/10;
	
	cout<<ans;
	//fclose(stdin);
	return 0;
 } 

201703-1 分蛋糕

在这里插入图片描述

#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n,k;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n>>k;
	int *a=new int[n];
	_for(i,0,n)
	{
		cin>>a[i];
	}
	int sum=0,ans=0;
	_for(i,0,n)
	{
		sum+=a[i];
		if(sum>=k)
		{
			ans++;
			sum=0;
		}
	    if(i==n-1 && sum<k && sum!=0)//到最后一块,然后还不够重的情况 
		{
			ans++;
		}
	}
	cout<<ans;
	delete []a;
	//fclose(stdin); 
	return 0;
}

201609-1 最大波动

在这里插入图片描述

#include<iostream>
//#include<cstdio>
#include<math.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n;
	int *a=new int[n];
	_for(i,0,n)
	{
		cin>>a[i];
	}
	int ans=0;
	_for(i,1,n)
	{
		int x=fabs(a[i]-a[i-1]);
		if(ans<x)
		  ans=x;
	}
	cout<<ans;
	delete []a;
	//fclose(stdin); 
	return 0;
}

201612-1 中间数

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

#include<iostream>
//#include<cstdio>
#include<algorithm>
//#include<math.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n;
	int *a=new int[n];
	_for(i,0,n)
	{
		cin>>a[i];
	}
	int ans=-1;
	sort(a,a+n);//先排序,然后计算自由两边的数 
	int x=0,y=0;
	int mid=n/2;
	_for(i,0,n) 
	{
		if(a[i]<a[mid])
		  x++;
		else if(a[i]>a[mid])
		  y++;
	}
	if(x==y)
	  ans=a[mid];

	cout<<ans;
	delete []a;
	//fclose(stdin); 
	return 0;
}

201604-1 折点计数

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

折点前后的数字
a b c
(b-a)*(c-b)<0

#include<iostream>
//#include<cstdio>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n;
	int *a=new int[n];
	_for(i,0,n)
	{
		cin>>a[i];
	}
	int ans=0;
	_for(i,1,n-1)
	{
		int x=(a[i]-a[i-1])*(a[i+1]-a[i])>0?0:1;
		if(x)
		  ans++; 
	}
	delete []a;
	cout<<ans;
	//fclose(stdin); 
	return 0;
}

201512-1 数位之和

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
	long long x;
	int sum=0;
	cin>>x;
	while(x)
	{
		int y=x%10;
		sum+=(y);
		x=x/10;
		if(x<0)
		 x=0;	
	}
	cout<<sum;
	return 0;
}

201509-1 数列分段

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
	int n,i;
	cin>>n;
	int *a=new int[n];
	for(i=0;i<n;i++)
	  cin>>a[i];
	int ans=0;
	for(i=1;i<n;i++)
	{
		if(a[i]!=a[i-1])//遇到与前面不同的数 次数加一
		  ans++;
	}
	delete []a;
	cout<<ans+1;
	return 0;
}

201503-1 图像旋转

在这里插入图片描述

#include<iostream>
using namespace std;
int a[1010][1010],b[1010][1010];//注意,如果定义的数组所需内存较大,应放在main函数之外,否则可能因为main函数内的内存不足导致停止工作
int main()
{
	int n,m,i,j;

	cin>>n>>m; 
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		 cin>>a[i][j];
	}
	//规律:第x行倒着数=第x列正着数 
	int x=0,y=0;
	for(i=0;i<n;i++)
	{
		x=0;
		for(j=m-1;j>=0;j--)
		{
			
			b[x][y]=a[i][j];
			x++;
		}
		y++;
	}
	for(i=0;i<m;i++)
	{
	    for(j=0;j<n;j++)
		 cout<<b[i][j]<<" ";//注意格式 
		cout<<endl;
	}
	return 0;
}

201412-1 门禁系统

在这里插入图片描述

#include<iostream>
using namespace std;

int main()
{
	int n;
	cin>>n;
	int x;
	int b[1010]={0};//记录次数
	for(int i=0;i<n;i++)
	{
		cin>>x;
		b[x]++;
		cout<<b[x]<<" ";
	}
	return 0;
}

201409-1 相邻数对

在这里插入图片描述

注意题目,不同的非整数
排序然后相邻的相减

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

int main()
{
	int n;
	cin>>n;
	int *a=new int[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	
	int c=0;
	sort(a,a+n);
	for(int i=1;i<n;i++)
	{
		int x=a[i]-a[i-1]; 
		if(x==1)
		 c++;
	}
	 
	cout<<c;
	delete []a;
	return 0;
}

201403-1 相反数

在这里插入图片描述

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

int main()
{
	int n;
	cin>>n;
	int *a=new int[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	sort(a,a+n);//排序 
	int c=0;
	for(int i=1;i<n;i++)
	{
		while(a[i]<0)//找到正数 
		 i++;
		for(int j=0;j<i && a[i]>0;j++)//负数与正数一一比较 
		{
			if(a[j]==(-a[i]))
			 c++;
		}
	}
	cout<<c;
	delete []a;
	return 0;
}

//直接暴力也可

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

int main()
{
	int n;
	cin>>n;
	int *a=new int[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	
	int c=0;
	for(int i=0;i<n;i++)
	{
		for(int j=i;j<n;j++)
		{
			if(a[i]==-a[j])
			 c++;
		}
	 } 
	cout<<c;
	delete []a;
	return 0;
}

https://blog.csdn.net/CS_Kevin_1/article/details/115605466

201903-1 小中大

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
https://blog.csdn.net/Jessica_zhu1/article/details/100905394

https://blog.csdn.net/qq_41318400/article/details/89453376?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.essearch_pc_relevant


#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	//freopen("in.txt","r",stdin);
	
    int n;
    cin>>n;
    vector<int> a(n);
    _for(i,0,n)
      cin>>a[i];
    
    sort(a.begin(),a.end());
    
    cout<<a[n-1]<<" ";
    if(n==1)
    {
    	cout<<a[0]<<" ";
	}
    else if(n%2!=0)
    {
    	cout<<a[(n-1)/2]<<" ";
	}
	else
	{
		float mid=(a[n/2]+a[n/2-1])*1.0/2;
		if(mid-(int)mid!=0)
		  cout<<setiosflags(ios::fixed)<<setprecision(1) << mid <<" ";
		else
		  cout<<setiosflags(ios::fixed)<<setprecision(0) << mid <<" ";
	}
	cout<<a[0];
    
    //fclose(stdin);
	return 0;
 } 

2

202104-2 邻域均值

在这里插入图片描述
https://www.cnblogs.com/fxh0707/p/14907758.html
//前缀和 https://blog.csdn.net/qq_34990731/article/details/82807870

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=610;
int a[N][N]={0},b[N][N]={0};
int main()
{
	int n,L,r,t; 
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n>>L>>r>>t;
	int i,j,k;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		  {
		    cin>>a[i][j];
		    b[i][j]=b[i][j-1]+b[i-1][j]-b[i-1][j-1]+a[i][j];
	      }
	}
	
	
	int sum=0,cnt=0,ans=0;
	for(i=1;i<=n;i++)
	{
	    for(j=1;j<=n;j++)
	    {
	    	int a1=max(1,i-r);//左 a
	    	int a2=min(n,i+r);//右 c
	    	int a3=max(1,j-r);//上 b
	    	int a4=min(n,j+r);//下 d
			sum=b[a2][a4]-b[a1-1][a4]-b[a2][a3-1]+b[a1-1][a3-1];
			cnt=(a2-a1+1)*(a4-a3+1);
			if(sum<=t*cnt)  ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

201912-2 回收站选址

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

https://blog.csdn.net/tigerisland45/article/details/104213820

#include<bits/stdc++.h>//万能头文件 
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

const int N=1000;
pair<int,int> p[N];
 
int main()
{
	int n;
	map<pair<int,int>,int> ps;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n;

   for(int i = 0; i < n; i++)
   {
        int x, y;
        scanf("%d%d", &x, &y);

        p[i] = make_pair(x, y);
        ps[p[i]] = 1;
        
    }
    
    int cnt[5]={0};
    _for(i,0,n)
	{
		int x=p[i].first;
		int y=p[i].second;
		
		if( ps[make_pair(x, y -1)] && ps[make_pair(x, y + 1)] &&
                ps[make_pair(x - 1, y)] && ps[make_pair(x + 1, y)] )
            cnt[ps[make_pair(x - 1, y - 1)] + ps[make_pair(x - 1, y + 1)] +
                    ps[make_pair(x + 1, y - 1)] + ps[make_pair(x + 1, y + 1)]]++;
	 } 
	 
	 _for(i,0,5)
	 cout<<cnt[i]<<endl;;

	//fclose(stdin); 
	return 0;
}

202012-2 期末预测之最佳阈值 ??

https://blog.csdn.net/qq_45985728/article/details/114903481
https://www.cnblogs.com/zhangzizi/p/14307323.html
https://blog.csdn.net/qq_45985728/article/details/114903481
https://blog.csdn.net/qq_43464088/article/details/112080044

6
0 0
1 0
1 1
3 1
5 1
7 1

//#include<iostream>
#include<bits/stdc++.h>
//#include<cstdio>
//#include<algorithm>
//#include<math.h>
//#include<vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
const int N=100010;

bool cmp1(pair<int,int>a,pair<int,int>b)
{
	return a.first>b.first;//升值排序 
}

int main()
{
	int m; 
	freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>m;
	vector<pair<int,int> > p(m);
	_for(i,0,m)
	{
		int a,b;
		p[i]=make_pair(a,b);
	}
	sort(p.begin(),p.end(),cmp1); 
	
	int f0[N]={0};//记录小于每个位置点阈值的result=0的个数 
	int f1[N]={0};//记录大于每个位置点阈值的result=0的个数 
	int i=0,j=0;
	
	while(i<m)
	{
		int x=p[i].first;
		while(j<m)
		{
			if(p[j].first<x)
			{
				if(p[j].second==0)
				cout<<"p[j].:"<<p[j].first<<endl;
				  f0[p[j].first]++;
			}
			else
			{
				if(p[j].second==1)
				  f0[p[j].first]++;
			}
			j++;
		}
		i++;
	 } 
	 cout<<0;
	 int ans=0,sum=0;
	 for(i=0;i<N;i++)
	 {
	 	int y=f0[i]+f1[i];
	 	if(y>=sum)
	 	{
	 		sum=y;
	 		ans= i;
		 }
	 }
	cout<<ans;
	fclose(stdin); 
	return 0;
}



201909-2 小明种苹果(续)

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

https://blog.csdn.net/qq_45228537/article/details/102080630

#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	int n;
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
    cin>>n;
    int *drop=new int[n];
    int total=0,sum=0,cnt=0;
    _for(i,0,n)
    {
    	int m,num,a;
    	cin>>m>>num;
    	drop[i]=0;
    	_for(j,0,m-1)
    	{		
    		cin>>a;
    		if(a<=0)
    		 num+=a;
    		else if(num!=a)
    		{
    			drop[i]=1;
    			num=a;
			}
		}
		total+=num;
	}
	_for(i,0,n)
	{
		sum+=drop[i];
		if(drop[i]&&drop[(i+2)%n]&&drop[(i+1)%n]) cnt++;//取余的方法 
	}
	cout<<total<<" "<<sum<<" "<<cnt; 
	delete []drop;
	//fclose(stdin); 
	return 0;
}


201812-2 小明放学

https://blog.csdn.net/weixin_44778155/article/details/101158855

201809-2 买菜

在这里插入图片描述

https://blog.csdn.net/weixin_43597126/article/details/107964185

201803-2 碰撞的小球

https://blog.csdn.net/tigerisland45/article/details/81660041

https://blog.csdn.net/SongBai1997/article/details/81175312?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.essearch_pc_relevant

202009-2 风险人群筛查 ??

#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
const int N=1005;


int main()
{
	int n,k,t,x1,x2,y1,y2;
	//freopen("in.txt","r",stdin);
    cin>>n>>k>>t>>x1>>y1>>x2>>y2;
    int p=0,pass=0,stay=0,s=0,ss=0;
    int count=n*t;
    
    while(n--)
    {
    	int x,y;
    	_for(i,0,t)
    	{
    		cin>>x>>y;
    		if(x>=x1 && x<=x2 && y>=y1 && y<=y2)
    		  {
    		  	//cout<<x<<" "<<y<<endl; 
    		  	s++;
    		  	p=1;
    		  	if(s==k)//为什么>=不对?
    		  	  {
    		  	  	//cout<<n<<" "<<x<<" "<<y<<endl; 
    		  	  	ss=1;
				  }
			  }
    		else 
    		  s=0;
		}
		stay+=ss;
		pass+=p;
		ss=0;
		p=0;
				//cout<<n<<" "<<stay<<endl;
			
	}
	cout<<pass<<endl<<stay;

    //fclose(stdin);
	return 0;
 } 

201712-2 游戏

https://blog.csdn.net/weixin_43597126/article/details/108694133

202006-2 稀疏向量 ??

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意大小 用long long
不用排序

#include<iostream>
#include<vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

typedef struct Piont
{
	int x;
    int y;
}P;

int main()
{
	int n,a,b; 
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n>>a>>b;
	vector<P> u(a);
	vector<P> v(b);
	_for(i,0,a)
	{
		cin>>u[i].x>>u[i].y;
	}
	_for(i,0,b)
	{
		cin>>v[i].x>>v[i].y;
	}	
	int maxn=max(a,b);
	int k=0,l=0;
	long long sum=0;
	while(k<a && l<b)//注意
	{
		if(u[k].x>v[l].x)
		{
			l++; 
		}
		else if(u[k].x<v[l].x)
		{
			k++;	
		}
		else
		{
			//cout<<u[k].y<<" "<<v[l].y<<endl;
			sum+=u[k].y*v[l].y;
			k++;
			l++;
		}		
	}
    cout<<sum;
	//fclose(stdin); 
	return 0;
}

//错了

#include<iostream>
//#include<cstdio>
#include<algorithm>
//#include<math.h>
#include<vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

typedef struct Piont
{
	int x;
    int y;
}P;

int main()
{
	int n,a,b; 
	//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
	cin>>n>>a>>b;
	vector<P> u(a);
	vector<P> v(b);
	_for(i,0,a)
	{
		cin>>u[i].x>>u[i].y;
	}
	_for(i,0,b)
	{
		cin>>v[i].x>>v[i].y;
	}	
	int maxn=max(a,b);
	int k=0,l=0;
	long long sum=0;
	_for(i,0,maxn+1)
	{
		if(k==a-1||l==b-1)
		{
			
			break;
		}
		if(u[k].x>v[l].x)
		{
			l++; 
		}
		else if(u[k].x<v[l].x)
		{
			k++;	
		}
		else
		{
			//cout<<u[k].y<<" "<<v[l].y<<endl;
			sum+=u[k].y*v[l].y;
			k++;
			l++;
		}		
	}
    cout<<sum;
	//fclose(stdin); 
	return 0;
}




30分的,超时了



#include<iostream>

using namespace std;

 

int main()

{

       int
n,a,b,i,j;

       cin>>n>>a>>b;

       //创建动态二维数组 

       int
**a2=new int*[a];

       for(i=0;i<a;i++)

       {

              a2[i]=new
int[2];

        } 

       for(i=0;i<a;i++)

       {

              for(j=0;j<2;j++)

              {

                     cin>>a2[i][j];

              }

       }

       

       long
long sum=0;

       int
b1,b2; 

       while(b--)

       {

              cin>>b1>>b2;

              for(i=0;i<a;i++)

              {

                     if(a2[i][0]==b1)

                     {

                            sum+=a2[i][1]*b2;

                            break;

                     }

              }

       }

       //删除动态二维数组 

       for(i=0;i<2;i++)

       {

              delete[]
a2[i];

       }

       delete
[]a2;

       cout<<sum;

       return
0;

 }

201903-2 二十四点 ??

https://www.cnblogs.com/huangming-zzz/p/11370052.html

#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)

int main()
{
	//freopen("in.txt","r",stdin);
	int n;
	cin>>n;
	string s;
	queue<int> num;
	queue<char> op;
	
	//算式后面多个+0,因为i会超出来 
	while(n--)
	{
		cin>>s;
		s.push_back('+');
		for(int i=1;i<s.size();i+=2)
		{
			int t=s[i-1]-'0';
			for(;i<s.size() && s[i]=='x' || s[i]=='/';i+=2)
			{
				t=(s[i]=='x') ? t*(s[i+1]-'0') : t/(s[i+1]-'0');
			}
			num.push(t);
			op.push(s[i]);
		}
		num.push(0);
		int ans=num.front();
		num.pop();
		while(!op.empty())
		{
			char opr=op.front();
			op.pop();
			ans=(opr=='+') ? ans+num.front() : ans-num.front();
			num.pop(); 
		}
		cout<<(ans==24? "Yes":"No")<<endl; 
	}
	
	
    //fclose(stdin);
	return 0;
 } 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值