文章
2
粉丝
70
获赞
2
访问
10.4k
题目是有歧义的。一开始我是按照要照亮所有“段落”来做的,一盏灯可以照亮的距离为2K。而测试中有一组数据是{1000,5,7,...},一共有1000段和5盏灯,一盏灯可以照亮左右共14段。你用1000/14-5=66.42...,最佳排列都得不到答案的65,而我不管手算还是程序都是69。所以这题需要照亮的是所有的“点”,一盏灯可以照亮的距离为2K+1。换回这题,1001/15-5=61.73...,才有了做出来的可能。
但是这样还是过不了,因为后面还有一个样例是{1000,5,0,...},答案是995而不是996。所以“0”这个点不要算,一共还是N个点。后面贴上两个版本的代码
按段判断:
#include<stdio.h>
#include<string.h>
int main()
{
int N,M,K;
int need;
int next;
int lights[1000];
int i;
int dis;
while(scanf("%d%d%d", &N, &M, &K) != EOF)
{
need = 0;
next = 0; //第一次需要覆盖到 1 这个段
for(i=0; i<M; i++)
{
scanf("%d", &lights[i]);
}
for(i=0; i<M; i++)
{
if(lights[i]-K <= next)
{
;
}else
{
dis = lights[i]-K-next; //缺少灯光米数
need += (dis+2*K-1...
登录后发布评论
暂无评论,来抢沙发