zoukankan      html  css  js  c++  java
  • P1003 铺地毯

    P1003 铺地毯<<点击查看题目=w=

    本来想的是扫一遍,然后完美爆掉了内存

    原代码:

    #include<bits/stdc++.h>
    #define MAXN 10005
    using namespace std;
    
    int n,x,y;
    int ans[MAXN][MAXN];
    struct ditan
    {
        int a,b,g,k;
    }di[MAXN];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>di[i].a >>di[i].b >>di[i].g >>di[i].k ;
        cin>>x>>y;
        for(int i=1;i<=n;i++)
            for(int j=0;j<=di[i].g ;j++)
                for(int l=0;l<=di[i].k ;l++)
                    ans[di[i].a +j][di[i].b +l]=i;
        if(ans[x][y])
            cout<<ans[x][y]<<endl;
        else
            cout<<"-1"<<endl;
        return 0;
    }

    好的可以开始重新写了

    那我不开这个二维数组就行了= =直接拿坐标来存。

    先写个函数判断目标点是否被地毯覆盖

    int qujian(int a,int b,int c )//b<=c
    {
        if(a>=b&&a<=c)    return 1;
        else return 0;
    }

    然后从后往前判断目标点是否被地毯覆盖;

    #include<bits/stdc++.h>
    #define MAXN 10005
    using namespace std;
    
    int n,x,y;
    int qujian(int a,int b,int c )//b<=c
    {
        if(a>=b&&a<=c)    return 1;
        else return 0;
    }
    struct dtt
    {
        int a,b,g,k;
    }dt[MAXN];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>dt[i].a >>dt[i].b >>dt[i].g >>dt[i].k ;
        cin>>x>>y;
        int i;
        for( i=n;i>=1;i--)
            if(qujian(x,dt[i].a ,dt[i].a +dt[i].g )&&qujian(y,dt[i].b,dt[i].k +dt[i].b )) break;
                
        if(i) 
            cout<<i<<endl;
        else
            cout<<"-1"<<endl;
        return 0;
    }
  • 相关阅读:
    Mac音频播放
    Mac开发
    CoreFoundation对象的内存管理
    蓝牙收发数据长度的问题
    Android音视频之AudioTrack播放音频(二)
    Android音视频之AudioRecord录音(一)
    wav格式文件、pcm数据
    自定义view 波浪效果
    git 常用命令
    markdown 基本语法
  • 原文地址:https://www.cnblogs.com/lizinuo/p/9455070.html
Copyright © 2011-2022 走看看