bzoj 2428: [HAOI2006]均分数据 && bzoj 3680 : 吊打XXX 模拟退火
每次把元素随便扔随机一个初始解,退火时每次随机拿一个元素扔到随机一个集合里,当温度高时因为状态不稳定扔到那个元素和最小的里边。
如果新解优,更新ans。
把原式拆一下,就可以用int存了。
bzoj 2428
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 55
using namespace std;
int n,m;
int a[N],sum[N],be[N];
int ans;
void solve()
{
memset(sum,,sizeof(sum));
int now=;
for(int i=;i<=n;i++)
{
be[i]=rand()%m+;
now-=sum[be[i]]*sum[be[i]];
sum[be[i]]+=a[i];
now+=sum[be[i]]*sum[be[i]];
}
double T=;
while(T>0.1)
{
T*=0.9;
int x=rand()%n+,b=be[x],y;
if(T>)y=min_element(sum+,sum+m+)-sum;
else y=rand()%m+;
int tmp=now;
now-=sum[b]*sum[b];sum[b]-=a[x];now+=sum[b]*sum[b];
now-=sum[y]*sum[y];sum[y]+=a[x];now+=sum[y]*sum[y];
if(now<tmp)be[x]=y;
else
{
sum[b]+=a[x];sum[y]-=a[x];
now=tmp;
}
}
ans=min(ans,now);
}
int main()
{
srand();double sm=;
ans=0x3f3f3f3f;scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&a[i]),sm+=a[i];
for(int i=;i<=;i++)solve();
double tt=ans;tt-=sm*sm/m;tt/=m;
printf("%.2f\n",sqrt(tt));
return ;
}
不懂为什么新解没旧解有还要有一定概率接受新解,好像不写也能过。
bzoj 3680
求广义费马点,题意大概就是广义带权费马点的定义吧。$$min(\sum_{i=1}^{n} dis(i,p)*hight[i])$$
参数多调几遍就能过。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 10005
using namespace std;
int n;
double x[N],y[N],z[N];
double ansx,ansy,ans;
double dis(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
inline double calc(double nx,double ny)
{
double res=;
for(int i=;i<=n;i++)
{
res+=z[i]*dis(nx,ny,x[i],y[i]);
}
return res;
}
double f()
{
int t=rand()%;
if(t==)return ;
return -;
}
double rd()
{
return rand()%/10000000.0*f();
}
void solve()
{
double T=1e5;
while(T>=1e-)
{
T*=0.98;
double xx=ansx+T*rd(),yy=ansy+T*rd();
double tt=calc(xx,yy);
if(tt<ans)
{
ans=tt;
ansx=xx;ansy=yy;
}
}
}
int main()
{
srand();
scanf("%d",&n);
ans=1e100;
for(int i=;i<=n;i++)
{
scanf("%lf%lf%lf",&x[i],&y[i],&z[i]);
}
solve();
printf("%.3f %.3f\n",ansx,ansy);
return ;
}
bzoj 2428: [HAOI2006]均分数据 && bzoj 3680 : 吊打XXX 模拟退火的更多相关文章
- bzoj 2428: [HAOI2006]均分数据 随机化
2428: [HAOI2006]均分数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- BZOJ.2428.[HAOI2006]均分数据(随机化贪心/模拟退火)
题目链接 模拟退火: 模拟退火!每次随机一个位置加给sum[]最小的组. 参数真特么玄学啊..气的不想调了(其实就是想刷刷最优解) 如果用DP去算好像更准.. //832kb 428ms #inclu ...
- bzoj 2428: [HAOI2006]均分数据
#include<cstdio> #include<iostream> #include<cstdlib> #include<ctime> #inclu ...
- 洛谷 P1337 平衡点 & bzoj 3680 吊打 XXX —— 模拟退火
题目:https://www.luogu.org/problemnew/show/P1337 https://www.lydsy.com/JudgeOnline/problem.php?id=3680 ...
- 2428: [HAOI2006]均分数据
模拟退火.一种十分玄学的随机算法,网上可以查到比较详细的资料. 先随机地把数分成m组,每次随机地选择一个数,一开始直接选最小的一组,后来就随机一组,把这个数换到该组看看答案能不能变小,如果变小则换,如 ...
- bzoj 3680 吊打xxx 模拟退火
第一道模拟退火 重心嘛,就是要找到一个点,使其到所有点距离*该点权值和最小 思路:初始化一个T,mint,当T大于mint时,每次随机一个解,如果解比当前解优,直接转移,否则,以某概率(与T正相关)转 ...
- BZOJ.3680.吊打XXX(模拟退火/爬山算法)
题目链接 一个比较好的解释? 模拟退火(Simulated Annealing,SA): (1)初始化一个温度(充分大).初始解状态S.每个T值的迭代次数. (2)对i=1,...,L,做(3)至(7 ...
- bzoj2428: [HAOI2006]均分数据
模拟退火.挺好理解的.然后res打成了ans一直WA一直WA...!!!一定要注意嗷嗷嗷一定要注意嗷嗷嗷一定要注意嗷嗷嗷. 然后我就一直卡一直卡...发现最少1800次的时候就可以出解了.然后我就去调 ...
- BZOJ 3680: 吊打XXX【模拟退火算法裸题学习,爬山算法学习】
3680: 吊打XXX Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 3192 Solved: 1198[Sub ...
随机推荐
- 关于nodejs中遇到mysql默认8小时连接断开机制的终极简单解决方案
由于mysql默认8小时连接无访问,就会断开.为此查了一下资料,有同种比较简单的解决方案: 1. 增加 MySQL 的 wait_timeout 属性的值. 修改 /etc/mysql/my.cnf文 ...
- 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结
将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...
- 兼容所有浏览器的旋转效果-IE滤镜Matrix和CSS3transform
在现代浏览器中使用CSS3的transform样式即可轻松搞定,但是对于国内IE浏览器(特别是7,8)还占有较大份额的情况下,兼容性还是必须要考虑的,所以也特意记录下IE旋转滤镜的使用. 在IE下的旋 ...
- cnblogs用户体验评价
1. 是否提供良好的体验给用户(同时提供价值)? 博客园就相当于现在生活中处处可见的微博,所有人都在上面发表自己的一些看法,当然我们比较关注的是计算机编程方面的一些博客,大多数编程人员愿意分享自己的代 ...
- Task 6.2站立会议二
今天,我们开始自己开始编译运行代码了,服务器端,聊天界面的相关代码经过测试.大家都把自己的实验过程公布了,大家的交流对实验的进度也起到了很大的作用.明天我们要继续修改实验中的错误,然后大家一起把实验基 ...
- 其实servlet就是一种mvc设计思想的一种实现
看图,不说话
- 由一个滑动条的任务需求产生一个对UISlider控件的探讨
任务需求样式:
- vue 实战报错解决方案
最近做项目,遇到一个问题 列表滚动,上拉加载功能 采用了better-scroll 插件,将better-scroll 封装成组件,采用父组件传递值给子组件的方式,子组件 采用$emit 方式 通知父 ...
- 6/7 sprint2 看板和燃尽图的更新
- set_magic_quotes_runtime
在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线. 当然如果重复 ...