Gym - 101652

news2024/11/25 19:35:50

A - Odd Palindrome

题意:给你一个字符串如果它的所有回文子串长度为奇数,输出Odd.否则输出Or not.

思路:其实只要判断是否有两个相连的字符就可以了

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int n;
string s;
void solve()
{
	bool flag=0;
	cin>>s;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]==s[i+1])
		{
			flag=1;
			break;
		}
	}
	if(flag)cout<<"Or not."<<endl;
	else cout<<"Odd."<<endl;
}

signed main()
{
	Ysanqian;
	int T;
	T=1;
	//cin >> T;
	while (T--)solve();
	return 0;
}

B - Latin Squares

题意:给你一个数n,然后给出一个n*n的图,图的元素只能为0~n-1,但是当n>10时,就用A~Z表示10~35,然后就是每个数在每行每列只能出现一次(就是每一行,每一列都包函0~n的所有元素一次)

如果不满足上述条件就输出NO,满足则判断一下第一行,第一列是不是都是递增的,如果是输出Reduced,否则输出Not Reduced

这个狗题给我罚时发坏了,到最后都不知道哪里错了,改了个多组输入就过了

思路:n的范围为0~35可以用0n3的复杂度,那么我们就可以遍历每一个数的列和行,看看是否有重复元素,然后就单拉出来第一行,第一列判断即可

(本来加了一些break之类的,但是实在太肿了,就去掉了,虽然会慢一丢丢,但是毕竟就35影响不大)

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int n;
char s[M][M];
signed main()
{
	Ysanqian;
	while (scanf("%d", &n) != EOF)
	{
		int flag = 0;
		for (int i = 0; i < n; i++)
			scanf("%s", s[i]);

		for (int i = 0; i < n; i++)//前两层遍历每一个数,k遍历行和列
		{
			for (int j = 0; j < n; j++)
			{
				for (int k = 0; k < n; k++)
				{
					if (k != j)
					{
						if (s[i][j] == s[i][k] && flag == 0)
							flag = 2;
					}
					if (k != i)
					{
						if (s[i][j] == s[k][j] && flag == 0)
							flag = 2;
					}
				}
			}
		}
		for (int i = 1; i < n; i++)
		{
			if (s[0][i - 1] >= s[0][i] && flag == 0)
			{
				flag = 1;
				break;
			}
			if (s[i - 1][0] >= s[i][0] && flag == 0)
			{
				flag = 1;
				break;
			}
		}

		if (flag == 1)
			printf("Not Reduced\n");
		else if (flag == 2)
			printf("No\n");
		else
			printf("Reduced\n");
	}
	return 0;
}

 D-Halfway

 题意:您的一个朋友编写了一个程序。对于n个项目,其工作方式如下。首先,它打印一个1,并将项目1与项目2、3、4,.... n进行比较。然后打印一个2,然后将项目2与项目3、4、5......n进行比较。您的朋友想知道他的程序何时完成了一半。对于进行总比较数为奇数的程序,这是在正在进行中间比较时。对于进行偶数次总比较的程序,这是在进行两次中间比较中的第一个时。
问:程序完成一半时,最后打印的数字是什么?

思路:就是找完成一半时,打印了谁,直接模拟就可以了,就是用个上取整就行了

我看别人有用二分写的,也没仔细看具;感兴趣可以去找一些

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int n,m;
int sum;
void solve()
{
  cin>>n;
   m=n;
   for(int i=1;i<n;i++)
   sum+=i;
  // cout<<sum<<endl;
   int res=0;
   for(int i=1;i<n;i++)
   {
    res+=(m-1);
    if(res>=(sum+1)/2)向上取整
	{
		cout<<(int)i<<endl;
		break;
	}
	m--;
   }
}

signed main()
{
	Ysanqian;
	int T;
	T=1;
	//cin >> T;
	while(T--)solve();
	return 0;
}

H-Unloaded Die

题意:给你一个六面骰子每个面出现的概率,问如何修改一面的点数可以让其公平(就是平均值=3.5)

求最小差值的绝对值

思路:我们贪心的想,当我们修改概率最大的数时候,就可以让差值最小,有多个概率最大的,随便一个都行(例如,2和5的概率都为0.2,那么让他们都变化2,都会让结果增加2*0.2=0.2)

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
struct node
{
	double x;
	int idx;
} a[N];
bool cmp(node a, node b)
{
	return a.x > b.x;
}
double sum, ans;
void solve()
{
	for (int i = 1; i <= 6; i++)
	{
		cin >> a[i].x;
		a[i].idx = i;
		sum += 1.0 * i * a[i].x;
	}
	sort(a + 1, a + 1 + 6, cmp);

	double res = 1.0 * fabs(3.5000 - sum) / a[1].x;
	printf("%.3lf", 1.0 * res);
}

signed main()
{
	Ysanqian;
	int T;
	T = 1;
	// cin >> T;
	while (T--)
		solve();
	return 0;
}

K-Star Arrangements

题意:给你一个星星总数n,让你找到满足以下条件的所有方案来组成这样一个星旗(只需要输出第一行和第二行的星星数就行)

1. 星星的数目隔行相等

2.相邻两行星星数目最多差一个(当然可以相等)

3.第一行星星数要不少于第二行

思路:直接从2枚举存到 ( s + 1 ) / 2 (向上取整)

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int s;
void solve()
{
	cin >> s;
	cout << s << ':' << endl;
	for (int i = 2; i <= (s + 1) / 2; i++)
	{
		for (int j = i - 1; j <= i; j++)
		{
			if (s % (i + j) == i || s % (i + j) == 0)
				cout << i << ',' << j << endl;
		}
	}
}

signed main()
{
	Ysanqian;
	int T;
	T = 1;
	// cin >> T;
	while(T--)solve();
	return 0;
}

  L-Delayed Work

题意:一个工人工作需要k天,一个工人不论干多少天都只花费X元,然而没干一天,你还需支出P元的罚款,你可以请任意多的工人完成工作,问你最少花费

思路:第一做的时候枚举做的,后来又想用基本不等式也可以a+b>=2*\sqrt{a*b}当且仅当a==b时等号成立,但是这样算出来人数肯能不是整数,故可以用两个取整再取min解决

1:基本不等式

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int s;
int k, x, p;
void solve()
{
	cin >> k >> p >> x;
	double m = sqrt(p * k / x);
	int ans1 = (int)m;
	int ans2 = (int)m + 1;
	double ans = min(1.0 * p * k / ans1 + ans1 * x, 1.0 * p * k / ans2 + ans2 * x);
	printf("%.3lf\n", 1.0 * ans);
}
signed main()
{
	Ysanqian;
	int T;
	T = 1;
	// cin >> T;
	while (T--)
		solve();
	return 0;
}

 2:枚举

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int k,p,x;
double ans,day;
void solve()
{
	cin>>k>>p>>x;
	ans=1e9;
	for(int i=1;i<=20000;i++)
	{
       day=1.0*k/(1.0*i);
	   ans=min(1.0*day*p+x*i,ans);
	}
	printf("%.3lf\n",1.0*ans);
}

signed main()
{
	Ysanqian;
	int T;
	T=1;
	//cin >> T;
	solve();
	return 0;
}

M-Forbidden Zero

题意:就是给你一个数n,找到它下一个数,前提这个数不含0

思路:直接模拟就行

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int n;
int fun(int x)
{
	int i, res;
	for (i = x + 1; i; i++)
	{
		bool flag = 0;
		int m = i;
		while (m > 0)
		{
			res = m % 10;
			if (res == 0)
			{
				flag = 1;
				break;
			}
			m /= 10;
		}
		if (!flag)
			break;
	}
	return i;
}
void solve()
{
	cin >> n;
	cout << fun(n) << endl;
}
signed main()
{
	Ysanqian;
	int T;
	T = 1;
	// cin >> T;
	while (T--)solve();
	return 0;
}

G Security Badge(区间离散化+dfs)

额,这题是后来补的,当时也不知道该怎么办,写昏头了

看了很多题解,看的是昏头昏脑的搬运工太多了(环境太差了),看了好久也想了好久,终于是全想明白了,正好补上

题意:就是n个房间,m个门,每个门都有一个区间,只有编号在这个区间内的人才可以走,

然后就是k个人(编号1~k)但是他说k一定大于门的右区间,那就和k没啥关系了,看门的区间就行了

思路:

1:我们想最终的可行区间是由什么组成?肯定是有可以到达终点的所有门的区间的交集组成的

2:答案区间有什么特点吗?它的左区间一定是某一个门的区间的左区间,右区间同理

3:那么重要的来了,我们存下所有的门的左右端点,然后排序,排序后每相邻的两点,一定是最小的区间,枚举到点能从期点到终点的话就可以加入这个点和前一个点区间的长度了。

那么为什么这样一定对呢,不是说它的左区间一定是某一个门的区间的左区间,右区间同理

这样排序后难道不会有一个门的有区间减左区间吗,答案是一定会有,所以重要的是我们在vector存左区间时,让其减一变为左开右闭这样就会避免这种情况,额可能干说太抽象

举个例子:这个例子呢答案为  1~2,4~5,总长度为4

3 3 5          此时不减一的端点数组为 0(1,2,4,4,5,5),前面补一个0,那么答案就是[0,1].[1,2],[2,4]
1 2              [4,5]可见[0,1]和[2,4]根本就不存在
1 2 1 2       而左端点减一的端点数组为0(0,2,3,3,5,5) ,那么答案为 (0,2],(3,5]也就是[1,2],[4,5]长
1 3 4 5      度为4
3 2 4 5

                                                               (额,只能说尽力说的详细了,当然佬可能不需要这样也明                                                                        白,就当看个热闹吧(蒻)....当然可能理解不到位,欢迎                                                                                                                                                  纠错)

#include <bits/stdc++.h>
using namespace std;
#define pi 3.1415926
#define X first
#define Y second
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define endl "\n"
#define int long long
#define pb push_back
typedef pair<int, int> PII;
const int N = 1e6 + 6000, M = 1010, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int n,m,k,s,t,ans;
bool st[N];
struct edge
{
	int v,down,up;//区间上下界
};
vector<edge>g[N];
vector<int>p;
void dfs(int u,int x)
{
	st[u]=1;
	for(auto ed:g[u])
	{
		int v=ed.v,down=ed.down,up=ed.up;
		if(!st[v]&&down<=x&&x<=up)dfs(v,x);
	}
}
void solve()
{
   cin>>n>>m>>k>>s>>t;
   for(int i=0;i<m;i++)
   {
	int u,v,down,up;
	cin>>u>>v>>down>>up;
	g[u].pb({v,down,up});
    p.pb(down-1);
	p.pb(up);
   }
   sort(p.begin(),p.end());
   for(int i=0;i<2*m;i++)//这里我第一遍交是i=1开始,后来一想这个做左区间被减了1,一定不能走到
   {                       终点,所以不影响
	memset(st,0,sizeof st);
	dfs(s,p[i]);
    if(st[t])ans+=p[i]-p[i-1];
   }
   cout<<ans<<endl;
}
signed main()
{
	Ysanqian;
	int T;
	T = 1;
	// cin >> T;
	while (T--)solve();
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32初识---概念了解(下)

复位和时钟控制&#xff08;RCC) 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a; 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 电源复位 当以下事件中…

XML文档详解

目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 XML文档 一、XML文件 1.1 学习重…

s3fs安装使用

s3fs安装使用 前言 最近在预研将对象存储桶挂载到本地文件系统的需求&#xff0c;查阅了一些相关的资料&#xff0c;找到s3fs-fuse开源组件&#xff0c;可以满足需求&#xff0c;本文主要记录一下s3fs的部署以及使用。 s3fs简介 s3fs 是一个 C 开发的开源工具&#xff0c;可…

Amplify-Shader-Pack下载

ASE相关效果资源https://download.csdn.net/download/mayzhengxi/87915649?spm1001.2014.3001.5503

[linux] ebtables技术

Linux系统中使用ebtables技术 ebtables就是以太网桥防火墙&#xff0c;以太网桥工作在数据链路层&#xff08;MAC层&#xff09;&#xff0c;ebtables主要过滤数据链路层数据包&#xff0c;ebtables能过滤桥接流量。ebtables每个阶段的过滤时机都比iptables早。 ebtables的配置…

centos7.9修改ssh默认的端口号

多开几个ssh&#xff0c;防止配置文件错误&#xff0c;将自己关在服务器外面了 netstat -ntlp|grep ssh # ssh对应的端口号 修改sshd_config配置文件 /etc/ssh/sshd_config&#xff0c;重启sshd服务 #Port 22 Port 10011 # 端口号自己定义&#xff0c;不能超过65535&#xf…

基于Java+Swing+Mysql影院购票系统

基于JavaSwingMysql影院购票系统 一、系统介绍二、功能展示1.用户登陆2.用户订票管理3.电影售票中心4.电影上映管理4.退票记录查询 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看管理员登陆、用户订票管理、电影上映管理、电影售票中心、退票记录查询…

重定义/自定义printf到串口输出实现的三种方法(cubeide)

重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide) 文章目录 重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide)1.重写_write函数2.重定义PUTCHAR_PROTOTYPE宏3.va_list自定义printf总结&#xff1a; 1.重写_write函数 注释掉syscalls.c文件中…

Java中Map使用增强for循环和迭代器获取key和value

加油&#xff0c;新时代打工人&#xff01; java中List集合三种获取集合元素方式 本文运行代码使用 jdk1.8 for 语句比较简单&#xff0c;用于循环数据。 Java迭代器&#xff08;Iterator&#xff09;是 Java 集合框架中的一种机制&#xff0c;是一种用于遍历集合&#xff08…

非线程安全问题

目录 实例变量共享导致的“非线程安全问题” 如何解决这个问题&#xff1f; i--与System.out.println()出现引起的“非线程安全问题” 非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况&#xff0c;进而影响程序的执行流…

科目一速通技巧笔记,简记

常规 累计积分制度&#xff08;12满&#xff09;周期12月 虚假材料1年&#xff0c;假1吊二撤三醉五逃终身 假1500 骗三2k以下 初次领证1年实习期、实习标志&#xff0c;18~70岁 拼装车、报废车&#xff0c;吊销 200~2k 没有中心线&#xff08;一条路&#xff09;城市道路3…

路径规划算法:基于白鲸优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于白鲸优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于白鲸优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法白鲸…

Python、STK、MATLAB的连接和使用

写在前面 预备知识&#xff1a; Python通过命令行调用MATLAB的简单实现。这篇文章讲明了如何使用 Python 调用 MATLAB 的原理和过程&#xff0c;并给出相应代码。 STK、MATLAB、SQL的连接和使用。这篇文章讲明了STK 11.2、MATLAB 2014a、SQL 2019的安装过程&#xff0c;以及…

超越99%的程序员,chatgpt用C++写个线程安全无锁环形队列

​肝了一个周末&#xff0c;我们一起来欣赏chatgpt写的代码吧。让其用C为我们写一个线程安全的环形队列&#xff0c;并逐步提出一些需求。 先看带锁的实现。 带锁版本 我对chatgpt的需求是&#xff1a; 用C实现线程安全的环形队列&#xff0c;提供代码注释&#xff0c;以及g…

Meetup 报名|07.22 StarRocks Friends 与你相约广州

夏日炎炎&#xff0c;经历了杭州和上海两站的成功活动后&#xff0c;社区开发者的热情依旧如火如荼&#xff01;在更加炽热的七月&#xff0c;我们即将迎来 StarRocks & Friends 的第三站--广州&#xff01; 社区依旧秉持连接 StarRocks 社区专家与用户共同探讨大数据领域…

MySQL数据库 - 基本数据类型

目录 一、数据类型分类 二、数据类型 1、tinyint 类型 有符号 tinyint 范围测试 无符号 tinyint 范围测试 2、bit 类型 3、float 类型 有符号 float 范围测试 无符号 float 范围测试 4、decimal 类型 5、char 类型 6、varchar 类型 7、日期类型 8、enum类型、set类型…

Codeforces Round 739 (Div. 3)

A.Dislike of Threes AC代码&#xff1a; #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N2e510; int f[N]; int cnt; int main() {for(int i1;;i){if(i%3!0&&i%10!3) f[cnt]i;if(cnt>1000) break…

第一阶段-第六章 Python的数据容器

目录 一、数据容器入门  1.学习目标  2.为什么要学习数据容器  3.什么是数据容器  4.本小节的总结 二、数据容器&#xff1a;list&#xff08;列表&#xff09;  2.1列表的定义  1.学习目标  2.为什么需要列表  3.列表的定义  4.本节的代码演示  5.本小节的…

【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

Java练习题 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一、填空题 面向对象的三大特征&#xff1a;_______ 、_______ 、_______。类由_______和_______组成。运算符_______的作用是根据对象的类型分配内存空间。当对象拥有内存空间时&#xff0c;会自动调…

oceanbase基础

与mysql对比 分布式一致性算法 paxos 存储结构&#xff08;引擎&#xff09;用的是两级的 数据库自动分片功能&#xff0c;提供独立的obproxy路由写入查询等操作到对应的分片 多租户 方便扩展 存储层 http://www.hzhcontrols.com/new-1391864.html LSM tree&#xff0c;is very…