Codeforces 416D Population Size
题意: 一共n个数, 每个-1都可以变成一个正数, 现在要求最少数目的等差子序列,并且在这个子序列必须要连着截取一段,不能分开截取。 样例1: 8 6 4 2 1 4 7 10 2 可以分成 { 8 6 4 2} {1 4 7 10 } {2} 3个等差子序列。
题解: 每一个序列都尽可能有更多的个数,贪心的去取就好了。
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 2e5+;
ll n;
ll a[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
while(cin >> n)
{
for(int i = ; i <= n; i++)
cin >> a[i];
a[n+] = -;
bool star = , ok = ;
ll cnt = , d = , ans = ;
for(int i = ; i <= n; i++)
{
if(a[i] == - && !ok && star)
cnt++;
else if(a[i] == - && ok)
{
if(a[i-] + d > ) a[i] = a[i-] + d;//如果前面有等差序列
else ans++, cnt = , star = , ok = ;//那么就将这个-1放进去
}
else if(a[i] == - && !star)
{
int j = i+;
while(a[j] == -) j++;
if(a[j] == -)
break;
ll dis = j+-i;
ll diff = a[j] - a[i-];
if(diff % dis == )// a[i-1]!=-1 a[j]!=-1 且有差等
{ //那么a[i]-a[j-1]内的-1都可以被代替成合法数
ok = ;
d = diff / dis;
i = j;
}
else ok = , star = , i = j-, ans++;
}
else if(a[i] != - && cnt)
{
int j = i+;
while(a[j] == -) j++;
if(a[j] == -) break;
ll dis = j-i;
ll diff = a[j]-a[i];
if(diff % dis == )
{
d = diff / dis;
if(a[i]-d*cnt > ) ok = , star = , i = j;
else i = j-, ok = , star = , ans++;
}
else i = j-, ok = , star = , ans++;
cnt = ;
}
else if(star)
star = ;
else if(!ok)
d = a[i] - a[i-], ok = ;
else if(a[i-]+d != a[i])
ans++, star = , ok = , i--;
}
cout << ans + << endl;//最后答案要加一,因为最后至少有一个序列
}
return ;
}
Codeforces 416D Population Size的更多相关文章
- CodeForces 416D (贪心)
Problem Population Size 题目大意 给一个长度为n的序列,由 -1 和正整数组成,-1表示任意的正整数. 将序列分成若干段,使得任意段都是等差数列,求最少段数. 解题分析 可以发 ...
- Population Size CodeForces - 416D (贪心,模拟)
大意: 给定$n$元素序列$a$, 求将$a$划分为连续的等差数列, 且划分数尽量小. $a$中的$-1$表示可以替换为任意正整数, 等差数列中必须也都是正整数. 贪心策略就是从前到后尽量添进一个等差 ...
- Evolutionary Computing: 5. Evolutionary Strategies(1)
resource: Evolutionary computing, A.E.Eiben Outline What is Evolution Strategies Introductory Exampl ...
- 加州大学伯克利分校Stat2.2x Probability 概率初步学习笔记: Section 5 The accuracy of simple random samples
Stat2.2x Probability(概率)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: FINAL
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 4 Dependent Samples
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 3 One-sample and two-sample tests
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 2 Testing Statistical Hypotheses
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 1 Estimating unknown parameters
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
随机推荐
- git项目版本处理--远程分支重新拉取本地代码如何处理
最近在eclipse 上用git拉取分支,提交代码因为提交代码提交了一些配置文件造成 后续同事提交代码一直出现代码冲突问题 项目老大又重新拉取了一条代码 同样的分支名字 当时有点蒙不知道接着怎么弄:场 ...
- str_replace导致的注入问题汇总
研究了下replace的注入安全问题. 一般sql注入的过滤方式就是引用addslashes函数进行过滤. 他会把注入的单引号转换成\',把双引号转换成\",反斜杠会转换成\\等 写一段ph ...
- Java匹马行天下之J2EE框架开发——Spring—>用IDEA开发Spring程序(01)
一.心动不如行动 一.创建项目 *注:在IDEA中我创建的Maven项目,不了解Maven的朋友可以看我之前的博客“我们一起走进Maven——知己知彼”,了解Maven后可以看我之前的博客“Maven ...
- prometheus-kafka-exporter部署
chart地址:https://gkarthiks.github.io/helm-charts/charts/prometheus-kafka-exporter/ 1.下载chart $ helm r ...
- 【Java例题】5.1 多项式计算
1. 计算下列多项式的值. pn=an*x^n+...+a1*x+a0其中,"^"表示乘方. x.n以及ai(i=0,1,...,n-1)由键盘输入. package chapte ...
- 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装
标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...
- eclipse安装STS插件遇到的问题
eclipse安装STS插件 第一次接触springboot,对于用惯了eclipse写代码的人来说,接受IDEA确实还要多花点时间去改变下,因为IDEA确实会节省下不必要的写代码时间.废话少说,直接 ...
- 从0到1发布一个npm包
从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...
- vue 异步加载远程组件(支持编译less语法)
本代码已组件化,可以直接使用. 说明:本组件可以直接解析.vue文件,为了支持less语法解析,在组件中引入less.js,可在less官网下载. 组件代码 <template> < ...
- js-EventLoop
1.浏览器事件环 eventLoop是由js的宿主环境(浏览器)来实现的 事件循环可以简单的描述为以下四个步骤 1.函数入栈,当Stack中执行到异步任务的时候,就将他丢给WebAPIs,接着执行同步 ...