loj#2076. 「JSOI2016」炸弹攻击 模拟退火
目录
题目链接
题解
模拟退火
退火时,由于答案比较小,但是温度比较高
所以在算exp时最好把相差的点数乘以一个常数让选取更差的的概率降低
代码
#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define gc getchar()
#define pc putchar
inline int read() {
int x = 0,f = 1;
char c = gc;
while(c < '0' || c > '9') c =gc;
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = gc;
return x * f;
}
void print(int x) {
if(x < 0) {
pc('-');
x = -x;
}
if(x >= 10) print(x / 10);
pc(x % 10 + '0');
}
const int maxn = 100007;
int n,m; double R;
double X[maxn],Y[maxn],r[maxn],p[maxn],q[maxn];
double rd() {
return (double) rand() / RAND_MAX;
}
void randpos(double &x,double & y){
x = 2 * R * rd() - R;
y = 2 * R * rd() - R;
}
#define dt 0.998
#define eps 1e-2
double dis(double x,double y,double x1,double y1) {
return std::sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
}
int calc(double x,double y) {
int ret = 0;
double tr = R;
for(int i = 1;i <= n;++ i) {
tr = std::min(tr,dis(X[i],Y[i],x,y) - r[i]);
}
if(r < 0) return 0;
for(int i = 1;i <= m;++ i)
if(dis(x,y,p[i],q[i]) <= tr) ret ++;
return ret;
}
int solve(double x,double y) {
int mx = calc(x,y);
int now = mx;
double T = R;
for(;T > eps;T *= dt) {
double nt = T + 0.1;
double nx = x + (2.0 * nt) * rd() - nt,ny = y + (2 * nt) * rd() - nt;
int nans = calc(nx,ny);
if(nans > mx || exp(1e4 * (nans - now) / T) > rd()) x = nx,y = ny,now = nans;
mx = std::max(mx,now);
}
return mx;
}
int main() {
srand(19991206);
scanf("%d%d%lf",&n,&m,&R);
for(int i = 1;i <= n;++ i)
scanf("%lf%lf%lf",&X[i],&Y[i],&r[i]);
for(int i = 1;i <= m;++ i)
scanf("%lf%lf",p + i,q + i);
int ans = 0 ;
double px,py;
for(int i = 1;i <= 20;++ i) {
randpos(px,py);
ans = std::max(ans,solve(px,py));
}
print(ans);
pc('\n');
}
loj#2076. 「JSOI2016」炸弹攻击 模拟退火的更多相关文章
- LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)
题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...
- [LOJ 2082] 「JSOI2016」炸弹攻击 2
[LOJ 2082] 「JSOI2016」炸弹攻击 2 链接 链接 题解 枚举发射源,将发射源当做原点,对敌人和激光塔极角排序. 由于敌人纵坐标均为正,而其它点均为负,因此每两个角度差在 \(\pi\ ...
- 【LOJ】#2076. 「JSOI2016」炸弹攻击
题解 我冷静一下,话说如果去掉建筑和R的限制好像是模拟退火吧 然后开始写模拟退火了,起始点就随机一个敌人作为起始点 没对着数据写了一下获得了70pts,感到美滋滋 然后对着数据卡了很久--发现有个数据 ...
- LOJ#2082. 「JSOI2016」炸弹攻击 2(计算几何+双指针)
题面 传送门 题解 我们枚举一下发射源,并把敌人和激光塔按极角排序,那么一组合法解就是两个极角之差不超过\(\pi\)且中间有敌人的三元组数,预处理一下前缀和然后用双指针就行了 //minamoto ...
- loj#2071. 「JSOI2016」最佳团体
题目链接 loj#2071. 「JSOI2016」最佳团体 题解 树形dp强行01分规 代码 #include<cstdio> #include<cstring> #inclu ...
- 【LOJ】#2082. 「JSOI2016」炸弹攻击 2
题解 想到n3发现思路有点卡住了 对于每个发射塔把激光塔和敌人按照极角排序,对于一个激光塔,和它转角不超过pi的激光塔中间夹的敌人总和就是答案 记录前缀和,用two-Points扫一下就行 代码 #i ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #3096. 「SNOI2019」数论
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...
- Loj #3093. 「BJOI2019」光线
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...
随机推荐
- jQuery的end() 方法
定义和用法 end() 方法结束当前链条中的最近的筛选操作,并将匹配元素集还原为之前的状态. 语法 .end() 详细说明 大多数 jQuery 的遍历方法会操作一个 jQuery 对象实例,并生成一 ...
- ReLu、LeakyRelu、PReLu(转载)
转载链接:http://blog.csdn.net/cham_3/article/details/56049205
- RNN(3) ------ “blog:RNN学习之路”
博客链接:http://blog.csdn.net/yangyangyang20092010/article/details/50374289 Recurrent Neural Network 学习之 ...
- CrossUI SPA Builder ---- feathers API框架
CrossUI SPA Builder: http://www.crossui.com/ 国产? 龙博(JSLINB)AJAX框架? CrossUI SPA Builderenables de ...
- linux下混杂模式
混杂模式介绍: 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃:简单的讲,混杂模式就是指网卡能接受所有通过它的 ...
- Expm 8_1 区间划分问题
[问题描述] 给定一组报告,其中的每个报告设置了一个开始时间si和结束时间fi.设计与实现一个算法,对这组报告分配最少数量的教室,使得这些报告能无冲突的举行. package org.xiu68. ...
- winform(记事本--保存和退出)
- selenium webdriver+python基本操作
# -*- coding:utf-8 -*-#导入模块from selenium import webdriver from selenium.common.exceptions import NoS ...
- bootstrap----几个插件网址
1.SweetAlert (弹出框):https://github.com/t4t5/sweetalert 2.SweetAlert2 (弹出框):https://github.com/limonte ...
- 性能测试二十三:环境部署之Redis安装和配置
redis:非关系型数据库,内存数据库,no-sql典型, 数据存放在内存中,一断电或者关闭就没有了 mysql.oracle.sqlserver···是关系型数据库,数据存放在磁盘中 一个Red ...