2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)

这篇具有很好参考价值的文章主要介绍了2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[3][10];
int check()
{
	for(int i=1;i<=3;i++)
		if(a[0][i]!=a[1][i]) return a[0][i]>a[1][i];
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		a[x][y]++;
	}
	printf("%d %d %d\n",a[0][1],a[0][2],a[0][3]);
	printf("%d %d %d\n",a[1][1],a[1][2],a[1][3]);
	if(check()) puts("The first win!");
	else puts("The second win!");
	return 0; 
} 
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
string s[201];
map<string,string> s1,s2;
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		string x,y;
		cin>>x>>y;
		s1[x]=y;
	}
	for(auto a:s1)
		for(auto b:s1)
		{
			string c=a.first+b.first;
			string d=a.second+b.second;
			if(s2.find(c)==s2.end()) s2[c]=d;
			else s2[c]="D";
		}
	for(int i=1;i<=m;i++)
	{
		string x;
		cin>>x;
		if(s1.find(x)!=s1.end()) cout<<s1[x]<<endl;
		else
		{
			if(s2.find(x)==s2.end()) cout<<"D"<<endl;
			else cout<<s2[x]<<endl;
		}
	}
	return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
using namespace std; 
int num[10],a[20],b[20];
vector<int> p,v;
int ans1=0,ans2=0;
int levela;
int gcd(int a,int b)
{
	if(!b) return a;
	return gcd(b,a%b);
}
inline void pushin(int w[])
{
	v.clear();
	for(int i=1;i<=5;i++)
		v.push_back(w[i]);
	sort(v.begin(),v.end());
}
int check()
{
	
	for(int i=1;i<=6;i++)
		num[i]=0;
	for(int i=0;i<=4;i++)
		num[v[i]]++;
	for(int i=1;i<=6;i++)
		if(num[i]==5) return 1;
	for(int i=1;i<=6;i++)
		if(num[i]==4) return 2;
	bool flag1=0,flag2=0;
	for(int i=1;i<=6;i++)
	{
		if(num[i]==2) flag1=1;
		if(num[i]==3) flag2=1;
	}
	if(flag1&&flag2) return 3;
	if(v[0]==2&&v[1]==3&&v[2]==4&&v[3]==5&&v[4]==6) return 4;
	if(v[0]==1&&v[1]==2&&v[2]==3&&v[3]==4&&v[4]==5) return 5;
	if(flag2) return 6;
	flag1=0,flag2=0;
	for(int i=1;i<=6;i++)
	{
		if(num[i]==2)
		{
			if(!flag1) flag1=1;
			else flag2=1;
		}
	}
	if(flag1&&flag2) return 7;
	if(flag1) return 8;
	return 9;
}
void dfs(int now)
{
	if(now==p.size())
	{
		ans2++;
		pushin(b);
		if(levela>check()) ans1++;
		return;
	}
	for(int i=1;i<=6;i++)
	{
		b[p[now]]=i;
		dfs(now+1);
	}
}
inline void work()
{
	for(int i=1;i<=5;i++)
	{
		scanf("%d",&a[i]);
	}
	int p1=0,p2=0,p3=0;
	pushin(a);
	levela=check();
	if(levela==1)
	{
		puts("0 0 1");
		return;
	}
	for(int i=0;i<(1<<5);i++)
	{
		int cnt=0;
		p.clear();
		for(int j=1;j<=5;j++)
			if(i&(1<<(j-1))) cnt++,p.push_back(j);
		ans1=0,ans2=0;
		for(int j=1;j<=5;j++)
			b[j]=a[j];
		dfs(0);
		if(p1==0)
		{
			p1=cnt;
			p2=ans1,p3=ans2;
		}
		else
		{
			double s1=1.0*ans1/ans2;
			double s2=1.0*p2/p3;
			if(s1>s2) p1=cnt,p2=ans1,p3=ans2;
			if(s1==s2&&cnt<p1) p1=cnt,p2=ans1,p3=ans2;
		}
	}
	int t=gcd(p2,p3);
	printf("%d %d %d\n",p1,p2/t,p3/t);
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--) work();
	return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
using namespace std;
map<string,vector<string>> edge;
map<string,bool> v;
map<string,int> num;
map<string,string> pre;
vector<string> ss;
int n;
queue<string> dl;
int bfs(string st,string ed)
{
	while(!dl.empty()) dl.pop();
	num.clear();
	dl.push(st);
	while(!dl.empty())
	{
		string now=dl.front();
		dl.pop();
		if(now==ed) return num[ed];
		for(int i=0;i<edge[now].size();i++)
		{
			string p=edge[now][i];
			if(num.find(p)!=num.end()) continue;
			pre[p]=now;
			num[p]=num[now]+1;
			dl.push(p);
		}
	}
	return -1;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		string s1,s2,s3,s4;
		cin>>s1>>s2>>s3>>s4;
		edge[s1+" "+s2].push_back(s3+" "+s4);
		v[s1]=1,v[s3]=1;
	}
	string ans1="-1",ans2="-1";
	int minx=0x7fffffff;
	for(auto it:v)
	{
		string st=it.first+" 0";
		string ed=it.first+" 1";
		int d1=bfs(st,ed),d2=bfs(ed,st); 
		if(d1!=-1)
		{
			if(d1<minx) minx=d1,ans1=st,ans2=ed;
		}
		if(d2!=-1)
		{
			if(d2<minx) minx=d2,ans1=ed,ans2=st;
		}
	}
	bfs(ans1,ans2);
	string now=ans2;
	while(1)
	{
		ss.push_back(now);
		if(now==ans1) break;
		now=pre[now];
	}
	reverse(ss.begin(),ss.end());
	for(int i=0;i<ss.size();i++)
	{
		string p=ss[i];
		cout<<p<<" ";
		if(i!=0&&i!=ss.size()-1) cout<<p<<" ";
	}
	cout<<"= "<<ans1<<" "<<ans2<<endl;
	return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <cstring>
using namespace std;
const int maxm=1e5+100;
struct node{
	int f1,f2;
}a[maxm];
int r[maxm];
int dp[maxm][3];
void work()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&a[i].f1,&a[i].f2);
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&r[i]);
		dp[i][0]=dp[i][1]=dp[i][2]=1e6+100;
	}
	for(int i=1;i<=n;i++)
	{
		int pos1=1,pos2=1,pos3=1,pos4=1;
		int x=r[i];
		if(a[x].f1==1&&a[x].f2==0) pos1=0;
		if(a[x].f1==1&&a[x].f2==1) pos2=0;
		if(a[x].f1==0&&a[x].f2==0) pos3=0;
		if(a[x].f1==0&&a[x].f2==1) pos4=0;		
		dp[i][0]=dp[i-1][0]+pos1;
		dp[i][1]=min(dp[i-1][0],dp[i-1][1])+min(pos2,pos3);
		dp[i][2]=min(min(dp[i-1][0],dp[i-1][1]),dp[i-1][2])+pos4;
	}
	int ans=1e6+100;
	for(int i=0;i<=2;i++)
		ans=min(ans,dp[n][i]);
	printf("%d\n",ans); 
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--) work();
	return 0;
}

文章来源地址https://www.toymoban.com/news/detail-595434.html

到了这里,关于2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2022 RoboCom 世界机器人开发者大赛-本科组(国赛)

    RC-u1 智能红绿灯 题意:为绿灯时,点击按钮后15s后转为红色持续30s,为红灯时再点击按钮则延长15s并只能延长一次,其它操作无效。 题解:模拟题,需要注意的是按下按钮后15s转为红灯后的点亮时间是闭区间,如第1s按下,红灯显示区间为[16, 45],在这个区间再次点击按钮时

    2024年02月13日
    浏览(40)
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)

    1、不要浪费金币 哲哲最近在玩一个游戏,击杀怪物能获得金币 —— 这里记击杀第 i 个怪物获得的金币数量为 P i ​ 。 然而这个游戏允许拥有的金币数量是有上限的,当超过时,超过上限的部分就会被系统光明正大地吃掉,哲哲就拿不到了。 为了不浪费金币,哲哲决定,当

    2024年02月03日
    浏览(42)
  • 2021 RoboCom 世界机器人开发者大赛-本科组(复赛)

    官方题解 分数 20 7-1 冒险者分队 一个莫名其妙的思维 分数 25 7-2 拼题A打卡奖励 01背包的变形,在面临超时的情况下,明智的选择另一种作为限制 分数 25 7-3 快递装箱 大模拟,没拿到满分,就十六分,不想改了,累了 分数 30 7-4 塔防游戏 头一次写二位最短路

    2024年02月16日
    浏览(34)
  • 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)

    比赛介绍 比赛信息 比赛官网:https://www.robocom.com.cn/ 报名流程:https://www.robocom.com.cn/content.html?cid=386 工信部发文:https://www.robocom.com.cn/content.html?cid=367 中国教育学会清单:https://m.cahe.edu.cn/site/content/14825.html 编程赛道通知:https://www.robocom.com.cn/content.html?cid=369 赛制说明: CAIA数

    2024年02月16日
    浏览(36)
  • 2021 RoboCom 世界机器人开发者大赛-高职组(初赛)

    编程题得分:100  总分:100 目录 7-1 机器人打招呼 (5分) 输入格式: 输出格式: 输入样例: 输出样例: 7-2 人脸识别 (10分) 输入格式: 输出格式: 输入样例 1: 输出样例 1: 输入样例 2: 输出样例 2: 7-3 月份输出 (10分) 输入格式: 输出格式: 输入样例: 输出样例: 7-4 字

    2024年02月12日
    浏览(41)
  • 2022 RoboCom 世界机器人开发者大赛-本科组(国赛)

    1、智能红绿灯 为了最大化通行效率同时照顾老年人穿行马路,在某养老社区前,某科技公司设置了一个智能红绿灯。 这个红绿灯是这样设计的: 路的两旁设置了一个按钮,老年人希望通行马路时会按下按钮; 在没有人按按钮的时候,红绿灯一直为绿灯; 当红绿灯为绿灯时

    2024年02月17日
    浏览(35)
  • 2021 RoboCom 世界机器人开发者大赛-本科组(决赛)

    1.绿地围栏 思路 模拟题目,主要是记住最后要把原点加入到目标点当中,不然最后一个测试点过不了。 代码 2.队列插入 思路× 不太会,每理解大佬的思路,以后有机会补 代码× 3.账户安全预警 输入样例1 输出样例1 输入样例2 输出样例2 思路 嵌套map,用外层map的键表示邮箱,

    2024年02月16日
    浏览(33)
  • 2021 RoboCom 世界机器人开发者大赛-本科组(决赛)题解

    市政规划了一块绿地,需要采购一批围栏将绿地围起来。 为了简单起见,我们假设绿地的形状是个封闭连通的规则多边形,即所有边都是互相垂直或平行的,并且没有交叉的十字边。我们指定某条垂直边上的一个点为原点 (0,0),然后按照顺时针记录这个多边形的拐角顶点的位

    2024年02月14日
    浏览(31)
  • 【Java】2021 RoboCom 机器人开发者大赛-高职组(复赛)题解

    号称具有人工智能的机器人,至少应该能分辨出新人和老朋友,所以打招呼的时候应该能有所区别。本题就请你为这个人工智能机器人实现这个功能:当它遇到陌生人的时候,会说:“Hello X, how are you?”其中 X 是这个人的称呼;而当它再次遇到这个人的时候,会说:“Hi X!

    2024年02月12日
    浏览(30)
  • 【Java】2021 RoboCom 机器人开发者大赛-高职组(初赛)题解

    机器人小白要来 RoboCom 参赛了,在赛场中遇到人要打个招呼。请你帮它设置好打招呼的这句话:“ni ye lai can jia RoboCom a?”。 输入格式: 本题没有输入。 输出格式: 在一行中输出 ni ye lai can jia RoboCom a? 。 输入样例: 输出样例: Solution: 人脸识别是基于人的脸部特征信息进

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包