首页 > 编程语言 >2024牛客寒假算法基础集训营3

2024牛客寒假算法基础集训营3

时间:2024-02-24 16:22:25浏览次数:25  
标签:std int cin long 2024 牛客 version 集训营 cmp

2024牛客寒假算法基础集训营3

A 智乃与瞩目狸猫、幸运水母、月宫龙虾

题意

给出若干组字符串,判断无视大小写,判断首字母是否相同

思路

如果首字母相同,则直接用 \(==\) 比较即可,如果首字母只有大小写的区别,则ASCII码值相差 \(32\)

代码

/*******************************
| Author:  AlwaysBeShine
| Problem: 智乃与瞩目狸猫、幸运水母、月宫龙虾
| Contest: NowCoder
| URL:     https://ac.nowcoder.com/acm/contest/67743/A
| When:    2024-02-07 13:00:42
| 
| Memory:  524288 MB
| Time:    2000 ms
*******************************/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

void solve(){

    string s,t;
    cin >> s >> t;
    if(s[0] == t[0] ||abs((int)(s[0]-t[0])) == 32){

    	cout << "Yes" << endl;

    }else{

    	cout << "No" << endl;

    }


}

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int T;
    cin >> T;
    while(T--){

       solve();

    }

    return 0;
}

L 智乃的36倍数(easy version)

题意

定义了一种运算\(f\),它表示将两个正整数按照字面值从左到右拼接。
例如\(f(1,1)=11\),\(f(114,514)=114514\)。
一个大小为 \(n\) 的正整数数组 \(a\),第\(i\)个元素为\(a_{i}\),现在他从中想选出两个正整数进行前后拼接,使得它们拼接后是一个\(36\)的倍数,问智乃有多少种可行的方案。

思路

简单版范围足以可以暴力通过

设 有 \(a_i\) 和 \(a_j\) 两元素,分别为 \(x\) 和 \(y\) 位数,则将 \(f(a_i,a_j) = a_i * 10^y + a_j\),遍历所有可能判断是否是 36 的倍数即可。

代码

/*******************************
| Author:  AlwaysBeShine
| Problem: 智乃的36倍数(easy version)
| Contest: NowCoder
| URL:     https://ac.nowcoder.com/acm/contest/67743/L
| When:    2024-02-07 13:04:54
| 
| Memory:  524288 MB
| Time:    2000 ms
*******************************/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
			
int main(){
			
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
			
	int n;
	cin >> n;
	std::vector<int> a(n);
	for(int i = 0; i < n;i++){

		cin >> a[i];

	}
	int cnt = 0;
	for(int i = 0;i < n;i++){

		for(int j = 0;j < n;j++){
			int temp = a[j];
			int num = 0;
			while(temp){

				num++;
				temp /= 10;

			}

			//cout << a[j] + (int)pow(10,num)*a[i] << endl;

			if(	(a[j] + (int)pow(10,num)*a[i]) % 36 == 0 ){

				cnt++;

			}

		}

	}

	cout << cnt << endl;
			
	return 0;
}

D chino's bubble sort and maximum subarray sum(easy version)

题意

简单版

从一个数组\(a\)中取出一段连续的非空数组区间\([l,r]\),最大化数组区间的和\(\sum_{i=l}^{r}a_{i}\)。

有一个长度大小为\(N\)的数组,数组中元素的值有正有负。她想要先进行恰好 \(K\) 次相邻元素的交换操作,再求整个数组的最大子段和。她想要让最后求出的最大子段和尽可能的大,算出最终可能的最大子段和有多大。

思路

简单版的 \(K\) 不是 \(1\) 就是 \(0\)

当 \(K = 0\) 时,直接求一遍最大字段和即可。

当 \(K = 1\) 时,数据范围足以遍历每种交换可能,分别求一次最大字段和,求最大值

代码

/*******************************
| Author:  AlwaysBeShine
| Problem: chino's bubble sort and maximum subarray sum(easy version)
| Contest: NowCoder
| URL:     https://ac.nowcoder.com/acm/contest/67743/D
| When:    2024-02-07 13:36:41
| 
| Memory:  1048576 MB
| Time:    2000 ms
*******************************/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
			
int main(){
			
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
			
	int n,k;
	cin >> n >> k;
	std::vector<ll> a(n+1,0);
	

	for(int i = 1;i <= n;i++){

		cin >> a[i];
	
	}

	ll m = -2000000000;

	if(k == 1){

		for(int i = 1;i < n;i++){
			vector<ll>b;
			b = a;
			vector<ll>s(n+2,0);
	
			std::swap(b[i],b[i+1]);
	
			// for(int k = 1;k <= n;k++){

			// 	cout << b[k] << " ";

			// }

			// cout << endl;

			for(int j = 1;j <= n;j++){
	
				s[j] = s[j-1] + b[j];
				
			}

			for(int j = 1;j <=n;j++){

				for(int k = 0;k < j;k++){

					m = max(m,s[j]-s[k]);

				}

			}

		}

	}else{

		vector<ll>s(n+2,0);
		for(int j = 1;j <= n;j++){

			s[j] = s[j-1] + a[j];
			
		}

		for(int j = 1;j <= n;j++){

			for(int k = 0;k < j;k++){

				m = max(m,s[j]-s[k]);

			}

		}

	}

	cout << m << endl;

	return 0;
}

G 智乃的比较函数(easy version)

题意

在 c++ 标准库中,存在一个叫做 std::sort 的函数,使用 sort 时需要定义一个比较函数\(cmp(x,y)\) 他表示比较在排序的过程中\(x\)的顺序是否严格小于\(y\)的顺序

如果\(x\)的顺序严格小于 \(y\) 的顺序,则\(cmp(x,y)=1\),反之\(cmp(x,y)=0\),在\(x\)和\(y\)的值相等时令\(cmp(x,y)=1\) 。

给出若干组的 \(2\) 个数 \(a,b\) 和它们之间的约束关系 \(cmp(a,b)\) ,判断是否出现冲突

思路

当 $cmp(x,y) = 0 $ 时, $ x \ge y$

当 $cmp(x,y) = 1 $ 时,$ x \lt y $

判断是否出现冲突的逻辑如下:

当 \(cmp(x,y) == cmp(y,x)\) 时,如果 \(cmp(x,y) = 1\) 或 \(cmp(y,x) = 1\) 时,发生冲突

当 读入数据与已存数据值不同 时,发生冲突。

代码

/*******************************
| Author:  AlwaysBeShine
| Problem: 智乃的比较函数(easy version)
| Contest: NowCoder
| URL:     https://ac.nowcoder.com/acm/contest/67743/G
| When:    2024-02-07 15:51:26
| 
| Memory:  524288 MB
| Time:    2000 ms
*******************************/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

void solve(){

    int n;
    cin >> n;

    int gx[5][5];

    int x,y,z;

    for(int i = 1;i <= 3;i++){

    	for(int j = 1;j <= 3;j++){

    		gx[i][j] = -1;

    	}

    }

    bool ck = true;

    for(int i = 0;i < n;i++){

    	cin >> x >> y >> z;

    	if(gx[x][y] == -1){

    		gx[x][y] = z;

    	}


    	if(gx[x][y] != z || gx[y][x] + z == 2){

    			ck = false;

    	}

    }

    if(ck){

    	cout << "Yes" << endl;

    }else{

    	cout << "No" << endl;

    }



}

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int T;
    cin >> T;
    while(T--){

       solve();

    }

    return 0;
}

H 智乃的比较函数(hard version)

题意

相较简单版,涉及的元素达到 \(3\) 个

思路

但是所有的可能性,最多也只有 \(3^3\) 种,预处理打表一下,再判断是否属于某一种情况即可。

代码

/*******************************
| Author:  AlwaysBeShine
| Problem: 智乃的比较函数(normal version)
| Contest: NowCoder
| URL:     https://ac.nowcoder.com/acm/contest/67743/H
| When:    2024-02-07 16:24:03
| 
| Memory:  524288 MB
| Time:    2000 ms
*******************************/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int cmp(int a,int b){

	if(a < b){

		return 1;

	}else{

		return 0;

	}

}

void solve(){

    int n;
    cin >> n;
    bool ck = true;
    int x,y,z;
    set<pair<int,int>>st;
    map<pair<int,int>,int>mp;
    int gx[4][4];
    for(int i = 1;i <= 3;i++){

    	for(int j = 1;j <= 3;j++){

    		gx[i][j] = 0;

    	}

    }
    for(int i = 0;i < n;i++){

    	cin >> x >> y >> z;
    	st.insert({x,y});
    	if(mp.count({x,y}) == 0){

    		mp[{x,y}] = z;

    	}else if((mp.count({x,y}) == 1 && mp[{x,y}] != z) || (mp.count({y,x}) == 1 && mp[{y,x}] + z == 2)){

    		ck = false;

    	}

    	if(x == y && z != 0)ck =false;
    }

    if(ck == false){

    	cout << "No" << endl;
    	return;

    }else{

    	for(int i = 1;i <= 3;i++){

			for(int j = 1;j <= 3;j++){
	
				for(int k = 1;k <= 3;k++){
					gx[1][1] = 0;
					gx[1][2] = cmp(i,j);
					gx[1][3] = cmp(i,k);
					gx[2][1] = cmp(j,i);
					gx[2][2] = 0;
					gx[2][3] = cmp(j,k);
					gx[3][1] = cmp(k,i);
					gx[3][2] = cmp(k,j);
					gx[3][3] = 0;

					int cnt = 0;
					for(auto& [a,b]:st){

						if(gx[a][b] == mp[{a,b}]){

							cnt++;

						}

					}

					if(cnt == st.size()){

						ck = true;
						cout << "Yes" << endl;
						return;
					}

					// cout << "cmp" << i << " " << j << " " << cmp(i,j) << endl;
					// cout << "cmp" << i << " " << k << " " << cmp(i,k) << endl;
					// cout << "cmp" << j << " " << i << " " << cmp(j,i) << endl;
					// cout << "cmp" << j << " " << k << " " << cmp(j,k) << endl;
					// cout << "cmp" << k << " " << i << " " << cmp(k,i) << endl;
					// cout << "cmp" << k << " " << j << " " << cmp(k,j) << endl;
					// cout << endl;
				}
	
			}

		}

		cout << "No" << endl;

    }
    

}

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int T;
    cin >> T;
    while(T--){

       solve();

    }

    return 0;
}

标签:std,int,cin,long,2024,牛客,version,集训营,cmp
From: https://www.cnblogs.com/AlwaysBeShine/p/18031205

相关文章

  • 2024/2/24
    要开学了ABC341A-Print341题意:输出n个10最后输出1#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){ intn; cin>>n; for(inti=0;i<n;i++){ cout<<"10"; } cout<<1<<......
  • 推出新款H7-TOOL 2024版,同时发布新版固件V2.25(2024-02-24)
     H7-TOOL2024版介绍1、开模定制外壳,取消了侧面的IO接口,汇集到一个主端口(2*17P排针)。2、显示屏升级为2.8寸(分辨率320*240)。3、两个按键升级为4个按键:上键、下键,OK确认键和C取消键。4、预留一个电源开关按键,目前功能为HOME(返回初始界面)。5、新增4-20mA电流采集功能。6、......
  • 南外集训 2024.2.23 T3
    Kubic素质如此,如何国家队?有一个初始为空的序列,对其进行\(q\)次操作(强制在线)。操作分为两种:\(1\;x\)表示在序列末尾插入一个\(x\)。\(2\;x\)表示询问当前序列中长度等于\(x\)的区间的价值之和\(\bmod998244353\)。定义一个区间的价值为中前\(m\)大的数的乘......
  • 寒假集训总结(2024/2/24)
    先说考试t1:一眼线段树,但是,我非得加那个特判,导致在特判里的return0忘改了,直接把0以后的答案吃了,挂了75分(吐槽:大样例里为什么一个0也没有,服啦)。t2:一眼树上背包,第二眼1e9的数据范围,背包开不了一点。t3:没看出来是dp,打了个自己都不知道为啥的暴力,过了四个点,还不错。t4:这题真离谱,......
  • LOL通过召唤师名查战绩,突破战绩隐藏,2024-02-24有效
    importdatetimeimportrequestsasreqreq.packages.urllib3.disable_warnings()#执行下面步骤之前要先登录同区账号#需要查找的名字name='蓝火大魔王'#用管理员CMD执行wmicPROCESSWHEREname='LeagueClientUx.exe'GETcommandline#找到–remoting-auth-t......
  • 2024牛客寒假算法基础集训营6
    2024牛客寒假算法基础集训营6比赛链接打一半就收拾行李了,不想开学呜呜呜(应该是lzgg出的题)A.宇宙的终结思路数据不大才100,所以模拟完全可以过去Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()+1,x.end()std::vector<......
  • 20240223【省选】模拟
    挂30分,还有40分不好说。T2挂的10分应该是字符串常数大,以及那个求LCA珂以优化掉但我人傻没搞。T3的20分就是纯粹脑抽。以后少用stringT1结论题,想错了以为很简单,实际上也很简单,但是我菜。设\(f(x)\)为\(x\)的期望质量,打表使用大眼观察法猜不出这个性质:如果\(x\)为一些质数......
  • 2024牛客寒假算法基础集训营6
    A.宇宙的终结Code(伪代码):voidsolve(){intleft,right;cin>>left>>right;autocheck1=[&](intn){for(inti=2;i<=sqrt(n);i++){if(n%i==0){returnfalse;}......
  • 清除缓存解决viewBinding不生效没提示,+ 新手,android stdio,kotlin,viewBinding笔记,2024
    我的问题是缓存导致的,文件->清除缓存->清楚并重启头一次用,我也不知道为什么是缓存问题。官方文档链接:https://developer.android.com/topic/libraries/view-binding?hl=zh-cn官方博客链接:https://medium.com/androiddevelopers/use-view-binding-to-replace-findviewbyid-c......
  • 『周记』2024第六到八周杂记
    『周记』2024第六到八周杂记 总结这段时间的主旋律就是钩针……说好了控制又完全控制不住,新拥有了两件吊带,酒红色的耗时很久,小蝴蝶倒是晚上起针,第二天再过几小时就完成了。虽然很喜欢很有成就感,进步神速也很欣喜,伴随着看的是岚少的游戏实况,也很放松,可是这样纯放假的生活多过几......