HUT23级9.4训练赛

​​​​​​​​​​​​​A - 招新传统

补题检测题,lhz学长场那道神君的换皮版本,二分查找板题

lhz题解传送门:HUT23级训练赛_Unlimitedz的博客-CSDN博客

B - clm学长的宝可梦之旅

暴力,连续相同的x就计数,不连续就操作删除

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<stack>
#include<queue>
#include<map>
#include<numeric>
#include<vector>
#include<set>
#include<list>
#include<iomanip>
#include<ctime>

#define pb push_back
#define fi first
#define se second
#define lowbit(x) (x & (-x))

using namespace std;

typedef long long ll;
typedef pair<int, int> PII;
const int N = 2e5 + 19;

int main()
{
	int n; cin >> n;

	string s; cin >> s;
	int x = 0, cnt = 0;
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'x') {
			x++;
		}
		else {
			cnt += max(0, x - 2);
			x = 0;
		}
	}
	cnt += max(0, x - 2);
	cout << cnt;
	return 0;
}

C - lrb学长想去海边玩

简单搜索题,dfs所有湖的深度开全局变量ans,dfs完一个湖更新一次ans

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
#include<string.h>
#include<set>
#include<unordered_map>
#include<numeric>//partial_sum
 
using namespace std;
 
#define int long long
#define endl "\n" 
#define lowbit(x) (x&(-x))//x>>i&1;?X???iλ????????????? 
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb() emplace_back()
const double pai=acos(-1.0);// pai
const int mod=1000000007;
typedef pair<int,int>PII;
int poow(int a,int b,int p){int	sum=1;while(b){if(b&1) sum=sum*a%p;b/=2;a=a*a%p;}return sum%p;}//????????????????int
int qpow(int a,int b){int ans =1;while(b){if(b&1)ans=ans*a%mod;b>>=1;a=a*a%mod;}return ans;}
int ny(int a) {return qpow(a,mod-2);}//b[y]/b[x-1]->b[y]*ny(x-1)??????????????
int a[1005][1005],b[1005][1005],cnt=0;
void dfs(int x,int y){
	b[x][y]=0;
	cnt+=a[x][y];
	if(b[x+1][y])
	dfs(x+1,y);
	if(b[x-1][y])
	dfs(x-1,y);
	if(b[x][y-1])
	dfs(x,y-1);
	if(b[x][y+1])
	dfs(x,y+1);
}
signed main(void){
	ios;
	int t;
	cin>>t;
	while(t--){
		int n,m;
		cin>>n>>m;
		for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)b[i][j]=0;
		//memset(b,0,sizeof(b));
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
				if(a[i][j]==0){
					b[i][j]=0;
				}
				else{
					b[i][j]=1;
				}
			}
		}
		int ans=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cnt=0;
				if(b[i][j])dfs(i,j);
				ans=max(ans,cnt);
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

D - lrb学长的苦恼

遍历给出的字符串s每个位置,并和母串相同位置比较,不同答案就++

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
#include<string.h>
#include<set>
#include<unordered_map>
#include<numeric>//partial_sum
 
using namespace std;
 
#define int long long
#define endl "\n" 
#define lowbit(x) (x&(-x))//x>>i&1;ȡX�ĵ�iλ�Ķ���������ʲô 
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb() emplace_back()
const double pai=acos(-1.0);// pai
const int mod=1000000007;
typedef pair<int,int>PII;
int poow(int a,int b,int p){int	sum=1;while(b){if(b&1) sum=sum*a%p;b/=2;a=a*a%p;}return sum%p;}//�����ݷ�ָֹ����ը��int
int qpow(int a,int b){int ans =1;while(b){if(b&1)ans=ans*a%mod;b>>=1;a=a*a%mod;}return ans;}
int ny(int a) {return qpow(a,mod-2);}//b[y]/b[x-1]->b[y]*ny(x-1)��������ֱ��ȡ��
 
signed main(void){
	ios;
	int t;
	cin>>t;
	string a="codeforces";
	while(t--){
		string temp;
		cin>>temp;
		int cnt=0;
		for(int i=0;i<a.size();i++){
			if(a[i]!=temp[i])cnt++;
		}
		cout<<cnt<<endl;
	}
	return 0;
}

E - lrb学长想考你思维

思考哪些俩位质数是肯定会出现的,发现“17”“71”或者“19”“91”或者“13”“31”,都符合条件,根据1和另一个数字的出现顺序来输出答案

#include<bits/stdc++.h>
using namespace std;
 
#define int long long
#define endl "\n"  
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define all(x) x.begin(),x.end()
 
void solve(){
	string a;
	cin>>a;
	for(int i=0;i<a.size();i++){
		if(a[i]=='1'){
			cout<<"17"<<endl;
			return;
		}
		else if(a[i]=='7'){
			cout<<"71"<<endl;
			return;
		}
	}
}
signed main(void){
	ios;
	int t=1;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
}

F - lrb学长想考你构造

 本场防ak题,利用前缀和进行构造,感兴趣同学私聊lrb学长

#include<bits/stdc++.h>
using namespace std;
 
#define int long long
#define endl "\n"  
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define all(x) x.begin(),x.end()
typedef pair<int,int>PII;
int maz,mxb,mif,mixb;
int n;
vector<int>a(30);
 
void solve(){
	cin>>n;
	maz=mxb=mif=mixb=0;
 
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]>0){
		
			if(a[i]==max(a[i],maz)){
				mxb=i;
				maz=a[i];
			}
		}
		if(a[i]<0){
			if(a[i]==min(a[i],maz)){
				mixb=i;
				mif=a[i];
			}
		}
	}
	if(!maz&&!mif){
		cout<<0<<endl;
	}
	else if(maz&&!mif){
		cout<<n-1<<endl;
		for(int i=2;i<=n;i++){
			cout<<i<<" "<<i-1<<endl;
		}
	}
	else if(!maz&&mif){
		cout<<n-1<<endl;
		for(int i=n-1;i>=1;i--){
			cout<<i<<" "<<i+1<<endl;
		}
	}
	else{
		cout<<5+(n-1)+(n-1)<<endl;
		for(int i=1;i<=5;i++)cout<<mxb<<" "<<mxb<<endl;
			for(int i=1;i<=n;i++){
			if(i!=mxb)cout<<i<<" "<<mxb<<endl;
		}
		for(int i=2;i<=n;i++){
			cout<<i<<" "<<i-1<<endl;
		}
	}
}
signed main(void){
	ios;
	int t=1;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
}

G - lrb学长的高数题

 纯正a+b,考察语法基本功

#include<bits/stdc++.h>
using namespace std;
int main(void){
	int t;
	cin>>t;
	while(t--){
		long long a,b;
		scanf("%lld+%lld",&a,&b);
		long long ans=a+b;
		cout<<ans<<endl;
	}
	return 0;
}

H - lrb学长的石子游戏

非纯正a+b,简单博弈题,将n设置成a+b则后手必胜

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
#include<string.h>
#include<set>
#include<unordered_map>
#include<stack>
#include<functional> //priority_queue<int>q;
#include<numeric>
 
using namespace std;
 
#define int long long
#define endl "\n" 
#define lowbit(x) (x&(-x))//x>>i&1;ȡX�ĵ�iλ�Ķ���������ʲô 
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
 
const double pai=acos(-1.0);// pai
const int mod=1000000007;
typedef pair<int,int>PII;
int poow(int a,int b,int p){int	sum=1;while(b){if(b&1) sum=sum*a%p;b/=2;a=a*a%p;}return sum%p;}//�����ݷ�ָֹ����ը��int
int qpow(int a,int b){int ans =1;while(b){if(b&1)ans=ans*a%mod;b>>=1;a=a*a%mod;}return ans;}
int ny(int a) {return qpow(a,mod-2);}//b[y]/b[x-1]->b[y]*ny(x-1)��������ֱ��ȡ��
int gcd(int a,int b) {return b>0 ? gcd(b,a%b):a;}
int lcm(int a,int b){return (a*b)/gcd(a,b);}
void solve(){
	int a,b;
	cin>>a>>b;
	cout<<a+b<<endl;
}
signed main(void){
	ios;
	int t=1;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
}

I - lrb学长的数据结构队列

本场唯一诈骗题,但应该骗不到人(,输出三人中身高最中间的即可

#include<bits/stdc++.h>
using namespace std;
int main(void){
	int t;
	cin>>t;
	while(t--){
		int a=0,b=0,c=0,m=0,m1=0;
		cin>>a>>b>>c;
		m=max(a,b);
		m=max(m,c);
		m1=min(a,b);
		m1=min(m1,c);
		int ans=a+b+c-m-m1;
		cout<<ans<<endl;
	}
	return 0;
}

J - 有强迫症的秋奕

秋奕学长提供的细节题,特判不能镜像的单个字母即可,很简单但是比较考验眼力,一开始秋奕学长说这道题lrb学长不可能一发就过,lrb学长很不屑,于是...


被一片wa声打醒的lrb学长想告诉你写代码无论一道题多么简单确实都应该严谨一点,细心一点,以下是qiuyi学长的代码

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define endl "\n"
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x)   fixed<<setprecision(x)// c++ 保留小数
#define int long long
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
const int N=1000010,M=1010,F=2*N,INF=0x3f3f3f3f,pp=13331,mod=1e9+7;
const double pai=acos(-1.0);// pai
int t,n,m;

bool check(char x,char y){
	if(x>y) swap(x,y);
	if(x=='A' and y=='A') return true;
	if(x=='b' and y=='d') return true;
	if(x=='H' and y=='H') return true;
	if(x=='I' and y=='I') return true;
	if(x=='M' and y=='M') return true;
	if(x=='O' and y=='O') return true;
	if(x=='o' and y=='o') return true;
	if(x=='p' and y=='q') return true;
	if(x=='T' and y=='T') return true;
	if(x=='U' and y=='U') return true;
	if(x=='V' and y=='V') return true;
	if(x=='v' and y=='v') return true;
	if(x=='W' and y=='W') return true;
	if(x=='w' and y=='w') return true;
	if(x=='X' and y=='X') return true;
	if(x=='x' and y=='x') return true;
	if(x=='Y' and y=='Y') return true;
	return false;
}
void solve()
{
    string s; cin>>s;
    n=s.size(); s=' '+s;
    bool ok=true;
    for(int i=1,j=n;i<=j;i++,j--){
    	if(!check(s[i],s[j])) ok=false;
    }
    cout<<(ok ? "TAK" : "NIE")<<endl;
    return ;
}

signed main ()
{
    ios
    solve();
}

 然后qiuyi发现wyf学长能几乎一发过,并觉得他的码的很精短,于是贴出来告诉大家要养成好的代码习惯来减少码量

#include<bits/stdc++.h>

using namespace std;

#define endl '\n'
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
const int base=13331;
const int INF=0x3f3f3f3f;

char eq[100]={'A','H','I','M','O','T','U','V','W','X','Y','o','v','w','x'};
char k1[100]={'b','p'};
char k2[100]={'d','q'};

bool check(char a,char b){
    if(a>b)swap(a,b);
    if(a==b)for(int i=0;i<20;i++)if(a==eq[i])return true;
    else for(int i=0;i<2;i++)if(a==k1[i] and b==k2[i])return true;
    return false;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    string s;cin>>s;
    for(int i=0,j=s.size()-1;i<=j;i++,j--){
        if(!check(s[i],s[j])){
            cout<<"NIE"<<endl;
            return 0;
        }
    }
    cout<<"TAK"<<endl;
    return 0;
}

K - 找乐子的秋奕

 暴力存1~n所有立方数和平方数,会c++容器很好写,不会就要用到unique等函数

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define endl "\n"
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x)   fixed<<setprecision(x)// c++ 保留小数
typedef long long LL;
typedef pair<int, int> PII;
const int N=1e6+10,M=1010,F=2*N,INF=0x3f3f3f3f;
const double pai=acos(-1.0);// pai
map<int,int> q; 
LL t,n,m;
set<LL> p;
void solve()
{
    cin>>n;
    for(LL i=1;i*i<=n;i++) p.insert(i*i);
    for(LL i=1;i*i*i<=n;i++) p.insert(i*i*i);
    cout<<p.size()<<endl;
    p.clear();
        return ;
}

int main ()
{
    ios// 不能有printf puts scanf
    cin>>t;
    while(t--)
    solve();
   
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值