IncDec序列:差分+贪心
IncDec序列
题目描述:
给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间[l,r],使下标在这个区间内的数都加一或者都减一。
求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。
输入格式:
第一行输入正整数n。
接下来n行,每行输入一个整数,第i+1行的整数代表ai。
输出格式:
第一行输出最少操作次数。
第二行输出最终能得到多少种结果。
数据范围:
0<n≤10^5,
0≤ai<21474836480≤ai<2147483648
输入样例:
4
1
1
2
2
输出样例:
1
2
解题思路:
随意在[l,r] +1或者-1,具体分一下几种情况:
1. l,r都在中间 2<=l,r<=n。
2.前缀,l==2,2<=r<=n。
3.后缀,r==n,2<=l<=r。
4.全部,l==2,r==n,(无意义)。
修改方案可以是先局部修改,采用1,然后前后修改,采用2,3
操作次数:min(z,f)+abs(z - f)==max(z,f)
方案数:min(z-f)+1
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
#define ll long long
const int N = 100010;
int a[N]; int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]); for (int i = n; i > 0; i--)
a[i] -= a[i - 1]; //倒序求差分数组 ll z = 0, f = 0;
for (int i = 2; i <= n; i++) { //求差分数组中正负值
if (a[i] > 0)z += a[i];
else f -= a[i];
} printf("%lld\n%lld\n", max(z,f), abs(z - f) + 1); return 0;
}
IncDec序列:差分+贪心的更多相关文章
- 【bzoj3043】IncDec Sequence 差分
题目描述 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下 ...
- 100 IncDec序列
IncDec序列 Description 给定一个长度为 n 的数列 a1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中 ...
- 差分+贪心:IncDec序列
原题 题目描述给定一个长度为 n 的数列 a1,a2,…,ana1,a2,…,an,每次可以选择一个区间 [l,r][l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列 ...
- [bzoj3043]IncDec Sequence_差分
IncDec Sequence 题目大意:给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一 ...
- 洛谷P3406 海底高铁[差分 贪心]
题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公元2058年建成.凭借该隧道,从厦门可以乘坐火车直达台湾.博艾和日本,全程只需要4个 ...
- 【BZOJ-1046】上升序列 DP + 贪心
1046: [HAOI2007]上升序列 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3723 Solved: 1271[Submit][Stat ...
- 【NLP】选择目标序列:贪心搜索和Beam search
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
- BZOJ5092 分割序列(贪心)
设si为该序列的异或前缀和,则显然相当于求Σmax{sj+sj^si} (i=1~n,j=0~i).从高位到低位考虑,如果该位si为1,无论sj怎么填都是一样的:如果该位si为0,则sj该位应尽量为1 ...
- BZOJ:5092 [Lydsy1711月赛]分割序列(贪心&高维前缀和)
Description 对于一个长度为n的非负整数序列b_1,b_2,...,b_n,定义这个序列的能量为:f(b)=max{i=0,1,...,n}((b_1 xor b _2 xor...xor ...
随机推荐
- Eclipse设置working set管理项目
由于项目太多,看起来复杂,不容易找到,所以想要按文件夹区分,所以用到workingset. working set是把你这个存储空间的项目在eclipse中进行分类,只是在视图基础上分类,项目还是只有 ...
- Java职业规划
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- Ubuntu install 错误 E:Unable to locate package
今天在 Ubuntu 上执行 sudo apt install sl 命令,结果报错:E:Unable to locate package sl 上网查询了一下,先更新一下 apt-get,执行:su ...
- windows 使用npm安装webpack 4.0以及配置问题的解决办法
输入cmd点击打开 输入node -v 出现nodejs版本号 输入npm -v 出现npm版本号则安装npm安装成功, 2.安装webpack 桌面新建一个webpack-test文件夹,点击进入文 ...
- javascript编写的一个完整全方位轮播图效果
1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- Zeta--S3 Linux使用PCCAM/WEBCAM模式
#include <ZetaCameraInterface.h> #include <ZetaMediaPlayInterface.h> using namespace zet ...
- 初识spark
一. spark 概述 1.是什么: Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.2012年,它是由加州伯克利大学AMP实 验室开源的类 Hadoop MapRedu ...
- 002---Redis
主从复制 主节点负责写数据.从节点负责读数据.主节点定期将数据同步到从节点,从而保证数据的一致性. 一主一从 一主多从 针对"读"较多的场景,"读"由多个从节点 ...
- 20155217 实验四 Android程序设计
20155217 实验四 Android程序设计 任务一: 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号. R.java文件是定义该项目所有资源的 ...
- 20155233 《Java程序设计》实验五 Java网络编程及安全
实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验1 两人一组结对编程: 0. 参考http://www.cnblogs.com/rocedu/p/67 ...