zoukankan      html  css  js  c++  java
  • Seat taking up is tough(hdu 3262 模拟题 easy

    http://acm.hdu.edu.cn/showproblem.php?pid=3262

    题意 :占位置 必须连续 在这个条件下找到最左边的舒适值最大(因为自己坐)

    如果占不到连续的p个 那么就只占一个自己的位置

    都占不到输出-1

    题解:就单纯for循环 一行行找过去 一行里面有(列数-要占的连续位置数+1)种连续的情况,每种排查过去 如果都是空位置就可以占,还要设个maxx找到最大值

    #include<bits/stdc++.h>
    using namespace std;
    struct node
    {
        int idd,time,h,m,q;
    }a[55];
    bool cmp(node x,node y)
    {
        return x.time<y.time;
    }
    int mp[55][55];
    int main()
    {
        int i,j,n,m,k;
        while(scanf("%d%d%d",&n,&m,&k),n||m||k)
        {
            memset(mp,-1,sizeof(mp));
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    scanf("%d",&mp[i][j]);
                }
            }
            for(i=1;i<=k;i++)
            {
                scanf("%d:%d %d",&a[i].h,&a[i].m,&a[i].q);
                a[i].idd=i;
                a[i].time=a[i].h*60+a[i].m;
            }
            sort(a+1,a+1+k,cmp);//注意 排序之后 输出要按原输入顺序输出
            vector<int>ve[55];
            for(i=1;i<=k;i++)
            {
                int p=a[i].q;
                int maxx=-0x3f3f3f3f;
                int maxydw1=0,maxydw2=0;
                for(j=1;j<=n;j++)
                {
                    int gs=m-p+1;
                    for(int o=1;o<=gs;o++)
                    {
                        int f=1;
                        for(int q1=o;q1<=o+p-1;q1++)//一开始这里写错了  找了好久
                        {
                            if(mp[j][q1]==-1)f=0;
                        }
                        if(f==1&&mp[j][o]>maxx)
                        {
                            maxx=mp[j][o];
                            maxydw1=j;
                            maxydw2=o;
                        }
                    }
                }
                if(maxydw1!=0)
                {
                    int po=maxydw2+p-1;
                    for(int o=maxydw2;o<=po;o++)
                    {
                        mp[maxydw1][o]=-1;
                    }
                    ve[a[i].idd].push_back(maxydw1);
                    ve[a[i].idd].push_back(maxydw2);
                }
                else
                {
                    int mx=0,my=0,maxxx=-0x3f3f3f3f;
                    for(int q1=1;q1<=n;q1++)
                    {
                        for(int q2=1;q2<=m;q2++)
                        {
                            if(mp[q1][q2]!=-1&&mp[q1][q2]>maxxx)
                            {
                                maxxx=mp[q1][q2];
                                mx=q1,my=q2;
                            }
                        }
                    }
                    if(mx!=0)ve[a[i].idd].push_back(mx),ve[a[i].idd].push_back(my),mp[mx][my]=-1;
                    else ve[a[i].idd].push_back(-1);
                }
            }
            for(i=1;i<=k;i++)
            {
                if(ve[i].size()==1)cout<<-1<<endl;
                else cout<<ve[i][0]<<" "<<ve[i][1]<<endl;
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    RecycleView使用心得【2】
    URL解析
    CSS 动画总结
    包含块 width 和 height 值的总结
    JS 获取页面大小
    常见跨域方法原理及其用例
    CSS 计数器
    JS 对象总结
    JS 原型以及原型链
    关于未能找到源文件“.NETFramework,Version=v4.0.AssemblyAttributes.cs”问题
  • 原文地址:https://www.cnblogs.com/ydw--/p/11348287.html
Copyright © 2011-2022 走看看