题面

传送门

题目大意:

有一个长n(n为偶数)的序列a

已知a满足 \(a_1≤a_2≤⋯≤a_n\)

给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+1}\)

求出序列a (输出任意一种答案即可)

分析

为了保证序列不下降,我们采用贪心的思想,先假设\(a_i=a_{i-1}\),这样给后面的数留有的余地更大

然后计算出\(a_{n-i+1}=b_i-a_i\),如果\(a_{n-i+1}>a_{n-i+1+1}\),即不满足不下降的条件,则进行局部调整

令\(a_{n-i+1}=a_{n-i+1+1}\),重新计算\(a_i=b_i-a_{n-i+1}\) (注,设$a_{n+1}=+\inf $)

由于\(a_{n-i+1}>a_{n-i+2}\),新的\(a_i\)的值会变大,依然满足不下降的条件

该方法的正确性显然,时间复杂度\(O(n)\)

代码

#include<iostream>
#include<cstdio>
#define maxn 200005
#define INF 0x7fffffffffffffff
using namespace std;
int n;
long long a[maxn];
long long b[maxn];
int main(){scanf("%d",&n);for(int i=1;i<=n/2;i++) scanf("%I64d",&b[i]);a[n+1]=INF; for(int i=1;i<=n/2;i++){a[i]=a[i-1];a[n+1-i]=b[i]-a[i];if(a[n+2-i]<a[n+1-i]){a[n+1-i]=a[n+2-i];a[i]=b[i]-a[n+1-i];}}   for(int i=1;i<=n;i++){printf("%I64d ",a[i]);}
}

转载于:https://www.cnblogs.com/birchtree/p/10126769.html

Codeforces 1093C (思维+贪心)相关推荐

  1. CodeForces 798D 思维,贪心

    CodeForces 798D 题意:长度为 n的两个数组 a[]和 b[],要找出 k ( k<=n/2+1 )个下标,使得在两个数组中这 k个数的和乘上 2 要大于所有数的和. tags: ...

  2. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

  3. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

    Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...

  4. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)

    题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...

  5. CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)

    ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...

  6. codeforces数学1600day4[贪心数学公式推导CodeForces - 1151D ,思维CodeForces - 1085C,数论同余+组合计数 CodeForces - 1056B]

    A - Stas and the Queue at the Buffet CodeForces - 1151D 题目大意:就是给你n个人在排队,每个人都有一个ai值和bi值,每个人的不满意度就是f(i ...

  7. CodeForces - 1339C Powered Addition(思维+贪心)

    题目链接:点击查看 题目大意:给出一个由 n 个数组成的数列 a,选择一个最小的 k ,代表可以进行 k 次操作,对于第 t 次操作可以选择任意个位置使得 a[ i ] = a[ i ] + 2^( ...

  8. CodeForces - 618D Hamiltonian Spanning Tree(思维+贪心)

    题目链接:点击查看 题目大意:首先给出n个点,n*(n-1)/2条边组成的无向图,边的权值为y,现在给出一棵连接n个点的树,树上的权值都是x,现在问如何在每个点只遍历一次的情况下走遍n个点,并使一路上 ...

  9. CodeForces - 353E Antichain(贪心+思维)

    题目链接:点击查看 题目大意:给出n个点,用n-1条边连接,第i条边连接着点i与点(i+1)%n,也就是首尾相接组成了一个环,现在0表示点i连到点(i+1)%n的一条有向边,1表示点(i+1)%n连到 ...

最新文章

  1. [蓝桥] 基础练习 回文数
  2. python 调用c++返回char*
  3. PAT甲级1059 Prime Factors :[C++题解]分解质因子
  4. PLSQL导出触发器代码
  5. pdf保存如何带批注_带有批注的SpringSelenium测试
  6. 小顶堆数据结构C/C++代码实现
  7. 第三十四章 批量印刷书籍
  8. zenoss(智能监控软件)
  9. idea下如何正确导入多个module
  10. 很多人花一大笔钱做APP、小程序
  11. 服务器端提交form
  12. [译] Promise A+ 标准
  13. (工具)政企版WPS-没广告弹窗超简洁
  14. 中兴盒子第三方软件通用教程安装教程
  15. Delphi 10.3.1安装cnpack后,出现错误CnWizards_D103R.dll
  16. 将数字金额转换为对应的中文大写金额
  17. vue实现简单的日历
  18. cox回归模型python实现_Cox回归分析及其SPSS操作方法概述
  19. Counting Stars HDU - 6184
  20. ble HCI 流控机制

热门文章

  1. spring in action小结4.1
  2. 刚体Collider包围测试
  3. JavaScript 拾碎[一] ECMAScript 简介
  4. communication with respect to scholars
  5. Cambridge partner
  6. find a group of people who want to do similar things with you
  7. C++2 dimension vector
  8. 远程桌面Web连接访问及端口更改方法
  9. Keepalived+Nginx 实现双机热备
  10. 简单介绍--TOSCA自动化测试工具