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;
}