P1034 [NOIP2002 提高组] 矩形覆盖 day20(AC100寄
三下乡好累呜呜
晚上还是回来补了这道昨天开的题 话说我好菜 这种题都要做半天
原因竟是我不会剪枝 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寄相关推荐
- P1033 [NOIP2002 提高组] 自由落体
P1033 [NOIP2002 提高组] 自由落体 题目 在高为H的天花板上有n个小球,体积不计,位置分别为0,1,2,-,n-10,1,2,-,n−1.在地面上有一个小车(长为L,高为K,距原点距离 ...
- noip2002提高组题解
再次280滚粗.今天早上有点事情,所以做题的时候一直心不在焉,应该是三天以来状态最差的一次,所以这个分数也还算满意了.状态真的太重要了. 第一题:均分纸牌 贪心.(昨天看BYVoid的noip2001 ...
- 洛谷:P1033 [NOIP2002 提高组] 自由落体 C++详解
题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,⋯,n−1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公式为 d=0.5×g ...
- [NOIP2002] 提高组 洛谷P1031 均分纸牌
题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...
- P1032 [NOIP2002 提高组] 字串变换
展开 题目背景 本题疑似错题,不保证存在靠谱的多项式复杂度的做法.测试数据非常的水,各种做法都可以通过,不代表算法正确.因此本题题目和数据仅供参考. 题目描述 已知有两个字串 A,BA,B 及一组字串 ...
- 洛谷 P1034 矩形覆盖
P1034 矩形覆盖 题目描述 在平面上有nn个点(n \le 50n≤50),每个点用一对整数坐标表示.例如:当 n=4n=4 时,44个点的坐标分另为:p_1p1(1,11,1),p_2p2( ...
- 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)
1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...
- 洛谷P1003 铺地毯 noip2011提高组day1T1
洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
最新文章
- php mysql zend linux_在Linux系统中安装Apache+MySQL+php+phpMyAdmin+Zend
- Android CameraSurfaceView在SurfaceView上实现拍照,视频录像
- 修改选中_win7文件名称如何批量修改
- 图数据集之cora数据集介绍 --- 适用于GCN任务
- [html] 在主框架下引入的iframe,如果检测这个iframe是否能打开,如果打不开则跳到404页面
- 怎样在PropertySheet中添加按钮
- 结对编程项目的过程记录与收获
- 开发人员不得不知的MySQL索引和查询优化
- GDB的工作原理及skyeye远程调试
- Threejs初级教程
- “五小时定律”:巴菲特受益一生的生活习惯
- 苹果MacBook Air M2开箱测评 M2版MacBook Air真实体验感受
- 计算几何基础--线段的性质
- Php 股票系统,利用PHP命令行模式采集股票趋势信息
- UUID的含义及实现原理
- 新手上路有哪些开车技巧 , 很实用!
- 2021年知到网课《艾滋病性与健康》第一单元考试答案
- 每天小练笔8-模拟进程调度
- Halcon解决方案指南(16)一维码识别
- hcl和oracle支持什么电脑,H3C HCL模拟器使用Host通信,你做过吗?