zoukankan      html  css  js  c++  java
  • 安排电影院座位——搜索 Codeforces Beta Round #10 B Cinema Cashier

    给你电影院长宽K
    然后给你N给问题请你分配位子
    要求权值最小
    在权值相同时按I取最小
    还是相同就按J最小
    暴力搜索下就行
    不难,但是用等差公式算时没考虑周到。。。
    View Code
    #include<stdio.h>
    #include
    <math.h>
    #include
    <string.h>

    int ll[1009];
    bool map[109][109];

    int main()
    {
    int n,len;
    memset(map,
    0,sizeof(map));
    scanf(
    "%d%d",&n,&len);

    int i2=(len+1)/2;
    int j2=(len+1)/2;

    int i,j;

    for(i=1;i<=n;i++)
    {
    scanf(
    "%d",&ll[i]);
    }

    int k,p;

    for(k=1;k<=n;k++)
    {
    int min=99999999;
    int ri,rj;
    for(i=1;i<=len;i++)
    {
    for(j=1;j<=len;j++)
    {
    if(j+ll[k]-1>len) break;

    int ok=0;
    for(p=0;p<ll[k];p++)
    {
    if(map[i][j+p]==1)
    {
    j
    =j+p;
    ok
    =1;
    break;
    }
    }
    if(ok==0)
    {
    int all=0;
    if(j+ll[k]-1<=j2)
    {
    all
    =(2*j2-2*j-ll[k]+1)*ll[k]/2+abs(i-i2)*ll[k];
    }
    else if(j>=j2)
    {
    all
    =(2*j-2*j2+ll[k]-1)*ll[k]/2+abs(i-i2)*ll[k];
    }
    else
    {
    all
    =(j2-j)*(j2-j+1)/2+(j+ll[k]-1-j2)*(j+ll[k]-j2)/2+abs(i-i2)*ll[k];
    }

    if(min>all)
    {
    min
    =all;
    ri
    =i;
    rj
    =j;
    }
    }
    }
    }

    if(min==99999999)
    {
    printf(
    "-1\n");
    }
    else
    {
    printf(
    "%d %d %d\n",ri,rj,rj+ll[k]-1);
    for(p=0;p<ll[k];p++)
    {
    map[ri][rj
    +p]=1;
    }
    }
    }
    }

      

  • 相关阅读:
    迭代器与生成器
    函数
    Java多线程
    JVM垃圾回收
    JVM内存模型
    面向对象的特征和原则
    Java代码规范
    安装yum
    虚机ping:www.baidu.com报错
    创建好centos7虚拟机之后连xshell连不上虚机
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2109928.html
Copyright © 2011-2022 走看看