[CSP-S模拟测试]:折纸(模拟)
题目描述
小$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++
[CSP-S模拟测试]:折纸(模拟)的更多相关文章
- [考试反思]0719NOIP模拟测试6 + 0722NOIP模拟测试7
		连续爆炸,颇为愉快. 第6次:Rank #4 第7次:Rank #9 对于第6次考试,个人比较满意,因为T1只是差了一个卡常. 因为在考试前两天刚讲了矩阵,满脑子都是矩阵,还想到了循环矩阵优化. 整个 ... 
- [CSP-S模拟测试]:砖块(模拟)
		题目描述 在一个二维网格平面上,一个网格的坐标由其左下角的点的坐标定义$(x,y)$.在一个二维网格平面上,一个网格的坐标由其左下角的个点的坐标定义$(0,0)$的区域中,此时存在高度为$k$的初始砖 ... 
- [CSP-S模拟测试]:跳房子(模拟)
		题目描述 跳房子,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一.跳房子是在$N$个格子上进行的,$CYJ$对游戏进行了改进,该成了跳棋盘,改进后的游戏是在一个$N$行$M$列的棋盘上进行,并 ... 
- csp-s模拟测试112 & csp-s模拟测试113
		考前两天模拟. Day1直接炸飞,T1浪费的时间太长,对拍+调试了一个多小时但复杂度还不能过,最后5分钟想出来了解决方案但是已经打不出来了.T2读入出了事故RE0.T3打了假贪心. Day2心态几乎也 ... 
- [CSP-S模拟测试]:五子棋(模拟)
		题目传送门(内部题122) 输入格式 输入文件第一行为一个正整数$n$,表示双方总共下了多少步棋. 接下来$n$行,输入文件每行两个正整数.第$i$行的两个数$x,y$表示第$i$步的棋子下在了第$x ... 
- [CSP-S模拟测试]:线性代数(模拟)
		题目传送门(内部题113) 输入格式 第一行一个正整数$n$. 接下来$n$行,每行$n$个整数,描述$C$矩阵.保证输入的是一个林先森矩阵. 输出格式 若不可能实现,则输出一行$Impossible ... 
- [CSP-S模拟测试]:666(模拟)
		题目描述 不忘初心. 小$\pi$假期在家无聊,打开了某弹幕直播网站. 突然,有一个精彩的镜头. 小$\pi$看到了满屏的$6$,其中,有$666$.也有$666666$.也有$6666666666. ... 
- [CSP-S模拟测试]:集合论(模拟)
		题目传送门(内部题73) 输入格式 输入文件$jihe.in$ 第一行一个整数$m$,表示操作的次数. 接下来$m$行,每行描述一个操作. 每行的开始都是一个数字,$1,2,3,4$依次代表$unio ... 
- [CSP-S模拟测试]:Reverse(模拟+暴力+剪枝)
		题目描述 小$G$有一个长度为$n$的$01$串$T$,其中只有$T_S=1$,其余位置都是$0$.现在小$G$可以进行若干次以下操作: $\bullet$选择一个长度为K的连续子串($K$是给定的常 ... 
随机推荐
- 类HashSet
			/* * Collection * * List * 有序(存储顺序和取出顺序一致),可以重复 * * Set * 无序(存储顺序和取出顺序不一致),唯一 * * */ import java.uti ... 
- Java ——if条件语句 switch语句
			本节重点思维导图 if条件语句 //如果条件表达式成立,执行语句块 if(条件表达式){ //…语句块 } 如果语句块只有一条语句,大括号可以省略,否则不能省略. 建议,不管有几条语句,都不要省略大 ... 
- SpringBoot中FreeMarker创建
			1.创建SpringBoot项目时,勾选freemarker依赖(web,dev) 2.Controller中向model中存放数据 package com.ziv.springbootbygrald ... 
- Mbox-React Native
			Mbox-React Native 学习网址:https://www.jianshu.com/p/bbf9837443f3 MboX环境配置: .npm i mobx mobx-react --sav ... 
- es6    export及export default 的使用 及 区别
			首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口i ... 
- Spring MVC-学习笔记(1)认识spring mvc
			1.基于XML Schema.Controller接口的spring mvc简单例子 1>创建一个动态Web项目,选择同时创建web.xml文件 2>在WEB-INF/lib中粘贴spri ... 
- Codeforces 191C (LCA+树上差分算法)
			题面 传送门 题目大意: 给出一棵树,再给出k条树上的简单路径,求每条边被不同的路径覆盖了多少次 分析 解决这个问题的经典做法是树上差分算法 它的思想是把"区间"修改转化为左右端点 ... 
- 扩展欧几里得算法详解(exgcd)
			一.前言 本博客适合已经学会欧几里得算法的人食用~~~ 二.扩展欧几里得算法 为了更好的理解扩展欧几里得算法,首先你要知道一个叫做贝祖定理的玄学定理: 即如果a.b是整数,那么一定存在整数x.y使得$ ... 
- Trie字典树详解
			今天上午省选字符串......只会KMP.连hash都不会的我被大佬虐惨了......于是我要发奋图强学习字符串,学习字符串当然就要从Trie树这种可爱的数据结构开始啦!!! 一.什么是Trie树?? ... 
- java实战应用:MyBatis实现单表的增删改
			MyBatis 是支持普通 SQL查询.存储过程和高级映射的优秀持久层框架.MyBatis 消除了差点儿全部的JDBC代码和參数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于 ... 
