AcWing 每日一题 2022/5/4【2031. 折叠绳子】

news/2024/5/18 22:07:35 标签: c++, 算法, 数学, 暴力, 枚举

AcWing 每日一题 2022/5/4【2031. 折叠绳子】

农夫约翰有一条长度为 L 的绳子,可用于农场周围的各种任务。

绳子在不同的位置有 N 个绳结,包括两个端点处各有一个。

约翰注意到,在某些位置,他可以将绳子对折,这样,相对的绳索上的绳结就可以彼此完全对齐:

在这里插入图片描述

请帮助约翰统计具有此属性的折叠点数。

允许在某个绳结处折叠,但不允许在端点绳结处折叠。

折叠后,较长的一侧可以有多余节点。

输入格式
第一行包含两个整数 N 和 L。

接下来 N 行,每行包含一个 0∼L 范围内的数,表示一个绳结的位置。其中两行包含的数字分别是 0 和 L。

输出格式
输出有效折叠位置的数量。

数据范围

1≤L≤10000,
1≤N≤100

输入样例:

5 10
0
10
6
2
4

输出样例:

4

样例解释
有效折叠位置为 1,2,3,8。

题目分析

给定一段绳子,然后绳子上某些位置有绳结,然后判断有多少个位置折叠后,可以将绳结全部匹配(超出的部分可以不匹配,没有超出的部分一定要完全匹配)
难点:折叠的点可能不是整数,可能是一个小数,比如 0 和 1 的中点可以进行折叠,使得 0 和 1 匹配
处理方法:将全部的数据进行 *2 处理,将中点的情况全部规避掉
时间复杂度O(104)

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<sstream>

#define x first
#define y second

using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 20010;
const int MOD = 1000000007;
const int INF = 0x3f3f3f3f;

int gcd(int a, int b){return b ? gcd(b, a % b) : a;}

int n, l;
int a[N];

int check(int u)
{
	for(int i = 0; i <= u; i ++ )
	{
		if(u + i > l || u - i < 0) continue;
		if(a[u - i] != a[u + i]) return 0;
	}
	return 1;
}

int main()
{
	cin >> n >> l;
	l *= 2;
	for(int i = 0; i < n; i ++ )
	{
		int x;
		cin >> x;
		x *= 2;
		a[x] = 1;
	}
	int ans = 0;
	for(int i = 1; i < l; i ++ )
	{
		ans += check(i);
	}
	cout << ans << endl;
	return 0;
}





http://www.niftyadmin.cn/n/1680471.html

相关文章

神盾内网管理软件方式和硬件方式的比较

网络监控包含了两部分&#xff0c;一个是上网监控&#xff0c;一个是内网监控&#xff1b;无论是哪个方式&#xff0c;都需要大量的数据存储&#xff0c;而很多数据是实时&#xff1b;比如上网监控到的邮件&#xff0c;内网监控到桌面屏幕&#xff1b;而硬件怎么保存&#xff1…

2022 IDEA (学生邮箱认证)安装使用教程以及基础配置教程

2022 IDEA &#xff08;学生邮箱认证&#xff09;安装使用教程以及基础配置教程1. IDEA 下载安装a. IDEA 下载b. 安装 IDEAc. 打开软件2. 利用教育邮箱进行学生认证a. 进行学生认证b. 认证完成登录软件3. 学生认证常见问题4. 使用 IDEA 创建项目a. 新建一个 Maven 项目b. 添加 …

配置RAC到单节点standby的data guard

1RAC主库准备 2创建物理备库 3主库调整参数 4测试DG 转载于:https://www.cnblogs.com/myrunning/p/3983403.html

JavaScript 基础 【事件对象】

JavaScript 基础 【事件对象】鼠标移动事件鼠标移动事件练习事件的冒泡&#xff08;Bubble&#xff09;冒泡的应用练习事件的绑定事件的传播事件练习鼠标拖拽滚轮事件键盘事件鼠标移动事件 当鼠标在 areDiv 中移动时&#xff0c;在 showMsg 中来显示鼠标的坐标 获取两个 div …

GitHub 使用简介(GitHub 你就是我的神)

GitHub 使用简介&#xff08;GitHub 你就是我的神&#xff01;&#xff09;1. 注册 GitHub 账号2. GitHub 简介3. 创建仓库1. 创建仓库2. 提交您的第一个更改4. 社交化1. 关注他人2. 关注仓库3. 参与组织4. 在 GitHub 上探索其他项目5. 后续继续更新...什么是 GitHub &#xff…

聊一聊 Git 常用命令(简单通俗易懂)

聊一聊 Git 常用命令&#xff08;简单通俗易懂&#xff09;1. 版本控制1. 版本控制分类2. Git 与 SVN 最主要区别2. Git 的历史3. Git 环境配置1. 安装 Git2. 启动 Git3. 基本的 Linux 命令学习4. Git 的配置4. Git 基本理论&#xff08;核心&#xff09;1. 工作区域2. 工作流程…

Eucalyptus管理页面密码设置

桉树环境什么的都已经是配置好了的&#xff0c;但是过了一段时间不用&#xff0c;也不知道密码是什么了&#xff0c;看着下面的页面也不知道如何进去&#xff0c;这里我们通过命令行的方式重置用户名和密码信息。 登陆clc所在机器&#xff0c;输入下命令&#xff1a; euare-use…

AcWing 每日一题 2022/5/5【2022. 倍数 17】

AcWing 每日一题 2022/5/5【2022. 倍数 17】 在意识到软件开发有很多钱可赚之后&#xff0c;农夫约翰开办了一家小型企业&#xff0c;为当地农业行业的客户编写简短的程序。 他的第一个编程任务对他来说似乎非常简单&#xff1a;他的客户希望他编写一个程序&#xff0c;该程序…