传送门

临近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. SVN——配置和安装

    SVN安装步骤: 所有安装文件下载地址:http://pan.baidu.com/s/1bocNTDl 一.安装01----VisualSVN-Server-3.4.2-x64.msi 文件 直接下一 ...

  2. 前端 head 中mate 详解

    <meta name="viewport" content="width=device-width,height=device-height,initial-sca ...

  3. Rectangles Area Sum

    #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #in ...

  4. window配置nginx+php+mysql

    博客来源: http://www.cnblogs.com/wuzhenbo/p/3493518.html 启用nginx   D:\nginx>nginx.exe 重启 D:\nginx> ...

  5. Android新旧版本Notification

    Android新旧版本Notification 在notification.setLatestEventInfo() 过时了 以前: NotificationManager mn = (Notific ...

  6. 【BZOJ 4568】【SCOI 2016】幸运数字

    写了一天啊,调了好久,对拍了无数次都拍不出错来(数据生成器太弱了没办法啊). 错误1:把线性基存成结构体,并作为函数计算,最后赋值给调用函数的变量时无疑加大了计算量导致TLE 错误2:像这种函数(A, ...

  7. GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

    GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图): GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了 ...

  8. 素数筛 uva 543

    给你一个n求出n由2个奇质因子的和  这2个因子差最大 没有就输出'Goldbach's conjecture is wrong. #include<stdio.h> #include&l ...

  9. 状态压缩codeforces 11 D

    n个点m条边 m条边 求有几个环; #pragma comment(linker, "/STACK:102400000,102400000") #include <iostr ...

  10. 查看本机ip

    视窗+R  然后输入cmd, enter 后再黑色窗口里输入  ipconfig