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< ...
随机推荐
- Spring + Tomcat 启动报错java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
错误如下: -- ::,-[TS] INFO http-- org.springframework.beans.factory.support.DefaultListableBeanFactory - ...
- 蓝牙芯片NRF51822入门学习1:时间管理
前言 之前辞职找工作的时候发现,很多公司希望招聘蓝牙技术方面的人才,所以干脆丢开LWIP静下心来学习蓝牙技术.原本以为一两星期能基本学会的,谁知道所选的蓝牙芯片nrf51822是个坑货,坑了我一个月. ...
- nm和readelf命令的区别
其实问题的本质是对elf格式的理解问题,因为是查看so库的符号表发现的问题. 事情起因是这样的,由于我的一个程序编译的时候出现了undefined reference to “XXX”的错误,需要链接 ...
- mysql 的 decimal类型
最近做项目时将decimal定义成了decimal(5,2),然后等到最大的结果都是999.99,找了很多地方找不出bug在哪里插入很更新的数据都是正确的而结果却都是999.99,最后才知道decim ...
- Socket,非阻塞,fcntl
一.fcntl 用以下方法将socket设置成为非阻塞方式 int flags = fcntl(socket,F_GETFL,0); fcntl(socket,F_SETFL,flags|O_NON ...
- 【转】Linux下查看TCP网络连接情况
查看TCP网络连接情况 命令:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ www.2cto.com 返回结 ...
- hdu 5612 Baby Ming and Matrix games(dfs暴力)
Problem Description These few days, Baby Ming is addicted to playing a matrix game. Given a n∗m matr ...
- iOS获取一个方法的执行时间
#import <Foundation/Foundation.h> #import <mach/mach_time.h> typedef void (^block)(void) ...
- 修改UISearchBar placeholder textColor
[[UILabel appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor redColor]];
- GCD 倒计时
今天在Code4App上看了一个GCD倒计时的Demo,觉得不错代码贴出来备用 -(void)startTime{ __block ; //倒计时时间 dispatch_queue_t queue = ...