usaco 5.3.4 Big Barn
来源:互联网 发布:试验数据库 编辑:程序博客网 时间:2024/05/20 04:49
/*ID: daniel.20LANG: JAVATASK: bigbrn*/import java.util.*;import java.io.*;import java.util.logging.Level;import java.util.logging.Logger;class problem2 { StringBuilder sb = new StringBuilder(); int n,t; ArrayList<Integer>[] arr; void solver() throws IOException{ BufferedReader reader = new BufferedReader(new FileReader("bigbrn.in")); StringTokenizer st = new StringTokenizer(reader.readLine()); n = Integer.valueOf(st.nextToken()); t = Integer.valueOf(st.nextToken()); arr = new ArrayList[n+1]; for(int i=0;i<n+1;i++) arr[i] = new ArrayList<Integer>(); for(int i=0;i<t;i++){ st = new StringTokenizer(reader.readLine()); int x = Integer.valueOf(st.nextToken()); int y = Integer.valueOf(st.nextToken()); arr[x].add(y); } int left=1,right=n,mid; int last_possible = -1; while(left<=right){ mid = (left+right)/2; if(search(mid)){ last_possible=mid; left=mid+1; }else{ right=mid-1; } } //BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); sb.append(last_possible); System.out.println(sb.toString()); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("bigbrn.out"))); out.println(sb.toString()); out.close(); System.exit(0); } boolean search(int d){ for(int i=1;i+d-1<=n;i++){ for(int ii=1;ii+d-1<=n;ii++){ int min_x=i,max_x=i+d-1,min_y=ii,max_y=ii+d-1; boolean flag = true; for(int j=min_x;j<=max_x;j++){ for(int k=0;k<arr[j].size();k++){ if(arr[j].get(k)<=max_y&&arr[j].get(k)>=min_y) {flag=false;break;} } if(!flag) break; } if(flag) return true; } } return false; }}public class bigbrn { public static void main(String[] args) throws Exception { problem2 p = new problem2(); p.solver(); }}
题意很简单就是一个矩形内有坑,然后要划出一块正方形,正方形内不能有坑,求最大的正方形
感觉没什么很好的办法,就直接枚举正方形的左上角点,再枚举边长,很明显的边长可以二分答案
枚举左上角的点的复杂度不确定,边长大的左上角点的可能性少,边长小的就要枚举左上角点多次。
另外看到最多肯能有10000个坑-.- 于是可以把坑按X坐标分类,在范围以外的坑就不考虑了,枚举每个坑是不是在当前枚举的正方形内
search函数的N四次方的,但是实际上很明显不会有这么高
然后1A了。。。我就跑过了sample,感觉复杂度会爆还是交了一发,准备先和WA战斗,再看是不是算法错误TLE,结果居然过了!!!现在的我太需要这样的motivation了
0 0
- usaco 5.3.4 Big Barn
- usaco training 5.3.4 Big Barn 题解
- USACO 5.3 Big Barn dp
- 【USACO题库】5.3.4 Big Barn巨大的牛棚
- 【USACO题库】5.3.4 Big Barn巨大的牛棚
- USACO Section 5.3 Big Barn - DP...
- usaco 5.3 Big Barn(简单DP)
- usaco Big Barn
- USACO Big Barn 解题报告
- C++&Pascal&Python——【USACO 5.3.4】——Big Barn
- [动态规划]5.3.4 Big Barn
- Section 5.3 Big Barn
- USACO算法系列——Big Barn
- [usaco]5.4.5 Big Barn题解
- USACO 1997 FALL Big Barn 方形牛棚
- Big Barn
- USACO5.3.4Big Barn
- usaco5.3.4 Big Barn
- Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建
- PCA的一些基本资料 以及MATLAB实现
- 致家驹--祝你愉快
- zb的生日
- 用两个栈实现队列
- usaco 5.3.4 Big Barn
- 涂鸦
- 课本笔记--运营管理(三)
- 关于route命令
- 嵌入式课程设计实践(四)——socket
- [HTTP权威指南读书笔记]第四章—连接管理
- JavaScript入门:003—JS中的变量
- java编码字符集及jdbc连接数据库指定字符集
- 转载:android 使用开源工具ChkBugReport分析Bugreport