博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO3.1 Shaping Regions(rect1)
阅读量:5914 次
发布时间:2019-06-19

本文共 1158 字,大约阅读时间需要 3 分钟。

hot3.png

        漂浮法:从最上面的矩形开始向下求它颜色的面积 ,直到最下面的大矩形。对每一个矩形,从其位置上浮,碰到在它上面的矩形,它就分裂成几个小矩形,递归模拟上浮过程。

        好像某年有个亚洲区的题和这个很像,在屏幕上的矩形的覆盖,不过那个题最多有26个矩形,可以暴力求解,比这个还简单了。

/*ID:jzzlee1PROB:rect1LANG:C++*///#include
#include
using namespace std;ifstream cin("rect1.in");ofstream cout("rect1.out");long int x1[1010],y1[1010],x2[1010],y2[1010],ans[2510],c[2510];int n,maxc;void color(int l,int r,int s,int d,int k,int col){ while( (k<=n)&&((l>=x2[k])||(r<=x1[k])||(d<=y1[k])||s>=y2[k]) ) k++; if( k>n ) { ans[col]+=(r-l)*(d-s); return; } else { if(l<=x1[k]) { color(l,x1[k],s,d,k+1,col); l=x1[k]; } if(r>=x2[k]) { color(x2[k],r,s,d,k+1,col); r=x2[k]; } if(s<=y1[k]) { color(l,r,s,y1[k],k+1,col); s=y1[k]; } if(d>=y2[k]) { color(l,r,y2[k],d,k+1,col); d=y2[k]; } }} void work() { int i,j; cin>>x2[0]>>y2[0]>>n; x1[0]=0; y1[0]=0; c[0]=1; maxc=0; for(i=1;i<=n;i++) { cin>>x1[i]>>y1[i]>>x2[i]>>y2[i]>>c[i]; if(c[i]>maxc) maxc=c[i]; } for(i=n;i>=0;i--) color(x1[i],x2[i],y1[i],y2[i],i+1,c[i]); for(i=1;i<=maxc;i++) if(ans[i]!=0) cout<
<<" "<
<

转载于:https://my.oschina.net/u/347565/blog/66044

你可能感兴趣的文章
软件开发过程文档清单【转】
查看>>
SSIS包定时执行
查看>>
Linux Shell远程执行命令(命令行与脚本方式)
查看>>
JVM调优的几种策略(转)
查看>>
&&运算符和||运算符的优先级问题 专题
查看>>
[日常] Go语言圣经--作用域,基础数据类型,整型
查看>>
POI导出数据以Excel的方式录入,下载
查看>>
2018-2019-2 20165206 网络攻防技术 Exp5 MSF基础应用
查看>>
spring源码-aop源码-5.1
查看>>
leetcode------Reverse Words in a String
查看>>
Linux下安装MySQLdb模块(Python)
查看>>
redis密码管理
查看>>
ECSHOP的订单状态
查看>>
【jQuery】学习jQuery插件的使用与写法(表单验证插件-validation)
查看>>
Spark入Hbase的四种方式效率对比
查看>>
android 从服务器上获取APK下载安装
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析
查看>>
关于迭代測试的一些思考
查看>>
2017-4-28 ListView控件
查看>>
判断具有某个属性js、jQuery
查看>>