题意略。

思路:这个题目最重要的是那个不等式 a[i] <= a[i+1] <= 2 * a[i]  ,你会发现0 <= a[i+1]  -  a[i] <= a[i],令x = a[i+1] - a[i],那么对于a[i-1]来说,

当x = 0时,abs(x - a[i-1])== a[i - 1];当x = a[i]时,abs(x - a[i - 1])== a[i - 1]。也就是说,abs(x - a[i - 1]) <= a[i - 1]。

从n到1来遍历,我们总是令x = abs(x - a[i - 1]),到最后,0 <= abs(x - a[1]) <= a[1]也就自然满足了。

当x >= a[i - 1]时,我们应该在a[i - 1]前加 '-';反之,我们应该在x前加 '-'。

这个加'-'的过程,我开始是用树状数组区间修改点查询做的,后来发现TLE。由于加 '-' 是对后面整体和个体加的,我们可以开两个数组,一个记录单点,

一个记录整体,到时候遍历就可以达到O(n)的复杂度了。

详见代码:

#include<bits/stdc++.h>
#define maxn 100050
using namespace std;
typedef long long LL; LL a[maxn];
int mark[maxn],t[maxn],n; int main(){
scanf("%d",&n);
for(int i = ;i <= n;++i) scanf("%lld",&a[i]);
LL x = a[n] - a[n - ];
mark[n - ] = -;
for(int i = n - ;i >= ;--i){
if(x < a[i]){
x = a[i] - x;
t[i + ] = ;
}
else{
x -= a[i];
mark[i] = -;
}
}
int sum = ;
for(int i = ;i <= n;++i){
int temp;
sum += t[i];
temp = sum + mark[i];
if(temp < ) temp = ;
printf("%c",(temp & ) ? '-' : '+');
}
printf("\n");
return ;
}

Codeforces 257D的更多相关文章

  1. 【codeforces 257D】Sum

    [题目链接]:http://codeforces.com/problemset/problem/257/D [题意] 给你n个数字; 这n个数字组成的数组满足: a[i-1]<=a[i]< ...

  2. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  3. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  4. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  5. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  6. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  7. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  8. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

  9. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

随机推荐

  1. Certificate downloaded from cloudexpress:11443 is invalid

    问题描述: CertificateManagement : Server is not trusted.Received fatal alert: handshake_failure. Now ins ...

  2. maven依赖问题

    我的一个maven项目A依赖于我的另一个maven项目B,但是maven dependencies中显示的是文件.如下图: 而且项目A部署的时候,部署到tomcat容器的时候也是直接部署的B的编译后的 ...

  3. org.json.JSONObject的optXXX方法

    JSONObject有很多optXXX方法,比如optBoolean,optString,optInt.... 他们的意思是:如果这个JSONObject对象,如果有返回这个属性的值,如果没有返回一个 ...

  4. Notepad++运行Java

    插件NppExec使用 首先要让Notepad++编译和运行Java,前提是电脑里已经配置好了Java的环境 1,安装插件NppExec:解压出来提取NppExec.dll文件放在Notepad++安 ...

  5. adb命令介绍与使用

    DB的概念 adb的全称为Android Debug Bridge,是起到调试桥的作用.通过adb,我们可以在ecplise中方便的通过DDMS来调试Android程序,其实他就是一个debug工具. ...

  6. shell获取字符串长度

    方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 代码如下: echo "abc& ...

  7. 济南清北学堂游记 Day 7.

    完结撒花? 最后的模拟赛与讲题.大家似乎仍然乐在其中,虽然看评测结果,仍然是满地红. 其实到了最后已经是没有多少可写的了..... 一个精彩的地方是晚上填表的时候,群里炸锅了已经.到处都在刷CCL老师 ...

  8. 解决asp.net MVC中 当前上下文中不存在名称“model” 的问题

    在vs2013下打开同事上传的cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等,在视图中也没有智能提示了:但是不影响编译运行,只是开发时候比较麻烦,但在同 ...

  9. PHP中常用操作文件的方法

    文件夹的创建: mkdir系统函数,第一个参数是路径,第二个参数是权限,第三个参数是是否递归创建,默认权限是0777最大权限,在windows下没有所谓的权限,在linux下可以设置权限,如果目录存在 ...

  10. 优雅使用 illuminate/database 包中的 Collection

    优雅使用 illuminate/database 包中的 Collection 或许你很抵抗使用 Laravel , 但是你没有理由不喜欢使用 illuminate/database.这是一个 ORM ...