河南萌新联赛2024第(二)场:南阳理工学院

文章目录

链接

链接

A. 国际旅行Ⅰ

题意与思路

这是一个签到题,输入的城市的值排序,然后按他给的顺序输出就行了

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int a[1010];
signed main()
{
	IOS
	int T=1;
	//cin>>T;
	while(T--)
	{
		int n,m,q,c,b,d;
		cin>>n>>m>>q;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
		}
		sort(a+1,a+1+n);
		for(int i=1;i<=m;i++)
		cin>>c>>d;
		while(q--)
		{
			cin>>b;
			cout<<a[b]<<endl;
		}
	}
	return 0;
}

D.A*BBBB

题意与思路

这个题就是两个大数相乘,我么们可以找一下规律看下图

因为b的每一位都相同上图是第一个样例乘2得到的,可以看出中间的数值是一样的所以,就可以把这看成一种规律来写

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int N=2e6+10;

void solve()
{
    string a,b;
    cin>>a;
	cin>>b;
    //cout<<a<<' '<<b<<endl;
    if(a.length()==1&&a[0]-'0'==0)
    {
        cout<<0<<endl;
        return;
    }
    ll c[N],ans[N];
    memset(c,0,sizeof c);
    memset(ans,0,sizeof ans);
    ll lc=0;
    for(ll i=a.length()-1;i>=0;i--)
    {
        c[a.length()-i-1]=a[i]-'0';
        lc++;
		//d[a.length()-i-1]=a[i];
    }
    ll bb=b[0]-'0';
    if(bb==0)
    {
        cout<<0<<endl;
        return;
    }
    ll t=0;
    //c[strlen(c)]='0';
    for(ll i=0;i<lc;i++)
    {
        ll s=c[i]*bb+t;
        c[i]=s%10;
        t=s/10;
    }
    if(t!=0)
    {
        c[lc]=t;
        lc++;
    }
    for(ll i=1;i<lc;i++) c[i]+=c[i-1];
    ll cc=0,tt=0;
	for(ll i=0;i<lc+b.length();i++)
    {
    	if(i<lc) ans[i]=c[i];
    	else ans[i]=c[lc-1];
		if(i>=b.length()) ans[i]-=c[i-b.length()];	
	}
	//for(int i=0;i<lc+b.length();i++) cout<<ans[i]<<' ';
	//cout<<endl;
	//t=0;
    ll lans=0;
    t=0;
	for(ll i=0;i<lc+b.length();i++)
	{
        //if(t==0&&ans[i]==0) break;
		t+=ans[i];
		ans[i]=t%10;
		//ans[i+1]+=t/10;
        t/=10;
        lans++;
	}
    while(t!=0)
    {
        ans[lans++]=t%10;
        t/=10;
    }
	ll f=0;
	for(ll i=lans;i>=0;i--)
	{
		if(f==0&&ans[i]==0) continue;
		else if(f==0&&ans[i]!=0)
		{
			f=1;
		}
		cout<<ans[i];
	 } //cout<<ans[i]<<' ';
	cout<<endl;
}

int main()
{
    int t;
    cin>>t;
    while(t--) solve(); 
}

F.水灵灵的小学弟

题意与思路

这个题目意思是个博弈题,但博弈是一点没考,他说谁赢输出谁的名字首拼大写,但题目上两个名字首拼相同,所以不管输入什么,都输出首拼就行

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int a[1010];
signed main()
{
	IOS
	int T=1;
	cin>>T;
	while(T--)
	{
		int a,b;
		cin>>a>>b;
		cout<<"DHY"<<endl;
	}
	return 0;
}

H.狼狼的备忘录

题意与思路

这个题就是,给你几行信息每行有名字和信息,让名字相同的合并在一起,但如果一个人有两个信息,一个信息是另一个的后缀就不用保留后缀的那个信息了,如果信息相等就随便舍去一个,我的思路就是把信息都存在一个map嵌套set容器中,然后把相同人的信息存到一个set里面,让后用rfind函数去找是否有后缀,如果有就删除,反之就添加到set里

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
map<string,set<string>>ma;
signed main()
{
	IOS
	int T=1;
	cin>>T;
	while(T--)
	{
		string s,a;
		int n;
		cin>>s>>n;
		while(n--)
		{
			int f=0;
			cin>>a;
			if(ma[s].size()==0)
		       ma[s].insert(a);
		    else
		    {
		    	vector<string>v;
		    	for(auto i:ma[s])
		    	{
		    		if(i.size()>=a.size())
		    		{
		    			if(i.rfind(a)!=-1&&i.rfind(a)+a.size()==i.size())
						f=1;
					}
					else
					{
						if(a.rfind(i)!=-1&&a.rfind(i)+i.size()==a.size())
                            v.push_back(i);
					}
				}
				if(f==0)
				ma[s].insert(a);
				if(v.size())
				{
                    ma[s].insert(a);
					for(auto x:v)
					{
						ma[s].erase(x);
					}
				}
			}
        }
	}
	cout<<ma.size()<<endl;
	for(auto x:ma)
	{
		cout<<x.first<<" "<<ma[x.first].size()<<" ";
		for(auto y:ma[x.first])
		{
			cout<<y<<" ";
		}
		cout<<endl;
	}
	return 0;
}

I.重生之zbk要拿回属于他的一切

题意与思路

这个题目就是给你一个字符串让你求他有几个"chuan"字 串,我们可以每次截取5个字符判断是否与"chuan"

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

signed main()
{
	IOS
	int T=1;
	//cin>>T;
	while(T--)
	{
		string s,b="chuan";
		int n,sum=0;
		cin>>n>>s;
		for(int i=0;i<s.size();i++)
		{
			string a=s.substr(i,5);
			if(b==a)
			sum++;
		}
		cout<<sum<<endl;
	}
	return 0;
}

J.这是签到

题意与思路

这个题就是给你n行m列的矩形,求(1,1)到(n,n)的行列式,如果给你(3,4)就把第四行全部补0,列不够也是如此

我的思路就是纯暴力,因为范围最大就是5,所以把1到5的行列式全列出来就行了

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int a[10][10];
signed main()
{
	IOS
	int T=1;
	//cin>>T;
	while(T--)
	{
		int m,n,mi=1e9,t;
		cin>>m>>n;
		int k=max(m,n);
		for(int i=1;i<=m;i++)
		{
			for(int j=1;j<=n;j++)
			{
				cin>>a[i][j];
			}
		}
		mi=min(mi,a[1][1]);
		if(k==1)
		{
			cout<<mi<<endl;
			return 0;
		}
		mi=min(mi,a[1][1]*a[2][2]-a[1][2]*a[2][1]);
		if(k==2)
		{
			cout<<mi<<endl;
			return 0;
		}
		t=a[1][1]*a[2][2]*a[3][3]+
		a[1][2]*a[2][3]*a[3][1]+
		a[1][3]*a[2][1]*a[3][2]-
		a[1][3]*a[2][2]*a[3][1]-
		a[2][3]*a[3][2]*a[1][1]-
		a[3][3]*a[1][2]*a[2][1];
		mi=min(mi,t);
		if(k==3)
		{
			cout<<mi<<endl;
			return 0;
		}
		t=a[1][1]*a[2][2]*a[3][3]*a[4][4]+
		a[1][2]*a[2][3]*a[3][4]*a[4][1]+
		a[1][3]*a[2][4]*a[3][1]*a[4][2]+
		a[1][4]*a[2][1]*a[3][2]*a[4][3]-
		a[1][4]*a[2][3]*a[3][2]*a[4][1]-
		a[2][4]*a[3][3]*a[4][2]*a[1][1]-
		a[3][4]*a[4][3]*a[1][2]*a[2][1]-
		a[4][4]*a[1][3]*a[2][2]*a[3][1];
		mi=min(mi,t);
		if(k==4)
		{
			cout<<mi<<endl;
			return 0;
		}
		t=a[1][1]*a[2][2]*a[3][3]*a[4][4]*a[5][5]+
		a[1][2]*a[2][3]*a[3][4]*a[4][5]*a[5][1]+
		a[1][3]*a[2][4]*a[3][5]*a[4][1]*a[5][2]+
		a[1][4]*a[2][5]*a[3][1]*a[4][2]*a[5][3]+
		a[1][5]*a[2][1]*a[3][2]*a[4][3]*a[5][4]-
		a[1][5]*a[2][4]*a[3][3]*a[4][2]*a[5][1]-
		a[2][5]*a[3][4]*a[4][3]*a[5][2]*a[1][1]-
		a[3][5]*a[4][4]*a[5][3]*a[1][2]*a[2][1]-
		a[4][5]*a[5][4]*a[2][2]*a[1][3]*a[3][1]-
		a[1][4]*a[4][1]*a[2][3]*a[3][2]*a[5][5];
		mi=min(mi,t);
		cout<<mi<<endl;
	}
	return 0;
}

总结

这一次比赛中间的题都是大模拟,用stl容器比较多,而我stl用的不好导致模拟题没写出来,当时连两个容器一起怎么遍历都不知道,别说写了,赛后我要好好学一下容器,要不然只用数组对于一些大模拟题太吃亏了

相关推荐
黑果魏叔4 小时前
macOS Sequoia 正式版(24A335)黑苹果/Mac/虚拟机系统镜像
macos
tekin5 小时前
macos macport软件包管理工具 sudo port install xxx 安装的软件的路径 与 brew install xxx 软件安装路径总结
macos·brew·port·macport·port install·port软件包安装路径·brew软件包安装路径
Hellc0077 小时前
MacOS升级ruby版本
前端·macos·ruby
GEEKVIP14 小时前
Android 恢复挑战和解决方案:如何从 Android 设备恢复删除的文件
android·笔记·安全·macos·智能手机·电脑·笔记本电脑
逢生博客19 小时前
Mac 搭建仓颉语言开发环境(Cangjie SDK)
macos·华为·鸿蒙
Rverdoser1 天前
MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码
macos
Magnetic_h1 天前
【iOS】单例模式
笔记·学习·ui·ios·单例模式·objective-c
归辞...1 天前
「iOS」——单例模式
ios·单例模式·cocoa
GEEKVIP1 天前
如何在没有备份的情况下恢复 Mac 上丢失的数据
经验分享·笔记·安全·macos·电脑·笔记本电脑·改行学it
yanling20231 天前
黑神话悟空mac可以玩吗
macos·ios·crossove·crossove24