传送门

临近NOIp,写一些简单题。

二分+BFS,注意的是要把数组开小点,有效减少memset的时间。

 //OJ 1830
 //by Cydiater
 //2016.9.22
 #include <iostream>
 #include <cstdio>
 #include <cstring>
 #include <string>
 #include <algorithm>
 #include <queue>
 #include <map>
 #include <ctime>
 #include <cmath>
 #include <cstdlib>
 #include <iomanip>
 using namespace std;
 #define ll long long
 #define up(i,j,n)        for(int i=j;i<=n;i++)
 #define down(i,j,n)        for(int i=j;i>=n;i--)
 ;
 const int oo=0x3f3f3f3f;
 ]={,,,,,-,-,-};
 ]={,-,,,-,,,-};
 inline int read(){
     ,f=;
     ;ch=getchar();}
     +ch-';ch=getchar();}
     return x*f;
 }
 ][],N,stx,sty,num[MAXN],top=,leftt,rightt,mid,head,tail,cnt=,remain=;
 pair<int,int>q[MAXN];
 ][],vis[][];
 namespace solution{
     inline bool yes(int num,int low,int high){return num>=low&&num<=high;}
     inline void push(int x,int y){q[++tail]=make_pair(x,y);}
     void init(){
         cnt=;
         memset(ok,,;
         up(i,,N){
             scanf("\n");
             up(j,,N){
                 char ch;scanf("%c",&ch);
                 ok[i][j]=ch==:;
                 cnt+=ok[i][j];
                 if(ch=='P'){
                     stx=i;sty=j;
                 }
             }
         }
         up(i,,N)up(j,,N)height[i][j]=read();
         up(i,,N)up(j,,N)num[++top]=height[i][j];
         sort(num+,num+N*N+);
     }
     bool nxt_check(int low,int high){
         head=;tail=;remain=cnt;
         memset(vis,,sizeof(vis));
         if(yes(height[stx][sty],low,high))push(stx,sty);
         for(;head<=tail;head++){
             pair<int,int> node=q[head];
             int x=node.first,y=node.second;
             ){
                 vis[x][y]=;
                 if(ok[x][y])remain--;
             }else continue;
             );
             up(i,,){
                 int tx=x+dx[i],ty=y+dy[i];
                 &&tx<=N&&ty>=&&ty<=N&&yes(height[tx][ty],low,high))push(tx,ty);
             }
         }
         ;
     }
     bool check(int delta){
         up(i,,N*N)]);
         ;
     }
     int slove(){
         leftt=;rightt=;
         <rightt){
             mid=(leftt+rightt)>>;
             if(check(mid))    rightt=mid;
             else            leftt=mid;
         }
         if(check(leftt))return leftt;
         else            return rightt;
     }
 }
 int main(){
     //freopen("input.in","r",stdin);
     using namespace solution;
     while(scanf("%d",&N)!=EOF){
         init();
         printf("%d\n",slove());
     }
     ;
 }

JZOJ P1830[9.30]送牛奶的更多相关文章

  1. 为什么下载APP,扫描二维码,关注微信公众号,就会送牛奶送小礼品?下载使用量高,会怎样?

    以前的老办法是到处贴广告,电视上,广播上各种宣传. 在互联网时代,企业要盈利,除了不断优化升级自己的产品和服务,大量推广宣传产品,还要懂得用户思维.现在有网站,有APP,有微信,有二维码,可以卖产品, ...

  2. 题解 P1208 【[USACO1.3]混合牛奶 Mixing Milk】

    其实根本没有一楼dalao描述的那么麻烦...... 一楼dalao其实吧,采用了一种纯属模拟的方式. 下面是我的大跃进思想 但是一个个地做减法是不是太慢了?(大跃进思想) 于是我们是不是可以直接进行 ...

  3. 洛谷 P3063 [USACO12DEC]牛奶的路由Milk Routing

    P3063 [USACO12DEC]牛奶的路由Milk Routing 题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 Farmer John's farm ...

  4. Java日期时间API系列39-----中文语句中的时间语义识别(time NLP 输入一句话,能识别出话里的时间)原理分析

    NLP (Natural Language Processing) 是人工智能(AI)的一个子领域.自然语言是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一(来自百度百科). 其中中文更是 ...

  5. 遇见NodeJS:JavaScript的贵人

    在大家的印象中,相当长一段时间里,JavaScript是一门脚本语言,一般不能成为某个项目的担纲主角,作用只是在浏览器里帮忙校验校验输入是不是正确,响应一下鼠标.键盘事件,或者让某个HTML元素动起来 ...

  6. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  7. 写给Android App开发人员看的Android底层知识(7)

    (十二)ContentProvider (1)ContentProvider是什么? ContentProvider,简称CP. 做App开发的同学,尤其是电商类App,对CP并不熟悉,对这个概念的最 ...

  8. Angular学习笔记—RxJS与Observable(转载)

    1. Observable与观察者模式的关系 其实这里讲的Observable就是一种观察者模式,只不过RxJS把Observable结合了迭代模式以及附件了很多的operator,让他变得很强大,也 ...

  9. [学习笔记]一个实例理解Lingo的灵敏性分析

    一个实例理解Lingo的灵敏性分析     线性规划问题的三个重要概念:    最优解就是反应取得最优值的决策变量所对应的向量.    最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非 ...

随机推荐

  1. 新时代的coder如何成为专业程序员

    在移动互联网"泛滥"的今天,越来越多非专业(这里的非专业指的是非计算机专业毕业的程序员)程序员加入到了IT行业中来了,可能是因为移动互联网的火爆导致程序员容易就业而且工资很高,可能 ...

  2. EXCEL时间日期转换为常规字符显示

    当我们做报表导入的时候,我们不得不思考这样一个问题,遇到的数据是时间格式的,而在EXCEL中,时间格式的单元格实际上是以1900年以后来计算的,例如,1900年是闰年(显然可以被4整除),那么1900 ...

  3. 使用D3绘制图表(6)--竖直柱状图表

    竖直柱状图的绘制是在水平柱状图的基础上修改的. 1.html代码 <!DOCTYPE html> <html> <head> <meta charset=&q ...

  4. 单链表C/C++实现

    #include <iostream> using namespace std; const int N = 10; typedef int ELEMTYPE; typedef struc ...

  5. Ubuntu里的若干问题解决方案

    1. Ubuntu里出现两个屏幕,并且其中一个是“未知显示器”,无法去除时,可以尝试使用该命令:sudo apt-get install bumblebee-nvidia 2.虚拟机上Ubuntu开机 ...

  6. [转] 使用Spring MVC构建REST风格WEB应用

    原文地址:http://fancy888.iteye.com/blog/1629120 对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理 ...

  7. Hibernate正向工程(实体类-->数据库)

    1,新建实体类News.java package com.hanqi.dao; import java.util.Date; public class News { private Integer i ...

  8. IOS APP开发中View的几种实现方式

    xib文件有以下几个重要的属性: xib文件名 File’s Owner xib文件中的视图的Class xib文件中的视图的Outlet指向 File’s Owner 可以关联到某类,然后通过IBO ...

  9. Spring mvc-异常javax.servlet.ServletException: Could not resolve view with name 'xxx' in servlet with name 'spring'

    最近使用spring mvc开发项目,遇到一个问题: javax.servlet.ServletException: Could not resolve view with name 'ok' in ...

  10. java中会存在内存泄漏吗,请简单描述。

    内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中.Java 使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以 ...