当前位置: 首页 > news >正文

浅谈模拟系列算法

模拟着火/模拟火灾算法

算法名称:模拟火退

研究时间:2023年10月17日19点

算法引入:发现了模拟退火算法中出现的正确性和复杂度问题,故研发模拟火退算法进行优化。

注意到模拟退火算法中出现了较为严重的正确性问题和复杂度问题,考虑如何优化以达到保证正确性和复杂度的效果。

我们考虑每一次的偏移量在当前答案到目标答案差值内进行随机,并且保证能够每次偏移都能够有较大偏差,根据计算,我们的错误率低于 \(10^{-9}\) 就能够完成 A+B Problem 的问题,这是一个非常伟大的成就,不要只看到他解决了红题,但是他的应用前景无可限量。

下面附上 A+B Problem 的 AC 代码,虽然模拟火退能够通过此题,但仍需进行优化,请持续关注此博客查看模拟火退等算法的最新进展。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6;
int a,b,ans=0;
int rd()
{return rand()*rand()^rand();
}
signed main()
{srand(time(0));int T=maxn;scanf("%lld%lld",&a,&b);if(a+b==0){cout<<0<<endl;return 0;}if(a+b<0){while(T){int rnd=rd()%maxn+1;if(rnd<=T){int mov=rd()%(ans-(a+b))+1;ans-=mov;}if(ans==a+b){cout<<ans<<endl;return 0;}T=T*0.99;}return 0;}while(T){int rnd=rd()%maxn+1;if(rnd<=T){int mov=rd()%(a+b-ans)+1;ans+=mov;}if(ans==a+b){cout<<ans<<endl;return 0;}T=T*0.99;}return 0;
}

有问题的人可以在评论区提问。

算法名称:模拟治水

研究时间:2023年10月17日20点15分

算法引入:发现了模拟火退算法中出现的局限性问题,故研发模拟治水算法进行优化。

注意到虽然模拟火退算法效率高且正确率极高,但是出现了应用面较窄的情况,于是考虑进行优化,故此研发模拟治水。

我们考虑到利用二进制优化对数据的查找:

每次随机生成每位二进制数,并查看与目标状态的每位二进制数是否相同并进行修改,故此有极高的正确率和准确性,并且能够有更广的应用空间,具体细节请见代码,下面代码可以解决 \(c(a+b)\) 问题,题号B2008。代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=2e9;
int a,b,c,sum,ans=0,flood=0;
int rd()
{return rand()*rand()^rand();
}
signed main()
{cin>>a>>b>>c;srand(time(0));int T=maxn;if(a+b==0){sum=0;}else if(a+b<0){int cnt=0;while(T){int rnd=rd()%maxn+1;if(rnd<=T){int mov=rd()%(cnt-(a+b))+1;cnt-=mov;}if(cnt==a+b){sum=cnt;break;}T=T*0.99;}}else{int cnt=0;while(T){int rnd=rd()%maxn+1;if(rnd<=T){int mov=rd()%(a+b-cnt)+1;cnt+=mov;}if(cnt==a+b){sum=cnt;break;}T=T*0.99;}}//cout<<sum<<endl;if(c<0){c=-c;sum=-sum;}int cnt=0;T=maxn;while(T){int rnd=rd()%maxn+1;if(rnd<=flood){cout<<sum*c<<endl;return 0;}if(rnd<=T){int mov=rd()%maxn+1;for(int i=0;i<=20;i++){if((((c>>i)&1)^((ans>>i)&1))&&((mov>>i)&1)){ans^=(1<<i);}}}if(ans==c){//cout<<ans<<" "<<sum<<endl;cout<<ans*sum<<endl;return 0;}T=T*0.99;flood+=1e5;}return 0;
}
http://www.gsyq.cn/news/43200.html

相关文章:

  • 实用指南:TensorFlow深度学习实战(40)——图神经网络(GNN)
  • 学习差的孩子,有必要用学习机吗?
  • 不谈离散数学基本定理
  • 语文诗歌赏析好题集萃(纯纯的学术向)
  • 11.7模拟赛
  • SDOI 2024游记兼退役游记
  • 某头部公募基金云原生转型实践:基于 KubeSphere 的多集群异构管理之路
  • 布谷鸟过滤器详解:从原理到Spring Boot实战
  • 组合数学笔记
  • 距离高考一年纪念文章
  • external_url 高可用相同 主从复制 不同。
  • 国产SUB-1G芯片DP4363F支持119-1050mhz超低功耗
  • PHY6252低成本BLE5.2智能灯控智能家居蓝牙透传芯片模块
  • 绩效考核永远算不清?用好这5张表就够了!
  • 推荐算法之粗排 - 详解
  • 2025 年 11 月深圳店铺装修公司推荐排行榜,餐饮店铺装修,商场店铺装修,连锁店铺装修,零售店铺装修设计公司推荐
  • 2025 年 11 月密封胶条,系统门窗胶条,森特达胶条厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 构建可持续人才生态:金风科技风电人才培养战略与实践白皮书
  • 【ACM出版 | 往届见刊后1个月检索】第二届经济数据分析与人工智能国际学术会议 (EDAI 2025)
  • Function Calling编程实践(OpenAI API)
  • [Python刷题记录]- 和为 K 的子数组-子串-中等
  • java 中的集合对象
  • 【ACM出版 | 往届于会后四个月检索】第二届大数据、神经网络与深度学习研讨会(BDNNDL 2025)
  • 2025年成都互联网服务商排名前十强:哪家最强?
  • APB
  • JAVA:Spring Boot 集成 FFmpeg 完成多媒体处理
  • 高一讲课
  • Ubuntu通过命令行安装REALVNC
  • 下载Google Play 的APK,这样可以不用XAPK
  • 在Ubuntu上配置Nginx实现开机自启功能