[NOIP模拟测试]:折纸(模拟)
时间:2019-08-16
本文章向大家介绍[NOIP模拟测试]:折纸(模拟),主要包括[NOIP模拟测试]:折纸(模拟)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
小$s$很喜欢折纸。
有一天,他得到了一条很长的纸带,他把它从左向右均匀划分为$N$个单位长度,并且在每份的边界处分别标上数字$0\sim n$。
然后小$s$开始无聊的折纸,每次他都会选择一个数字,把纸带沿这个数字当前所在的位置翻折(假如已经在边界上了那就相当于什么都不做)。
小$s$想知道$M$次翻折之后纸带还有多长。
输入格式
第一行包含两个正整数$N$和$M$,表示纸带的长度和操作的次数。
接下来的一行包含$M$个整数$D_i$,其中$D_i$表示第$i$次选择的数字。
输出格式
输出文件只有一个数字,即纸带最后的长度。
样例
样例输入:
5 2
3 5
样例输出:
2
数据范围与提示
$60\%$的数据中$N\leqslant 3,000,M\leqslant 3,000$。
$100\%$的数据中$N\leqslant {10}^{18},M\leqslant 3,000$。
题解
$60\%$算法:
直接模拟翻折过程,记录每一个点现在的位置即可,每次暴力更新。
记得初始化。
时间复杂度:$\Theta(N\times M)$。
期望得分:$60$分。
实际得分:$60$分。
$100\%$算法:
发现我们并不用关心每个纸带的位置,只用考虑当前操作的位置就好了。
每次翻折之后对所有的操作进行$\Theta(M)$重标号即可,至于式子$D_j=abs(D_i-D_j)$。
时间复杂度:$\Theta(m^2)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long l,r;
long long wzc[5000];
int main()
{
scanf("%lld%lld",&n,&m);
l=0,r=n;
for(int i=1;i<=m;i++)
{
scanf("%lld",&wzc[i]);
for(int j=1;j<i;j++)
if(wzc[j]>=wzc[i])
wzc[i]=2LL*wzc[j]-wzc[i];
r=max(r,2LL*wzc[i]-l);
l=wzc[i];
}
printf("%lld",r-l);
return 0;
}
rp++
原文地址:https://www.cnblogs.com/wzc521/p/11366052.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP JWT初识及其简单示例
- PHP正则判断一个变量是否为正整数的方法
- php5.5使用PHPMailer-5.2发送邮件的完整步骤
- 详细对比php中类继承和接口继承
- 解决Keras的自定义lambda层去reshape张量时model保存出错问题
- 解决Keras中Embedding层masking与Concatenate层不可调和的问题
- 浅谈keras使用预训练模型vgg16分类,损失和准确度不变
- 关于tf.matmul() 和tf.multiply() 的区别说明
- python中执行smtplib失败的处理方法
- PHP+Ajax简单get验证操作示例
- Python matplotlib读取excel数据并用for循环画多个子图subplot操作
- python转化excel数字日期为标准日期操作
- thinkPHP框架通过Redis实现增删改查操作的方法详解
- PHP中引用类型和值类型功能与用法示例
- PHP文件上传小程序 适合初学者学习!