CF48C [The Race]

发布时间 2023-10-11 22:14:31作者: yhx0322

Problem

题目简述

现有 \(n\) 个已经加过油的加油站,如果当前剩余油量 \(< 10\) 升,则会加 \(x\) 升的油。

初始状态下,有 \(x\) 升油。每个加油站之间的距离为 \(100\) 米,耗油量为 \(10\) 升。

思路

首先,从左向右求出能到达的编号最小的车站,记为 \(mi\) ,然后在从右向左求出能到的的编号最大的车站,记为 \(ma\)

初始化:

mi = a[1];ma = a[1] + 1;

向下取整

Min = floor(mi); Max = floor(ma);

注意特判!!!

if(ma == Max) Max--;

代码

#include <bits/stdc++.h>


using namespace std;


const int N = 1e3 + 10;

int n;
int a[N];

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
	double mi = a[1], ma = a[1] + 1;
	for(int i = 2; i <= n; i++) {
		mi = max(mi, a[i] * 1.0 / i);
		ma = min(ma, (a[i] + 1) * 1.0 / i);
	}
	mi *= (n + 1), ma *= (n + 1);
	int Min = int(mi), Max = int(ma);
	if (ma == Max) Max--;
	if (Max != Min) {
		printf("not unique");
		return 0;
	}
	printf("unique\n%d",Max);
	return 0;
}