思路:

算法一:可以n^2找出每个点的权值,然后n^2做完,预计得分10

算法二:随机找点然后每次找最高。。貌似只有10分?然而考试的时候煞笔了,边界设成inf。。

算法三:随机找几个点,然后随机爬山,听说有50~70

算法四:考虑将列分治,每次分成2部分,找出每部分边界的最大值,判断最大值左边和右边的大小,然后往大的那一边递归,预计得分70

算法五:不仅将列分治,并且将行分治,将一个n*n的矩阵划分,然后递归找,预计得分100

 #include<bits/stdc++.h>
#include"MXPOINT.h"
using namespace std;
int mp[][];
int ask(int x,int y){
if (!mp[x][y]) return mp[x][y];
else
if (x<||x>n||y>m||y<) return mp[x][y]=-;
else return mp[x][y]=ASK(x,y);
}
bool check(int x,int y){
if (mp[x][y]<=mp[x+][y]) return ;
if (mp[x][y]<=mp[x][y+]) return ;
if (mp[x][y]<=mp[x-][y]) return ;
if (mp[x][y]<=mp[x][y-]) return ;
return ;
}
pair<int,int>find(int lx,int rx,int ly,int ry){
if ((rx-lx)<=&&(ry-ly)<=){
for (int i=lx;i<=rx;i++)
for (int j=ly;j<=ry;j++)
if (check(i,j)) return make_pair(i,j);
assert();
}
int mxed=,idx,idy;
for (int i=lx-;i<=rx+;i++)
for (int j=ly-;j<=ry+;j++){
if ((int)(i>=lx&&i<=rx)+(int)(j>=ly&&j<=ry)==) continue;
if (ask(i,j)>mxed){
mxed=ask(i,j);
idx=i;
idy=j;
}
}
if (rx-lx+>ry-ly+){
int mid=(lx+rx)>>;
int mx=;
for (int i=ly;i<=ry;i++) mx=std::max(mx,ask(mid,i));
if (mx<mxed){
if (idx<mid) return find(lx,mid-,ly,ry);
else if (idx==mid) assert();
else return find(mid+,rx,ly,ry);
}
for (int i=ly;i<=ry;i++)
if (mx==ask(mid,i)){
int p1=ask(mid-,i),p2=ask(mid+,i);
if (check(mid,i)) return make_pair(mid,i);
else
if (p1>mx&&mx>p2) return find(lx,mid-,ly,ry);
else
if (p1<mx&&mx<p2) return find(mid+,rx,ly,ry);
else assert();
}
}else{
int mid=(ly+ry)>>;
int mx=;
for (int i=lx;i<=rx;i++) mx=std::max(mx,ask(i,mid));
if (mx<mxed){
if (idy<mid) return find(lx,rx,ly,mid-);
else if (idy==mid) assert();
else return find(lx,rx,mid+,ry);
}
for (int i=lx;i<=rx;i++)
if (mx==ask(i,mid)){
int p1=ask(i,mid-),p2=ask(i,mid+);
if (check(i,mid)) return make_pair(i,mid);
else
if (p1>mx&&mx>p2) return find(lx,rx,ly,mid-);
else
if (p1<mx&&mx<p2) return find(lx,rx,mid+,ry);
else assert();
}
}
}
pair<int,int> FINDMXPOINT(){
memset(mp,,sizeof mp);
return find(,,,);
}

NOI十连测 第四测 T3的更多相关文章

  1. NOI十连测 第四测 T2

    思路:线段树套可持久化treap,可持久化treap我还是第一次听说.. 改题的时候没看数据范围..乱开数组T_T #include<algorithm> #include<cstd ...

  2. NOI十连测 第四测 T1

    思路:首先每个蚂蚁移速相同,而且碰到就转头,这其实等价于擦肩而过! 看到2n个数互不相同就觉得方便多了:枚举每个数字往左或者往右作为最慢,然后考虑其他蚂蚁有多少种走路方向. (1),走的距离大于m/2 ...

  3. <转>二十问全链路压测干货汇总(上)

    本文转载自:微信公众号-数列科技<二十问全链路压测干货汇总(上)> 最近几年全链路压测无疑成为了一个热门话题,在各个技术峰会上都可以看到它的身影. 一些大型的互联网公司,比如阿里巴巴.京东 ...

  4. 「NOI十联测」深邃

    「NOI十联测」深邃 要使得最大的连通块最小,显然先二分答案. 先固定1结点为根. 对于一个果实,显然是先处理子树中未分配的点,再向外延伸. 每个结点记录一个\(si[]\),表示子树中未分配的点数, ...

  5. 「NOI十联测」奥义商店

    「NOI十联测」奥义商店 若lzz想花费最少的钱,那么显然要选择数目较少的颜色. 先考虑暴力的写法. 每次向两边统计,每个物品要求被买的概率可以由上一个物品推出. now=1;//now 被买概率 M ...

  6. 「NOI十联测」黑暗

    「NOI十联测」黑暗 \(n\) 个点的无向图,每条边都可能存在,一个图的权值是连通块个数的 \(m\) 次方,求所有可能的图的权值和.(n≤30000,m≤15) 令\(ans[n][m]\)为n个 ...

  7. NOI十连测 第六测 T3

    思路:考试的时候我非常地**,写了圆并,然后还TM写了半平面交和三角剖分,虽然只有30分..但是看在我写了500行的份上还是挂着吧.. #include<cstdio> #include& ...

  8. NOI十连测 第五测 T2

    思路:考虑建立可持久化线段树,第一层维护的是i这个位置的next位置,第二层,维护的是接下来走这个字符会到哪个节点. 感觉很巧妙啊,不愧是Claris #include<algorithm> ...

  9. NOI十连测 第六测 T1

    思路: 用treap动态维护,记一个sum1,sum2,注意!,写treap如果有删除操作,千万不能把权值相同的分开来..,这在删除的时候会进入死循环,这是一个惨痛的教训... #include< ...

随机推荐

  1. LeetCode_Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 ...

  2. windows 守护进程

    use Win32::Process::Info; while (1==1){ use Sys::Hostname; use HTTP::Date qw(time2iso str2time time2 ...

  3. 【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析

    原文网址:http://www.cnblogs.com/zh-ya-jing/p/4396918.html 为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体 ...

  4. 微信开放JS-SDK,助力网页开发

    From:http://mp.weixin.qq.com/s?__biz=MjM5NDAwMTA2MA==&mid=209208141&idx=1&sn=1f075212b34 ...

  5. pyqt 同时勾选多个items(网友提供学习)

    框选多个item之后,用空格键可以勾选/去选多个item,效果如下图所示: http://oglop.gitbooks.io/pyqt-pyside-cookbook/list/img/checkbo ...

  6. go - 复合类型 array, slice, map

    Go 语言支持复合类型: 数组:array 切片:slice 指针:pointer 字典:map 通道:chan 结构体:struct 接口:interface 1. array   同一类型数据的集 ...

  7. [Hapi.js] Extending the request with lifecycle events

    Instead of using middlware, hapi provides a number of points during the lifecycle of a request that ...

  8. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系 ...

  9. 对于Android Service 生命周期进行全解析

    应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激 活状态:对于活动,对用户有时候可见,有时候不可见.组件生命周 ...

  10. 使用maven编译的时候提示 maven-source 1.3 中不支持注释请使用 -source 5 或更高版本以启用注释的错误。

    在编译的模块的pom文件中加上 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins ...