欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Codeforces Round #241 (Div. 2) D

程序员文章站 2022-06-09 21:56:37
...

题目链接:D. Population Size 题意:一些数字,要求分块,使得每一块都是等差数列,但是有些数字是-1,代表任意数字(但是要大于0),问最少需要分几块。 思路:贪心。每次找到相邻两个确定数字,并且记录下第一个数字前有多少个-1,就能确定出公差,然后利

题目链接:D. Population Size


题意:一些数字,要求分块,使得每一块都是等差数列,但是有些数字是-1,代表任意数字(但是要大于0),问最少需要分几块。

思路:贪心。每次找到相邻两个确定数字,并且记录下第一个数字前有多少个-1,就能确定出公差,然后利用公差去判断前面的-1能不能填进去,如果不能ans就多1,然后从第二个确定数字位置开始找,如果可以,就利用公差一直找到能放的最后一个位置,然后下次从那个位置开始找。

细节比较多,代码挫挫的:

#include 
#include 

const int N = 200005;
__int64 n, i, j;
__int64 a[N];

int main() {
	__int64 ans = 0;
	scanf("%I64d", &n);
	for (i = 0; i  0 && s1 > (a[s] - 1) / d) {
			ans++;
			i = e;
			continue;
		}
		__int64 sum = a[s];
		for (j = s + 1; j