欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 河南萌新联赛2024第(二)场:南阳理工学院

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

2024/10/24 6:30:34 来源:https://blog.csdn.net/2302_81590667/article/details/140681704  浏览:    关键词:河南萌新联赛2024第(二)场:南阳理工学院

文章目录

    • 链接
  • A. 国际旅行Ⅰ
    • 题意与思路
    • 代码
  • D.A*BBBB
    • 题意与思路
    • 代码
  • F.水灵灵的小学弟
    • 题意与思路
    • 代码
  • H.狼狼的备忘录
    • 题意与思路
    • 代码
  • I.重生之zbk要拿回属于他的一切
    • 题意与思路
    • 代码
  • J.这是签到
    • 题意与思路
    • 代码
    • 总结

链接

链接

A. 国际旅行Ⅰ

题意与思路

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

代码

#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()
{IOSint 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得到的,可以看出中间的数值是一样的所以,就可以把这看成一种规律来写

代码

#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.水灵灵的小学弟

题意与思路

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

代码

#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()
{IOSint T=1;cin>>T;while(T--){int a,b;cin>>a>>b;cout<<"DHY"<<endl;}return 0;
}

H.狼狼的备忘录

题意与思路

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

代码

#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()
{IOSint 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”

代码

#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()
{IOSint 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的行列式全列出来就行了

代码

#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()
{IOSint 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用的不好导致模拟题没写出来,当时连两个容器一起怎么遍历都不知道,别说写了,赛后我要好好学一下容器,要不然只用数组对于一些大模拟题太吃亏了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com