思路:

算法一:可以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. Web模板大全

    http://www.dede58.com/a/free/ http://down.admin5.com/moban/109507.html http://www.chinaz.com/ http:/ ...

  2. EBS查询用户客户化的文件配置

    select pro.profile_option_name, pro.user_profile_option_name, lev.level_type type, --lev.level_code, ...

  3. android 缓存Bitmap - 开发文档翻译

    由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接 Loading a single bitmap into your user interf ...

  4. mysqldump命令详解(转载)

    1.简介 mysqldump为MySQL逻辑备份工具,产生一系列SQL语句,之后重新执行以产生备份的库.表及数据.也可产生CSV.XML等格式的数据.适用于各类引擎的表. 运行mysqldump需一定 ...

  5. pyqt listwidget下面创建多张图片

    def Photosvisi(self): i=0 self.lists.setIconSize(QtCore.QSize(70,70))#设置显示图片大小 self.lists.setResizeM ...

  6. c++之 数组

    数组的定义 数组用于表示一组数值,例如: char arr[5]; 其中,arr称为"数组变量",简称"数组".它表示5个char型数据,我们把每一个数据称为一 ...

  7. JS~Boxy和JS模版实现一个标准的消息提示框

    面向对象的封装 面向对象一个入最重要的特性就是“封装”,将一些没有必要公开的方法和属性以特定的方式进行组装,使它对外只公开一个接口,外界在调用它时,不需要关注它实现的细节,而只要关注它的方法签名即可, ...

  8. 文件读写IO

    摘要:本文主要总结了以下有关文件读写的IO,系统调用与库函数. 1.初级IO函数:close,creat,lseek,open,write 文件描述符是一个整型数 1.1close 1.2int cr ...

  9. Git 版本回退问题详解

    版本回退 git log    ,  git reset --hard xxxx回退到以前的版本 git reflog,  git reset --hard xxx 回退到将来的版本 现在,你已经学会 ...

  10. 学习笔记DAY2

    Pycharm使用 1.添加模板 file => settings =>Editor=>file and code template => python script => ...