链接
这是一个签到题,输入的城市的值排序,然后按他给的顺序输出就行了
#include #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< 这个题就是两个大数相乘,我么们可以找一下规律看下图
因为b的每一位都相同上图是第一个样例乘2得到的,可以看出中间的数值是一样的所以,就可以把这看成一种规律来写
#include using namespace std; typedef long long ll; const int N=2e6+10; void solve() { string a,b; cin>>a; cin>>b; //cout< cout<<0<=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< 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 if(i=b.length()) ans[i]-=c[i-b.length()]; } //for(int i=0;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< int t; cin>>t; while(t--) solve(); } 这个题目意思是个博弈题,但博弈是一点没考,他说谁赢输出谁的名字首拼大写,但题目上两个名字首拼相同,所以不管输入什么,都输出首拼就行
#include #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"< 这个题就是,给你几行信息每行有名字和信息,让名字相同的合并在一起,但如果一个人有两个信息,一个信息是另一个的后缀就不用保留后缀的那个信息了,如果信息相等就随便舍去一个,我的思路就是把信息都存在一个map嵌套set容器中,然后把相同人的信息存到一个set里面,让后用rfind函数去找是否有后缀,如果有就删除,反之就添加到set里
#include #define int long long #define endl '\n' #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; map>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 { vectorv; 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< cout< cout< 这个题目就是给你一个字符串让你求他有几个“chuan”字 串,我们可以每次截取5个字符判断是否与“chuan”
#include #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 string a=s.substr(i,5); if(b==a) sum++; } cout< 这个题就是给你n行m列的矩形,求(1,1)到(n,n)的行列式,如果给你(3,4)就把第四行全部补0,列不够也是如此
我的思路就是纯暴力,因为范围最大就是5,所以把1到5的行列式全列出来就行了
#include #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< cout< cout< cout< 这一次比赛中间的题都是大模拟,用stl容器比较多,而我stl用的不好导致模拟题没写出来,当时连两个容器一起怎么遍历都不知道,别说写了,赛后我要好好学一下容器,要不然只用数组对于一些大模拟题太吃亏了