首页 > 其他分享 >【学校训练记录】10月个人训练赛4个人题解

【学校训练记录】10月个人训练赛4个人题解

时间:2024-10-20 16:48:01浏览次数:6  
标签:10 return int 题解 long ++ 训练赛 solve define

A:

要使s,t相等只要互相删除对方没有的字母即可,即找到a-z字母拥有最少的

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;

string s1, s2;
int a1[30], a2[30];
void solve(){
	cin >> s1 >> s2;
	for(int i = 0; i < s1.size(); i++){
		int x = s1[i]-'a';
		a1[x]++;
	}
	for(int i = 0; i < s2.size(); i++){
		int x = s2[i]-'a';
		a2[x]++;
	}
	int sum = 0;
	for(int i = 0; i <26; i++) sum+=min(a1[i], a2[i]);
	cout << sum;
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr); 
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

B:

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
const int mod = 1e9+7;

int k;
void solve(){
	cin >> k;
	int ret = 7, num=1;
	for(int i = 1; i <= 1e7; i++){
		if(ret%k==0){
			cout<< num ;
			return ;
		}
		ret=ret*10+7; ret%=k;
		num++;
	}
	cout << "-1" ;
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr); 
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

C:

对于任意两个数求和,即为每个数与之后的前缀和的积的和,注意MOD使用

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
const int mod = 1e9+7;

int n, a[200010], b[200010];
void solve(){
	cin >> n;
	int sum = 0;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		b[i] = a[i]+b[i-1];
	}
	for(int i = 1; i < n; i++){
		sum = (sum + (  (a[i]%mod)  *  ((b[n]-b[i])%mod)  ) %mod ) %mod;
	}
	cout << sum%mod;
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr); 
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

D:
求出每个与i相乘不会大于n的数即可,其值为1到n的i的倍数,即为n/i

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
const int mod = 1e9+7;

int n;
void solve(){
	cin >> n;
	int num = 0;
	for(int i = 1; i < n; i++){
		num+=(n-1)/i;
	}
	cout << num;
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr); 
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

E:

数据范围为1e12,枚举到1到1e6判断该数字是否成立,即将其接一个上去与n比较即可

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
const int mod = 1e9+7;

int n;
int se(string s){
	s+=s;
	int ret = 0;
	for(int i = 0; i < s.size(); i++){
		ret = ret*10+(s[i]-'0');
	}
	return ret;
}
void solve(){
	cin >> n;
	int num = 0;
	for(int i = 1; i <= 1e7; i++){
		if(n>=se(to_string(i))) num++;
		else break;
	}
	cout << num;
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr); 
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

F:


dfs实现,对于一块颜色相同的相连区域,只需要搜索一遍即可,而只要走到颜色相同且已经走过的位置即为成环,注意不能往回走

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;

int n, m, a[60][60];
int s1[4] = {-1,0,0,1};
int s2[4] = {0,-1,1,0};
char c[60][60];
int p = 0;
void dfs(int x, int y, int lx, int ly){
	if(a[x][y]){
		p = 1;
		return ;
	}
	a[x][y] = 1;
	for(int i = 0; i < 4; i++){
		int nx = x+s1[i];
		int ny = y+s2[i];
		if(nx==lx && ny==ly) continue;
		if(nx>=1 && nx<=n && ny>=1 && ny<=m && c[nx][ny]==c[x][y]){
			dfs(nx, ny, x, y);
		}
		if(p) break;
	}
}
void solve(){
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
			cin >> c[i][j];
	
	for(int i = 1; i <= n;i++){
		for(int j = 1; j <= m; j++){
			if(p) break;
			if(a[i][j]==0){
				dfs(i,j,i,j);
			}
			if(p) break;
		}
		if(p) break;
	}
	if(p) cout << "Yes" ;
	else cout << "No";
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

标签:10,return,int,题解,long,++,训练赛,solve,define
From: https://www.cnblogs.com/qkauto/p/18476211

相关文章

  • 私钥碰撞器,单窗口月搜易可达1000+可无限放大
    功能介绍:协议私钥碰撞,24小时全自动挂机碰到自动建立文档储存运气好每天几十几百个U甚至更多运气不好也有好几个U有保底双协议bnb和eth,btc待发布设备需求:电脑......
  • 1077. 项目员工 III
    力扣题目跳转(1077.项目员工III-力扣(LeetCode))项目表 Project:+-------------+---------+|ColumnName|Type|+-------------+---------+|project_id|int||employee_id|int|+-------------+---------+(project_id,employee_id)是这个表的......
  • 【洛谷 P1116】车厢重组 题解(模拟+冒泡排序)
    车厢重组题目描述在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他......
  • 【洛谷 P1116】车厢重组 题解(模拟+冒泡排序)
    车厢重组题目描述在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他......
  • 20241020比赛总结
    T1Reversehttps://www.gxyzoj.com/d/hzoj/p/P980假设1在点i时,这个1可以通过一次翻转到达那些点,将这些点和i连边,此时答案就是s到x的最短路但是,此时边数也会到达\(n^2\)级别考虑优化,因为边权均为1,所以可以直接bfs,可以发现每个点能转移的点的奇偶性是有限制的,而且每个点至多被更......
  • 闯关leetcode——110. Balanced Binary Tree
    大纲题目地址内容解题代码地址题目地址https://leetcode.com/problems/balanced-binary-tree/description/内容Givenabinarytree,determineifitisheight-balanced.Aheight-balancedbinarytreeisabinarytreeinwhichthedepthofthetwosub......
  • CF1187E 题解
    Titletranslation给定一棵\(n\)个点的树,初始全是白点。要做\(n\)步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点,求可获得的最大权值。Solution如何让这道题秒降绿题呢?先简化一......
  • 题解:AT_abc376_c [ABC376C] Prepare Another Box
    这道题要求把\(a\)数组和\(b\)数组一一匹配,且要求无法匹配的数量最多为一,并且这个无法匹配的元素最小。可以注意到我们把两个数组排序以后一一对应以后如果出现一个无法匹配的元素,那么这一定就是答案。但是如果我们从小到大枚举,会发现最后剩下的元素不一定最小,所以我们选择......
  • 2024.10.20 1424版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • AI预测体彩排3采取888=3策略+和值012路或胆码测试10月20日升级新模型预测第110弹
            经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能少的缩......