栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1771 Elevator Stopping Plan

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1771 Elevator Stopping Plan

#include <stdio.h># include <string.h># define N 33int n;int tar[N];int ans;int stop;int station[N],result[N];int MIN(int a,int b){    return a>b?b:a;}void init(){    for (int i = 1;i <= n; i ++)    {        scanf("%d",&tar[i]);    }}bool isOK(int time){    int t_st=1,t_ti=0;    int tmp;    stop=0;    for (int i=1;i<=n;i++)    {        if (tar[i] <= t_st) continue;        tmp = t_ti+(tar[i]-t_st)*20;        if (tmp <= time) continue ;        if (t_st == 1)        { tmp = time - t_ti + (4*t_st+20*tar[i]);        }        else        { tmp = time - (t_ti+10) + (4*t_st+20*tar[i]);        }        tmp /= 24;        if (tmp<tar[i]) return false;        if (t_st==1)        { t_ti+= (tmp-t_st)*4;        }        else        { t_ti += 10+(tmp-t_st)*4;        }        t_st = tmp;        stop++; station[stop]=t_st;    }    return true;}void solve(){    ans = tar[n]*4+20*(tar[n]-tar[1]);    result[0]=1; result[1]=tar[n];    int low=0,up=ans-1,mid;    while (low<up)    {        mid = (low+up)/2;        if (isOK(mid))        { {     result[0]=stop;     for (int i=1;i<=stop;i++)     {         result[i] = station[i];     }     ans = mid; } up = mid;        }        else        { low = mid+1;        }    }}void output(){    printf("%dn%d",ans,result[0]);    for (int i=1;i<=result[0];i++)    {        printf(" %d",result[i]);    }    printf("n");}int main(){    while (1)    {        scanf("%d",&n);        if (n == 0) break;        init();        solve();        output();    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号