luogu 1369
给出平面上的n个点,请找出一个边与坐标轴平行的矩形,使得它的边界上有尽量多的点
模拟退火题解
$n^2$ 处理每行的前缀和与每列的前缀和
退火50次即可
#include <bits/stdc++.h> const int N = ; int n, A[N][N];
int sum_h[N][N], sum_l[N][N];
int Max_n = , Max_m = ; #define gc getchar() inline int read() {
int x = ;
char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} #define DB double const DB Max_tmp = , Del = 0.98; int Get_ans(int l, int r, int u, int d) {
if(l == r && u != d) {
return sum_l[d][l] - sum_l[u - ][l];
} else if(l != r && u == d) {
return sum_h[u][r] - sum_h[u][l - ];
} else if(l == r && u == d) {
return A[l][u];
} else {
int ret = ;
ret += (sum_h[u][r] - sum_h[u][l - ])
+ (sum_h[d][r] - sum_h[d][l - ])
+ (sum_l[d][l] - sum_l[u - ][l])
+ (sum_l[d][r] - sum_l[u - ][r]);
if(A[u][l]) ret --;
if(A[u][r]) ret --;
if(A[d][l]) ret --;
if(A[d][r]) ret --;
return ret;
}
} inline int MNTH() {
DB Now_tmp = Max_tmp;
int l = rand() % Max_m + , r = rand() % Max_m + , u = rand() % Max_n + , d = rand() % Max_n + ;
int Now_ans = Get_ans(l, r, u, d);
while(Now_tmp > 0.01) {
int l_ = l, r_ = r, u_ = u, d_ = d;
int opt = rand() % + ;
if(opt == ) l_ = rand() % Max_m + ;
else if(opt == ) r_ = rand() % Max_m + ;
else if(opt == ) u_ = rand() % Max_n + ;
else d_ = rand() % Max_n + ;
int Ls_ans = Get_ans(l_, r_, u_, d_);
if(Ls_ans > Now_ans || (Ls_ans < Now_ans && exp((Ls_ans - Now_ans) / Now_tmp) * RAND_MAX) >= rand())
Now_ans = Ls_ans, l = l_, r = r_, u = u_, d = d_;
Now_tmp *= Del;
}
return Now_ans;
} int main() {
srand(time() + );
n = read();
for(int i = ; i <= n; i ++) {
int x = read(), y = read();
A[x][y] = ;
Max_n = std:: max(Max_n, x), Max_m = std:: max(Max_m, y);
}
for(int i = ; i <= Max_n; i ++)
for(int j = ; j <= Max_m; j ++)
sum_h[i][j] = sum_h[i][j - ] + A[i][j];
for(int i = ; i <= Max_m; i ++)
for(int j = ; j <= Max_n; j ++)
sum_l[j][i] = sum_l[j - ][i] + A[j][i];
int T = ;
int Answer = -;
for(; T; T --) Answer = std:: max(Answer, MNTH());
printf("%d", Answer);
return ;
}
luogu 1369的更多相关文章
- Luogu 魔法学院杯-第二弹(萌新的第一法blog)
虽然有点久远 还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题 沉迷游戏,伤感情 #include <queue> ...
- luogu p1268 树的重量——构造,真正考验编程能力
题目链接:http://www.luogu.org/problem/show?pid=1268#sub -------- 这道题费了我不少心思= =其实思路和标称毫无差别,但是由于不习惯ACM风格的题 ...
- [luogu P2170] 选学霸(并查集+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...
- [luogu P2647] 最大收益(贪心+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...
- 1369 xth 砍树
1369 xth 砍树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 在一个凉爽的夏夜,xth 和 ...
- Luogu 考前模拟Round. 1
A.情书 题目:http://www.luogu.org/problem/show?pid=2264 赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句 赛后:卧槽 怎么只有40 B.小 ...
- 1369 - Answering Queries(规律)
1369 - Answering Queries PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 M ...
- luogu P2580 于是他错误的点名开始了
luogu P2580 于是他错误的点名开始了 https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边 ...
- CJOJ 1331 【HNOI2011】数学作业 / Luogu 3216 【HNOI2011】数学作业 / HYSBZ 2326 数学作业(递推,矩阵)
CJOJ 1331 [HNOI2011]数学作业 / Luogu 3216 [HNOI2011]数学作业 / HYSBZ 2326 数学作业(递推,矩阵) Description 小 C 数学成绩优异 ...
随机推荐
- 题解-APIO2019桥梁
problem \(\mathrm {loj-3145}\) 题意概要:给定一张 \(n\) 点 \(m\) 边的无向图,边有边权,共 \(q\) 次操作,每次会将第 \(x\) 条边的权值改为 \( ...
- interface Part4(接口中的多态)
使用接口实现多态 需要满足以下两个条件. 定义接口并使用类实现了接口中的成员. 创建接口的实例指向不同的实现类对象. 假设接口名称为 ITest,分别定义两个实现类来实现接口的成员,示例代码如下. i ...
- 如何去把内容分享到whatsapp上?
使用场景,公司利用whatsapp来推广商品,需要把商品和一些基本信息分享到WhatsApp上; 一:在html的head标签里面通过meta标签加上一些分享的基本网站信息,具体代码如下 <me ...
- 论文阅读之FaceNet: A Unified Embedding for Face Recognition and Clustering
名称:FaceNet: A Unified Embedding for Face Recognition and Clustering 时间:2015.04.13 来源:CVPR 2015 ...
- CSS选取第一个、最后一个、偶数、奇数、第n个标签元素
1.first-child first-child表示选择列表中的第一个标签.例如:li:first-child{background:#fff} 2.last-child last-child表示选 ...
- orangepi香橙派安装VNC Viewer远程桌面
用ssh连接实在没有图形界面操作的好,虽然命令会快,但是很多命令都记不住. 第一步: sudo apt-get install xfce4 第二步: sudo apt-get install vnc4 ...
- lumen生成key
在Lumen控制台运行php artisan key:generate提示: $ php artisan key:generate [Symfony\Component\Console\Excepti ...
- OSI七层模型的新认识
OSI 七层模型是internet的基石,它并没有制定一个标准,规定我们要怎么去做.美国军方曾把它精简到四层,只是站在了更实用的层次. 我们先来看看这个模型. 应用层->Applicatio ...
- [Golang][Mac]Go 语言学习资料记录
背景:最近的项目开发语言是GOlang 因此需要做一些简单了解和学习记录 又可以学习一下Google的新语言了,想想有些小激动哦~ 官方网站(需翻墙才能打开,比如用蓝灯)https://golang. ...
- JS函数篇【2】
什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. <h3 onload="add2(1,2,3);add3(4,5,6)"></h3> &l ...