Codeforces 1093C (思维+贪心)
题面
传送门
题目大意:
有一个长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 (思维+贪心)相关推荐
- CodeForces 798D 思维,贪心
CodeForces 798D 题意:长度为 n的两个数组 a[]和 b[],要找出 k ( k<=n/2+1 )个下标,使得在两个数组中这 k个数的和乘上 2 要大于所有数的和. tags: ...
- F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)
https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...
- Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...
- codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...
- CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)
ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...
- codeforces数学1600day4[贪心数学公式推导CodeForces - 1151D ,思维CodeForces - 1085C,数论同余+组合计数 CodeForces - 1056B]
A - Stas and the Queue at the Buffet CodeForces - 1151D 题目大意:就是给你n个人在排队,每个人都有一个ai值和bi值,每个人的不满意度就是f(i ...
- CodeForces - 1339C Powered Addition(思维+贪心)
题目链接:点击查看 题目大意:给出一个由 n 个数组成的数列 a,选择一个最小的 k ,代表可以进行 k 次操作,对于第 t 次操作可以选择任意个位置使得 a[ i ] = a[ i ] + 2^( ...
- CodeForces - 618D Hamiltonian Spanning Tree(思维+贪心)
题目链接:点击查看 题目大意:首先给出n个点,n*(n-1)/2条边组成的无向图,边的权值为y,现在给出一棵连接n个点的树,树上的权值都是x,现在问如何在每个点只遍历一次的情况下走遍n个点,并使一路上 ...
- CodeForces - 353E Antichain(贪心+思维)
题目链接:点击查看 题目大意:给出n个点,用n-1条边连接,第i条边连接着点i与点(i+1)%n,也就是首尾相接组成了一个环,现在0表示点i连到点(i+1)%n的一条有向边,1表示点(i+1)%n连到 ...
最新文章
- [蓝桥] 基础练习 回文数
- python 调用c++返回char*
- PAT甲级1059 Prime Factors :[C++题解]分解质因子
- PLSQL导出触发器代码
- pdf保存如何带批注_带有批注的SpringSelenium测试
- 小顶堆数据结构C/C++代码实现
- 第三十四章 批量印刷书籍
- zenoss(智能监控软件)
- idea下如何正确导入多个module
- 很多人花一大笔钱做APP、小程序
- 服务器端提交form
- [译] Promise A+ 标准
- (工具)政企版WPS-没广告弹窗超简洁
- 中兴盒子第三方软件通用教程安装教程
- Delphi 10.3.1安装cnpack后,出现错误CnWizards_D103R.dll
- 将数字金额转换为对应的中文大写金额
- vue实现简单的日历
- cox回归模型python实现_Cox回归分析及其SPSS操作方法概述
- Counting Stars HDU - 6184
- ble HCI 流控机制
热门文章
- spring in action小结4.1
- 刚体Collider包围测试
- JavaScript 拾碎[一] ECMAScript 简介
- communication with respect to scholars
- Cambridge partner
- find a group of people who want to do similar things with you
- C++2 dimension vector
- 远程桌面Web连接访问及端口更改方法
- Keepalived+Nginx 实现双机热备
- 简单介绍--TOSCA自动化测试工具