首页 > 编程语言 >2023广东省大学生程序设计竞赛

2023广东省大学生程序设计竞赛

时间:2024-05-28 09:31:22浏览次数:18  
标签:竞赛 int cin -- while 2023 程序设计 include define

A题:签到提直接模拟就行了

//A
#include<iostream>
#include<algorithm>
#include<map>
#define int long long
using namespace std;
int t,a,b,c,d,sum=0;
signed main()
{
	cin>>t;
	while(t--)
	{
		sum=0;
		map<int,int>ma;
		cin>>a>>d;
		for(int i=1;i<=d;i++)
		{
			cin>>c;
			ma[c]=1;
		}
		cin>>b;
		for(int i=a;i<=b;i++)
		{
			if(ma[i]!=1)
			sum++;
		}
		cout<<sum<<endl;
	}
	return 0;
}

C题

思路:这个题就是考了一个贪心和双指针,就是每次到最便宜的商店去买,到最贵的商店卖,

代码如下 

//C
#include<iostream>
#include<algorithm>
#include<map>
#define IOS ios::sync_with_stdio(0),cout.tie(0),cin.tie(0);
#define int long long
using namespace std;
struct asd{
	int a, b;
}p[100010];
bool cmp(asd x,asd y)
{
	return x.a<y.a;
}
signed main()
{
	IOS
	int t,a,b,n;
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=0;i<n;i++)
		{
			cin>>p[i].a>>p[i].b;
		}
		int sum=0;
		sort(p,p+n,cmp);
		for(int i=0,j=n-1;i<j;)
		{
			if(p[i].a==p[j].a)break;
			else
			{
				if(p[i].b==p[j].b)
				{
					sum+=(p[j].a-p[i].a)*p[j].b;
					i++,j--;
				}
				else if(p[i].b>p[j].b)
				{
					sum+=(p[j].a-p[i].a)*p[j].b;
					p[i].b-=p[j].b;
					j--;
				}
				else
				{
					sum+=(p[j].a-p[i].a)*p[i].b;
					p[j].b-=p[i].b;
					i++;
				}
			}
		}
		cout<<sum<<endl;
	}
	return 0;
}

D题

思路:这个题其实也是贪心,就是按满意度差值排序,按后用前缀和维护一下,最后遍历一遍就出来了

代码如下 

//D
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int t,n,m,k,s[10][10],mi=1e9,cnt;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
void dfs()
{
	mi=min(cnt,mi);
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(s[i][j])
			{
				for(int l=0;l<4;l++)
				{
					int a=i+dx[l],b=j+dy[l];
					if(s[a][b])
					{
						int c=a+dx[l],d=b+dy[l];
					if(c>0&&d>0&&c<=m&&d<=n&&s[c][d]==0)
					{
						s[i][j]=0;
					s[a][b]=0;
					s[c][d]=1;
					cnt--;
					dfs();
					s[i][j]=1;
					s[a][b]=1;
					s[c][d]=0;
					cnt++;
					}
					}
				}
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>t;
	memset(s,0,sizeof s);
	while(t--)
	{
		cin>>m>>n>>k;
		mi=k;
		cnt=k;
		for(int i=1;i<=k;i++)
		{
			int a,b;
			cin>>a>>b;
			s[a][b]=1;
		}
		dfs();
		cout<<mi<<'\n';
	}
	return 0;
 } 

 K题

直接暴力DFS就行了

//K
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); 
using namespace std;
int s[10][10];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int ans,n,m;
void dfs(int num)
{
	ans=min(ans,num);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(s[i][j]==0)	continue;
			for(int k=0;k<4;k++)
			{
				int a=i+dx[k],b=j+dy[k];
				int c=a+dx[k],d=b+dy[k];
				if(s[a][b]==0||s[c][d]==1)	continue;
				if(c>=1&&c<=n&&d>=1&&d<=m)
				{
					s[i][j]=0,s[a][b]=0,s[c][d]=1;
					num--;
					dfs(num);
					num++;
					s[i][j]=1,s[a][b]=1,s[c][d]=0;
				}
			}
		}
	}
}
int main()
{
	IOS
	int t;cin>>t;
	while(t--)
	{
		int k;
		cin>>n>>m>>k;
		memset(s,0,sizeof(s));
		int x,y;
		ans=k;
		while(k--)
		{
			cin>>x>>y;
			s[x][y]=1;
		}
		dfs(ans);
		cout<<ans<<'\n'; 
	}
	return 0;
}

I题

思路:可以用二分答案解决。关键在于 check 函数,它可以这么写:题目中说每次只能向右或向下走,所以每一步的横坐标肯定都大于等于上一步,可以使用一个变量y记录,因此当某个点小于 check 函数传入的答案并且当前点的横坐标要比前一个小时,就说明这个答案不对,否则当前点的横坐标大于等于前一个时,更新 y

代码如下

#include<iostream>
#include<algorithm>
#include<map>
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl '\n'
using namespace std;
map<pair<int,int>,int>m;
int t,a,b;
bool asd(int x)
{
	int y=0;
	for(int i=1;i<=a;i++)
	{
		for(int j=1;j<=b;j++)
		{
			if(m[{i,j}]<x)
			{
				if(y>j)
				return 0;
			    y=max(y,j);
			}
		}
	}
	return 1;
}
signed main()
{
	IOS
	cin>>t;
	while(t--)
	{
		cin>>a>>b;
		for(int i=1;i<=a;i++)
		{
			for(int j=1;j<=b;j++)
			{
				cin>>m[{i,j}];
			}
		}
		int l=0,r=a*b;
		while(l<r)
		{
			int mid=(l+r+1)/2;
			if(asd(mid))
			l=mid;
			else
			r=mid-1;
		}
		cout<<l<<endl;
	}
	return 0;
}

标签:竞赛,int,cin,--,while,2023,程序设计,include,define
From: https://blog.csdn.net/2302_81590667/article/details/139247641

相关文章

  • 2024年西安交通大学程序设计校赛
    2024年西安交通大学程序设计校赛因为本人比较菜,所以只补赛时(校内训练赛)写了但没写出的题,完整题解可以参考洛谷的巨巨~:https://www.luogu.com.cn/article/vzlnmec8K.崩坏:星穹铁道关键题面:Corycle想成为星穹铁道高手,为此他需要对自己的配队了如指掌。由于角色有多种职业,同时......
  • 【专题】2023年中国主要城市充电基础设施监测报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33600原文出处:拓端数据部落公众号2022年,中国城市充电基础设施继续快速增长,总量从2021年的261.7万台增加到2022年的521万台,同比增幅超过99%。其中,私人充电桩的增加数量达到194.2万台,是公共充电桩增加数量的3倍,私人充电桩占比也从2021年的56.2%增加......
  • 郑州大学2023-2024第二学期高级语言程序设计-实验6
    郑州大学2023-2024第二学期高级语言程序设计-实验61抗疫凯旋2求10个点到原点的距离和3最小公倍数4变量有多少字节?5是否是斐波那契家族的一员?6递归实现逆序输出整数7河南的抗疫英雄8出生年9汉诺塔问题10素因子分解1抗疫凯旋这道题已经给了提示如何在while......
  • 【2023全网最全最火】Selenium WebDriver教程(建议收藏)
    在本教程中,我将向您介绍SeleniumWebdriver,它是当今市场上使用最广泛的自动化测试框架。它是开源的,可与所有著名的编程语言(如Java、Python、C#、Ruby、Perl等)一起使用,以实现浏览器活动的自动化。通过本文,我将告诉您开始使用SeleniumWebDriver测试Web应用程序所需了解的所有信......
  • 实验六 Java流式编程与网络程序设计
    第1关字节输入/输出流实现数据的保存和读取packagestep1;importjava.io.*;importjava.util.*;publicclassSortArray{ publicstaticvoidmain(String[]args){/**********Begin**********/ //创建保存整型数据的数组(数组大小10)int[]da......
  • Modern Pascal is Still in the Race (Modern Pascal 仍在竞赛中)
    ModernPascal仍在竞赛中作者:ArnaudBouchez,2022年11月26日。永久链接Pascal编程博客集合跨平台数据库DelphiFPC垃圾回收器泛型Go优秀实践元编程mORMotmORMot2性能RTTIRust最近在Lazarus/FPC论坛上的一项民意调查突显了一个事实:Pascal程序员比其他大多数......
  • EBU4201 Introductory Java Programming 2023/24Mini Project(⼉童练习乘法表 下个文
    Task1[25marks]SuperHeroTTisasimpleGraphicalUserInterface(GUI)applicationforchildrenwheretheycanpractisetheirtimestables(seeFigure1).Whenlaunched,yourappshouldlooklikeFigure1-FirstlaunchofSuperHeroTT.Thedrop-downbo......
  • Java实验六: Java流式编程与网络程序设计(头歌)
    一、字节输入/输出流实现数据的保存和读取packagestep1;importjava.io.*;importjava.util.*;publicclassSortArray{publicstaticvoidmain(String[]args){/**********Begin**********///创建保存整型数据的数组(数组大小10)......
  • Java语言程序设计1 第二章:变量、数据类型、运算符、表达式
    一、变量1.概念:        计算机中的一块内存空间,存储数据的基本单元2.变量的组成部分:        数据类型、变量名、数据3.语法:        (1)先声明,再赋值:       ·数据类型变量名;//声明                变量......
  • FSCTF2023-WP
    FSCTF2023-WP前言去年10月份办的联合竞赛,题目相对简单,量大管饱,本人出了一道WEB和若干MiscCyptoRSA11、题目信息提交格式:FSCTF{你所解出的内容}p=1458769258361q=4556983871563e=17求d2、解题方法Exp如下:点击查看代码fromgmpy2import*p=1458769258361q=45569......