首页 > 其他分享 >102400118 林嘉祚 集训第一专题

102400118 林嘉祚 集训第一专题

时间:2025-01-23 11:32:47浏览次数:1  
标签:cout 102400118 cin 集训 int tie include 林嘉祚 string

AC截图

1、Long Loong
本题易知字符串开头为L,结尾为ng,唯一不同的是中间o的个数,于是想到用3个字符串拼接得到目标字符串。(直接用for循环输出似乎更简单)

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int n;
	cin >> n;
	string str = "L";
	string temp(n,'o');
	str = str + temp + "ng";
	cout << str << endl;
	
	return 0;
}

2、YES or YES?
需要检验的字符串每个只有3字符,因此直接遍历字符串是完全可以的。判断每个对应位字符是否为yes对应字母的大小写,若不是则直接输出no并跳出,若未输出no则输出yes。

#include <iostream>
#include <string>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int t;
	cin >> t;
	string s;
	while (t--)
	{
		cin >> s;
		if (s[0] != 'y' && s[0] != 'Y')
		{
			cout << "no" << endl;
			continue;
		}
		if (s[1] != 'e' && s[1] != 'E')
		{
			cout << "no" << endl;
			continue;
		}
		if (s[2] != 's' && s[2] != 'S')
		{
			cout << "no" << endl;
			continue;
		}
		cout << "yes" << endl;
	}
	
	return 0;
}

3、Even? Odd? G
本题只需要判断奇偶数,但是数据范围达到了10^60,溢出了所有基本数据类型,因此需要使用高精度,用string来接受读入的整数。最后只需要判断字符串最后一位是奇是偶即可。

#include <iostream>
#include <string>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n;
	cin >> n;
	string num;
	while (n--)
	{
		cin >> num;
		int len = num.size();
		int t = num[len-1] - '0';
		if (t % 2 == 0) cout << "even" << endl;
		else cout << "odd" << endl;
	}
	
	return 0;
}

4、Problem Generator
本题需要知道A到G中还需要添加的题目总数。由于A到G只有7种题目,因此只需使用桶来记录每种题目的出现次数,并与所需轮数进行比较。

#include <iostream>
#include <cstring>
using namespace std;

int cnt[10];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int t;
	cin >> t;
	while (t--)
	{
		int n,m;
		string a;
		cin >> n >> m;
		cin >> a;
		
		memset(cnt,0,sizeof(cnt));
		for (int i = 0 ; i < n ; i++)
		{
			int temp = a[i] - 'A' + 1;
			cnt[temp]++;
		}
		
		long long sum = 0;
		for (int i = 1 ; i <= 7 ; i++)
		{
			sum += max(0,m-cnt[i]);
		}
		
		cout << sum << endl; 
	}
	
	return 0;
} 

5、rules
本题只需要考虑代号k是否在每天中出现半数以上次数。边读入边计数,若k出现次数满足要求,则天数计数器+1,所有数据读入完再判断天数是否满足要求即可。需要注意的是当人数或天数为奇数时,除2时需向上取整。

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n,m,k;
	cin >> n >> m >> k;
	
	int sum = 0;
	for (int i = 1 ; i <= m ; i++)
	{
		int cnt = 0; 
		for (int j = 1 ; j <= n ; j++)
		{
			int t;
			cin >> t;
			if (t == k) cnt++;
		}
		if (cnt >= ceil(n/2.0)) sum++;
	} 
	
	if (sum >= ceil(m/2.0)) cout << "YES" << endl;
	else cout << "NO" << endl;
	
	return 0;
}

6、Many Replacement
直观地按题意模拟复杂度为O(n*q),题目要卡一定超时,考虑优化。由于本题并不关心中间过程字符串长什么样,只需要知道所有替换操作后的字符串,因此每步只需要知道对应字母的变化即可。在每次操作中,将所有指向被替换字母的字母更改为指向替换字母。在所有操作结束后,逐一遍历字符串中的字符,并输出该字符所指向的字母。

#include <iostream>
#include <string>
using namespace std;

int id[100];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n,q;
	string s;
	cin >> n >> s >> q;
	
	for (int i = 97 ; i <= 122 ; i++) id[i] = i;
	
	for (int i = 1 ; i <= q ; i++)
	{
		char c,d;
		cin >> c >> d;
	
		for (int j = 97 ; j <= 122 ; j++)
		{
			if (id[j] == c)
			{
				id[j] = d;
			}
		} 
	}
	
	for (int i = 0 ; i < n ; i++)
	{
		cout << (char)id[s[i]];
	}
	
	return 0;
}

7、更好的交换
按题目要求暴力模拟一定超时,仍需要优化。首先想到行列变化是否会互相影响。举了几个例子后,得到行列变化并不会互相影响,于是本题思路就和上一题类似,用数组记录对应位置的行和列是原矩阵中的哪行哪列,每次操作只需要交换这个用于记录的数组。最后遍历矩阵中的每个位置,输出该行该列记录的是原矩阵中的哪一位置即可。

#include <iostream>
#include <unordered_map>
using namespace std;

const int N = 1e3 + 10;
int arr[N][N];
int to0[N]; //列 
int to1[N]; //行
unordered_map<int,int> mp;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n,m;
	cin >> n >> m;
	for (int i = 1 ; i <= n ; i++)
	{
		for (int j = 1 ; j <= n ; j++)
		{
			cin >> arr[i][j];
		}
	}
	
	for (int i = 1 ; i <= n ; i++)
	{
		to0[i] = to1[i] = i;
	}
	
	while (m--)
	{
		int type,x,y; //0列 1行 
		cin >> type >> x >> y;
		if (type == 0)
		{
			swap(to0[x],to0[y]);
		}
		else
		{
			swap(to1[x],to1[y]);
		} 
	}
	
	for (int i = 1 ; i <= n ; i++)
	{
		for (int j = 1 ; j <= n ; j++)
		{
			int x = to1[i];
			int y = to0[j];
			cout << arr[x][y] << " ";
		}
		cout << endl;
	}
	
	return 0;
} 

标签:cout,102400118,cin,集训,int,tie,include,林嘉祚,string
From: https://www.cnblogs.com/linjiazuo/p/18687419

相关文章

  • ACM寒假线上集训第一次总结
    第一题这一题就是想到最简单的循环结构总结:看了学长大人的代码后发现自己的代码还是不够简洁第二题这题的想法是干脆直接转化成大写比较总结:试着使用了C++的string类以及新的遍历方式,有点牛逼的第三题这题就常规字符串,看末尾字符代表的数字奇偶总结:刚刚开始把.back()写......
  • 硝基甲苯之袭(2025牛客寒假算法基础集训营1)
    #include<bits/stdc++.h>#defineendl'\n'#defineintllusingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();signedmain(){#ifdefGordenfreopen("in.txt","rt",stdi......
  • 数值膨胀之美(2025牛客寒假算法基础集训营1)
    #include<bits/stdc++.h>#defineendl'\n'#defineintllusingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();constintinf=0x3f3f3f3f;signedmain(){#ifdefGordenfreopen("in.txt&q......
  • 井然有序之衡(2025牛客寒假算法基础集训营1)
    #include<bits/stdc++.h>#defineendl'\n'#defineintllusingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();signedmain(){#ifdefGordenfreopen("in.txt","rt",stdi......
  • 一气贯通之刃(2025牛客寒假算法基础集训营1)
    #include<bits/stdc++.h>#defineendl'\n'#defineintllusingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();constintN=1e5+7;vector<vector<int>>e(N);signedmain(){#ifdefGor......
  • 2025牛客寒假算法基础集训营1
    A.茕茕孑立之影题意:给你\(n\)个数,你要找一个数使得这个数和数组的任意一个数都不成倍数关系。如果数组里有\(1\)肯定不行,\(1\)是所有数的因子。其他情况我们只需要找一个大质数就行,因为值域只有\(1e9\),可以输出\(1e9+7\)。点击查看代码voidsolve(){ intn; std::cin>>......
  • 2025牛客寒假算法基础集训营1 ptlks的题解
    A.茕茕孑立之影题意:给定序列,找出一个数x,满足x和数组中任意一个元素都互不为倍数关系思路x范围为1e18以内,序列元素范围为1e9以内,选大于1e9的质数即可,特判序列中有1的情况。代码点击查看代码voidsolve(){ intn; cin>>n; intf=1; for(inti=1;i<=n;i++){ cin>>a[......
  • 寒假集训笔记 | | 第一课
    C++STL--第一课C标准库常用函数<cstring>memset()暴力清空charstr[10];memset(str,0,sizeof(str));<cmath>三角函数、指数函数、浮点取整函数<cstdlib>qsort()C语言快排rand()随机数malloc()free()C语言动态内存分配<cctype>isdigit()isalpha()......
  • 洛谷题单指南-线段树的进阶用法-P2839 [国家集训队] middle
    原题链接:https://www.luogu.com.cn/problem/P2839题意解读:求左端点在[a,b]之间,右端点在 [c,d]之间的子区间中,最大的中位数。解题思路:1、直男暴力法枚举左、右端点,然后排序计算中位数,这样的复杂度在n*n*logn,显然不可行。2、渣男巧妙法首先,要重新来看待何为中位数。设一段......
  • 那些年我在 HL 集训做的题【某人别催了!】
    Day01.16下午到HL,居然还写了一道题?P8855[POI2002]商务旅行LCA板子。不理解当时为啥要写这个东东,可能是为了热热身吧。Day1讲整体二分,但是没听懂。貌似是魔改版CDQ...不管它。但是我似乎发现了一片新天地,一切的一切都从下面的一道题说起:P3157[CQOI2011]动态逆序对......