NOI十连测 第四测 T3





思路:
算法一:可以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的更多相关文章
- NOI十连测 第四测 T2
思路:线段树套可持久化treap,可持久化treap我还是第一次听说.. 改题的时候没看数据范围..乱开数组T_T #include<algorithm> #include<cstd ...
- NOI十连测 第四测 T1
思路:首先每个蚂蚁移速相同,而且碰到就转头,这其实等价于擦肩而过! 看到2n个数互不相同就觉得方便多了:枚举每个数字往左或者往右作为最慢,然后考虑其他蚂蚁有多少种走路方向. (1),走的距离大于m/2 ...
- <转>二十问全链路压测干货汇总(上)
本文转载自:微信公众号-数列科技<二十问全链路压测干货汇总(上)> 最近几年全链路压测无疑成为了一个热门话题,在各个技术峰会上都可以看到它的身影. 一些大型的互联网公司,比如阿里巴巴.京东 ...
- 「NOI十联测」深邃
「NOI十联测」深邃 要使得最大的连通块最小,显然先二分答案. 先固定1结点为根. 对于一个果实,显然是先处理子树中未分配的点,再向外延伸. 每个结点记录一个\(si[]\),表示子树中未分配的点数, ...
- 「NOI十联测」奥义商店
「NOI十联测」奥义商店 若lzz想花费最少的钱,那么显然要选择数目较少的颜色. 先考虑暴力的写法. 每次向两边统计,每个物品要求被买的概率可以由上一个物品推出. now=1;//now 被买概率 M ...
- 「NOI十联测」黑暗
「NOI十联测」黑暗 \(n\) 个点的无向图,每条边都可能存在,一个图的权值是连通块个数的 \(m\) 次方,求所有可能的图的权值和.(n≤30000,m≤15) 令\(ans[n][m]\)为n个 ...
- NOI十连测 第六测 T3
思路:考试的时候我非常地**,写了圆并,然后还TM写了半平面交和三角剖分,虽然只有30分..但是看在我写了500行的份上还是挂着吧.. #include<cstdio> #include& ...
- NOI十连测 第五测 T2
思路:考虑建立可持久化线段树,第一层维护的是i这个位置的next位置,第二层,维护的是接下来走这个字符会到哪个节点. 感觉很巧妙啊,不愧是Claris #include<algorithm> ...
- NOI十连测 第六测 T1
思路: 用treap动态维护,记一个sum1,sum2,注意!,写treap如果有删除操作,千万不能把权值相同的分开来..,这在删除的时候会进入死循环,这是一个惨痛的教训... #include< ...
随机推荐
- java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade
2012-10-4 19:50:37 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for se ...
- 数据库中的索引Index
索引就像一本书的目录,而书中的索引是对一个词语的列表,其中注明了包含各个词的页码.数据库中的索引 是某一个表中一列或者若干列值的集合和相应的只想表中物理标识这些值的数据页的逻辑指针清单. 索引的作用: ...
- 【转】多核CPU运行模式
多核CPU运行模式主要有以下三种: •非对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiat ...
- vi常用命令集锦
转载,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6575232 vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分 ...
- hdu 3635 Dragon Balls(并查集应用)
Problem Description Five hundred years later, the number of dragon balls will increase unexpectedly, ...
- WPF可视化控件打印
Introduction While coding an application that displays a detailed report in a ScrollViewer, it was d ...
- Qt之模型/视图(委托)
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4. ...
- UVA 536 (13.08.17)
Tree Recovery Little Valentine liked playing with binary trees very much. Her favoritegame was con ...
- css之浏览器初始化方案
HTML, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote,pre, form, fieldset, ...
- RS-232通信原理
rs232串口通信原理 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆).大多数计算机包含两个基于RS232的串口.串口同时也是仪器 ...