三下乡好累呜呜

晚上还是回来补了这道昨天开的题 话说我好菜 这种题都要做半天

原因竟是我不会剪枝 hh

我真是个铸币

其实最开始看错题了 

没看到k

想出来了一个理论:肯定我们一个矩形内只有两个点 挺好想的而且与本题无关 那就不证了

这题给的是有k的

那我们dfs时可以想:把n个点放进k个矩阵 这样就完了 

对了还要判断重合 其实我最开始写的那个也可以判断 

是这样的:

map<int,int>mpx;map<int,int>mpy;for(int m=1;m<=k;m++){for(int j=a[m][0];j<=a[m][2];j++){mpx[j]++;if(mpx[j]>=2&&mpy[j]>=2)goto out;}for(int j=a[m][1];j<=a[m][3];j++){mpy[j]++;if(mpy[j]>=2&&mpx[j]>=2)goto out;}}

但是后面因为T了我就想着优化 改成了判断顶点在不在其他矩阵里就好了

a[i][0]=min(a[i][0],x),a[i][1]=min(a[i][1],y);a[i][2]=max(a[i][2],x),a[i][3]=max(a[i][3],y);for(int s=1;s<=k;s++) {for (int m = s+1; m <= k ; m++) {if(a[m][0]==2e9)break;auto x1 = a[s][0], y1 = a[s][1], x2 = a[s][2], y2 = a[s][3];auto x3=min(a[m][0],a[m][2]),y3=min(a[m][1],a[m][3]),x4=max(a[m][2],a[m][0]),y4=max(a[m][3],a[m][1]);if(x1>=x3&&x1<=x4&&y1>=y3&&y1<=y4)goto out;if(x2>=x3&&x2<=x4&&y2>=y3&&y2<=y4)goto out;if(x2>=x3&&x2<=x4&&y1>=y3&&y1<=y4)goto out;if(x1>=x3&&x1<=x4&&y2>=y3&&y2<=y4)goto out;}}

最后附上完整代码!

#include <bits/stdc++.h>
using namespace std;
const int N = 55;
const int M = 5e5+10;
const int mod = 1e9+7;
#define int long long
#define endl '\n'
#define Endl '\n'
#define inf 0x3f3f3f3f3f3f3f3f
#define fast ios::sync_with_stdio(false);cin.tie(nullptr);
int max(int x,int y){return x>y?x:y;}
int min(int x,int y){return x<y?x:y;}
int n,k,a[N][4];
pair<int,int>p[N];
int res=2e9;
void dfs(int area,int step){if(area>=res)return;if(step==n+1){int sum=0;for(int i=1;i<=k;i++){if(a[i][0]==a[i][2]&&a[i][1]==a[i][3])return;sum+=abs((a[i][0]-a[i][2])*(a[i][1]-a[i][3]));}res=min(sum,res);return;}for(int i=1;i<=k;i++){auto x=p[step].first,y=p[step].second;int xq=a[i][0],yq=a[i][1],xp=a[i][2],yp=a[i][3];a[i][0]=min(a[i][0],x),a[i][1]=min(a[i][1],y);a[i][2]=max(a[i][2],x),a[i][3]=max(a[i][3],y);for(int s=1;s<=k;s++) {for (int m = s+1; m <= k ; m++) {if(a[m][0]==2e9)break;auto x1 = a[s][0], y1 = a[s][1], x2 = a[s][2], y2 = a[s][3];auto x3=min(a[m][0],a[m][2]),y3=min(a[m][1],a[m][3]),x4=max(a[m][2],a[m][0]),y4=max(a[m][3],a[m][1]);if(x1>=x3&&x1<=x4&&y1>=y3&&y1<=y4)goto out;if(x2>=x3&&x2<=x4&&y2>=y3&&y2<=y4)goto out;if(x2>=x3&&x2<=x4&&y1>=y3&&y1<=y4)goto out;if(x1>=x3&&x1<=x4&&y2>=y3&&y2<=y4)goto out;}}if(xq!=2e9)dfs(area+abs((a[i][0]-a[i][2])*(a[i][1]-a[i][3]))-abs((xq-xp)*(yq-yp)),step+1);else dfs(area,step+1);out:a[i][0]=xq,a[i][1]=yq,a[i][2]=xp,a[i][3]=yp;}
}
signed main() {fastcin>>n>>k;for(int i=1;i<=n;i++)cin>>p[i].first>>p[i].second;for(int i=0;i<N;i++){a[i][0]=a[i][1]=2e9;a[i][2]=a[i][3]=-2e9;}dfs(0,1);cout<<res<<endl;return 0^0;
}

最后祝自己 周日考试rp++

P1034 [NOIP2002 提高组] 矩形覆盖 day20(AC100寄相关推荐

  1. P1033 [NOIP2002 提高组] 自由落体

    P1033 [NOIP2002 提高组] 自由落体 题目 在高为H的天花板上有n个小球,体积不计,位置分别为0,1,2,-,n-10,1,2,-,n−1.在地面上有一个小车(长为L,高为K,距原点距离 ...

  2. noip2002提高组题解

    再次280滚粗.今天早上有点事情,所以做题的时候一直心不在焉,应该是三天以来状态最差的一次,所以这个分数也还算满意了.状态真的太重要了. 第一题:均分纸牌 贪心.(昨天看BYVoid的noip2001 ...

  3. 洛谷:P1033 [NOIP2002 提高组] 自由落体 C++详解

    题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,⋯,n−1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1​).已知小球下落距离计算公式为 d=0.5×g ...

  4. [NOIP2002] 提高组 洛谷P1031 均分纸牌

    题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

  5. P1032 [NOIP2002 提高组] 字串变换

    展开 题目背景 本题疑似错题,不保证存在靠谱的多项式复杂度的做法.测试数据非常的水,各种做法都可以通过,不代表算法正确.因此本题题目和数据仅供参考. 题目描述 已知有两个字串 A,BA,B 及一组字串 ...

  6. 洛谷 P1034 矩形覆盖

    P1034 矩形覆盖 题目描述 在平面上有nn个点(n \le 50n≤50),每个点用一对整数坐标表示.例如:当 n=4n=4 时,44个点的坐标分另为:p_1p1​(1,11,1),p_2p2​( ...

  7. 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)

    1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...

  8. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

  9. Codevs 1066 引水入城 2010年NOIP全国联赛提高组

    1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...

最新文章

  1. php mysql zend linux_在Linux系统中安装Apache+MySQL+php+phpMyAdmin+Zend
  2. Android CameraSurfaceView在SurfaceView上实现拍照,视频录像
  3. 修改选中_win7文件名称如何批量修改
  4. 图数据集之cora数据集介绍 --- 适用于GCN任务
  5. [html] 在主框架下引入的iframe,如果检测这个iframe是否能打开,如果打不开则跳到404页面
  6. 怎样在PropertySheet中添加按钮
  7. 结对编程项目的过程记录与收获
  8. 开发人员不得不知的MySQL索引和查询优化
  9. GDB的工作原理及skyeye远程调试
  10. Threejs初级教程
  11. “五小时定律”:巴菲特受益一生的生活习惯
  12. 苹果MacBook Air M2开箱测评 M2版MacBook Air真实体验感受
  13. 计算几何基础--线段的性质
  14. Php 股票系统,利用PHP命令行模式采集股票趋势信息
  15. UUID的含义及实现原理
  16. 新手上路有哪些开车技巧 , 很实用!
  17. 2021年知到网课《艾滋病性与健康》第一单元考试答案
  18. 每天小练笔8-模拟进程调度
  19. Halcon解决方案指南(16)一维码识别
  20. hcl和oracle支持什么电脑,H3C HCL模拟器使用Host通信,你做过吗?

热门文章

  1. python关于it审计中的应用
  2. MVC模式在.NET框架中的应用与实现
  3. 图情论文笔记 | 如何开展高质量的新型智库服务
  4. 君君学Linux设备驱动第三天之linux内核简简简介
  5. SAMSON阀门定位器3730-1的操作指南
  6. DataCamp中Intermediate Python之Matplotlib01
  7. 【3D建模干货】国外建模大师精心总结,成为建模高手的必备技巧
  8. 【LeetCode-多线程】1279. 红绿灯路口
  9. LeetCode(多线程)- 1279. 红绿灯路口
  10. centos8——换源