博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【uva 1312】Cricket Field(算法效率--技巧枚举)
阅读量:7224 次
发布时间:2019-06-29

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

题意:一个 L*R 的网格里有 N 棵树,要求找一个最大空正方形并输出其左下角坐标和长。(1≤L,R≤10000, 0≤N≤100)

解法:枚举空正方形也就是枚举空矩阵,先要固定一个边,才好继续操作。(P.S.许多类型的题都是这样:先固定一个变量,再比较另外的变量。也就是我之前提到过的“部分枚举”。这种思想在贪心、DP等都常出现,一定要掌握!)所以这题就是先枚举一条边的范围(横坐标),再枚举排序后的点,根据当前枚举的点和之前纵坐标最大的点的纵坐标得到这条边的长度,再比较、更新答案。

P.S.我这题打了2个小时!˚‧º·(˚ ˃̣̣̥᷄⌓˂̣̣᷅ )‧º·˚ 一定要注意细节啊!还有......我的行列是与题目相反着存的。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 const int N=110,D=10010; 9 int n,l,r,m;10 struct node{
int x,y;}a[N];11 int b[N];12 13 int mmin(int x,int y) {
return x
y?x:y;}15 bool cmp(node x,node y)16 {17 if (x.y!=y.y) return x.y
b[j]) continue;//别轻易break49 tmp=mmin(b[j]-b[i],a[k].y-mxy);50 if (tmp>ans) {ans=tmp; tx=b[i]; ty=mxy;}51 if (a[k].x!=b[i] && a[k].x!=b[j]) mxy=a[k].y;52 }53 tmp=mmin(b[j]-b[i],r-mxy);//边界勿漏54 if (tmp>ans) {ans=tmp; tx=b[i]; ty=mxy;}55 }56 printf("%d %d %d\n",ty,tx,ans);57 if (T) printf("\n");58 }59 return 0;60 }

 

转载于:https://www.cnblogs.com/konjak/p/6064907.html

你可能感兴趣的文章
《CUDA C编程权威指南》——2.5 总结
查看>>
《大规模Java平台虚拟化与调优》——第2章 现代化可扩展的数据平台
查看>>
Chrome 加入防篡改系统,可抵御量子计算机攻击
查看>>
程序员编程时喝什么?
查看>>
《Internet 路由结构(第2版•修订版)》一3.2 IP地址空间耗尽问题
查看>>
《数论概论(原书第4版)》一第3章 勾股数组与单位圆
查看>>
Spark的那些外部框架
查看>>
《策略驱动型数据中心——ACI技术详解》一第1章 数据中心架构考虑因素1.1 应用和存储...
查看>>
《I'm a Mac:雄狮训练手册》——1.13 帮助
查看>>
模板or定制 企业如何抉择建站方式?
查看>>
《Python编程快速上手——让繁琐工作自动化》——1.6 程序剖析
查看>>
Linux中的15个‘echo’ 命令实例
查看>>
《Unreal Engine 4蓝图可视化编程》一2.2 制作瞄准镜效果
查看>>
《树莓派用户指南(第3版)》——1.5 关于Model B的PCB版本修订历史
查看>>
《WebGL入门指南》——第1章,第1.3节WebGL原生API
查看>>
《树莓派Python编程入门与实战(第2版)》——3.5 关于Python交互式shell
查看>>
《Android安全技术揭秘与防范》—第2章2.2节安全的发展趋势
查看>>
《AngularJS高级程序设计》——5.6 使用JavaScript运算符
查看>>
Storm入门之附录B
查看>>
vnStatSVG: 流量监控软件 vnStat 最佳 Web 前端
查看>>