CF1028E Restore Array 构造
正解:构造
解题报告:
是的灵巧还在写构造,,,不知道484我做题太慢的缘故我感觉我做了好久的构造了然而一半的题目都没做完QAQ
要哭出来了QAQ
然后说下这题的解法,开始花了这——么的时间也没有get,,,然后听psj又讲了遍才发现是我傻逼了,,,
这题的解法趴,大概是这样的
首先对于这种取余的,一般来说看到之后第一反应就要想到商=0或者商=1,这样比较好做
那这道题中是商=1,也就是说我们只要Ai=Ai+1+Bi
再加上这题是个环
看到环你难道没有断环为链的冲动嘛
所以就找一个i,然后一路按照我们刚才求的式子推过去就好了
那剩下的唯一一个问题就是,我们怎么保证推一圈推回来之后A依然是合法的呢
思考怎么样会是合法的鸭
只要保证Ai%Ai+1=Bi就成
显然从上面求的那个式子可以发现A是单调增的了
那就结果会是Ai+1是max然后Ai是min,那就Ai=Bi了
所以我们只要找一个地方断开,断开的值A就=B就好了
另外一个鸭,如果要合法就还要保证余数<=除数是趴
那我们怎么保证余数<=除数啊!
现在我们已经知道Ai=Bi并且Ai是min了
那只要Bi是max就成立辣!
好了那就做完了!只是剩几个细节交代一下
1) 如果Bi的前一个Bi-1也是max怎么办,那样就会导致余数=除数就非法了嘛
那我们就改一下变成i-1=i,好辣
那如果再往前推一个,就继续往前走
那如果Bi全部相等呢
那就不成立了嘛,比较显然?(唯一一个例外就是,B全部=0那就只要A全部相等就好辣!
2) 还有一个是,不想写了回家写咕咕咕
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i) const ll N=;
ll n,a[N],b[N],stp,nw; inline ll read()
{
char ch=getchar();ll x=;bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
} int main()
{
n=read();rp(i,,n){b[i]=read();if(b[i-]<b[i] && i!= && b[i]!=)stp=i;}if(b[n]<b[] && b[]!=)stp=;nw=stp-;a[stp]=b[stp];
if(!stp)
{
if(b[]==){printf("YES\n");rp(i,,n)printf("1 ");}
else printf("NO\n");
return ;
}
while(nw!=stp)
{if(nw<)nw=n,a[nw]=a[]+b[nw];else a[nw]=a[nw+]+b[nw];--nw;}
printf("YES\n");rp(i,,n)printf("%lld ",a[i]);
return ;
}
这儿是WA在了第五个点的代码QwQ
CF1028E Restore Array 构造的更多相关文章
- Codeforces 1028E Restore Array 构造
我发现我构造题真的不会写, 想了好久才想出来.. 我们先把n = 2, 所有数字相等, 所有数字等于0的都特判掉. 找到一个b[ i ] > b[ i - 1 ]的位置把它移到最后一个位置, 并 ...
- Codeforces Round #181 (Div. 2) A. Array 构造
A. Array 题目连接: http://www.codeforces.com/contest/300/problem/A Description Vitaly has an array of n ...
- CodeForces 404C Restore Graph (构造)
题意:让人构造一个图,满足每个结点边的数目不超过 k,然后给出每个结点到某个结点的最短距离. 析:很容易看出来如果可能的话,树是一定满足条件的,只要从头开始构造这棵树就好,中途超了int...找了好久 ...
- Codeforces 1028E. Restore Array
题目直通车:http://codeforces.com/problemset/problem/1028/E 解法:设原数组为ar[],求ar中的最大值的下标ins,依次向前遍历一遍,每一个答案值都为前 ...
- 原生JS:Array对象详解
Array对象 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ...
- Object类型与Array类型
总结--JS中的引用类型: Object类型,Array类型,Boolean类型,Number类型,String类型,Date类型, Function类型,RegExp类型,单体内置对象(Global ...
- C++ Built-In Array 的语义
C++ 编译花了大量精力使得class和原始类(primitive types)的用法一致.比如array的应用: A a[100]:// A is class int b[100]: 虽然a是用户定 ...
- 二 Array 数组常用操作方法
数组链接 Array 构造上的方法 一.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable) ...
- 07--STL序列容器(Array)
一:Array了解 array<T,N> 模板定义了一种相当于标准数组的容器类型.它是一个有 N 个 T 类型元素的固定序列.除了需要指定元素的类型和个数之外,它和常规数组没有太大的差别. ...
随机推荐
- 【Java面试题】46 描述一下JVM加载class文件的原理机制?
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类. 由于Java的跨平台性,经过 ...
- 清理SYSAUX表空间的WRH$_LATCH_CHILDREN表
周六 被突然起来的短信 轰醒. 一看有63条短信. 都是来之与监控中的.有关表空间大小超过某个警戒值. 发现 SYSAUX表空间超过了15GB 通过以下代码查看SYSAUX表空间的功能占用情况 SEL ...
- Webpack vs Gulp(转载)
理想的前端开发流程 在说构建工具之前得先说说咱期望的前端开发流程是怎样的? 写业务逻辑代码(例如 es6,scss,pug 等) 处理成浏览器认识的(js,css,html) 浏览器自动刷新看到效果 ...
- Oracle:create pfile from spfile:rac下要小心该操作啊!
默认在原位置创建一个pfile的ora初始化参数文件!! 这在rac下会带来问题,因为rac下,当使用asm存储时,instance的启动参数文件就是pfile(其内容是指向一个spfile).如果不 ...
- 再不学会这些技巧,你就OUT了!
俗话说的好:技多不压身!这句话真是一点都没错,尤其是在21世纪的今天,作为老师的你,如果不会使用下面所要说的这款神器,恐怕你就像玩游戏一样,要被get out!那到底是什么呢?它就是现在正在全国初高中 ...
- Matlab中imread函数使用报错“不应为MATLAB 表达式”分析
问题描述: 使用imread读取特定路径下的文件时,会提示出错! >> mytest错误: 文件:mytest.m 行:10 列:87不应为 MATLAB 表达式. 出错行: Images ...
- 上千万或上亿数据(有反复),统计当中出现次数最多的N个数据. C++实现
上千万或上亿的数据,如今的机器的内存应该能存下.所以考虑採用hash_map/搜索二叉树/红黑树等来进行统计次数. 然后就是取出前N个出现次数最多的数据了,能够用第2题提到的堆机制完毕. #inclu ...
- 超全面的JavaWeb笔记day15<mysql数据库>
1.数据库的概述 2.SQL 3.DDL 4.DML 5.DCL 6.DQL MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优 ...
- python2.0 s12 day8 _ socketserver学习
Socket 概念 一个socket就是一个点对点的链接.当今,大多数的通信都是基于Internet Protocl,因此大多数的网络Socket都是Internet Protocl(互联网)的通信( ...
- Python 入门(五)条件判断和循环
if语句 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if age > ...