文章

2

粉丝

70

获赞

2

访问

10.4k

头像
关于怎么都得“69”的问题。
P1739 华东师范大学2020年机试题
发布于2022年2月20日 17:29
阅读数 5.3k

题目是有歧义的。一开始我是按照要照亮所有“段落”来做的,一盏灯可以照亮的距离为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...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发