求助退火

P1001 A+B Problem

Aisaka_Taiga @ 2023-07-09 17:45:12

不知道为什么,本地运行多次都是没问题的,但是一交就挂。


#include <bits/stdc++.h>

#define int long long
#define N 1001000

using namespace std;

int A, B, ans, xx, cnt;

inline void work()
{
//  cout << "cao" << endl;
    double T = 10;
    while(T > 1)
    {
        int x = xx + (rand() + rand() - RAND_MAX) * T;
        int d = abs(x - A - B) - abs(ans - A - B);
        if(d < 0) ans = x;
        else if(exp(-d / T) * RAND_MAX > rand()) xx = x;
        T *= 0.997;
    }
    if(abs(xx - A - B) < (ans - A - B)) ans = xx;
    return ;
}

signed main()
{
    srand(time(NULL));
    cin >> A >> B;
    while(cnt < 5e4) work(), cnt ++;
    cout << ans << endl;
//  cout << A + B << endl;
    return 0;
}

by Link_Cut_Y @ 2023-07-09 17:51:01

又是一个学退火学傻的可怜孩子。


by Aisaka_Taiga @ 2023-07-09 17:53:38

@Link_Cut_Y 更新ans那里加了绝对值还是不对,甚至从20变成0了。。


by Aisaka_Taiga @ 2023-07-09 17:54:10

@Link_Cut_Y 要不您教教我怎么写遗传A+B也可以/kk


by xuzihao123 @ 2023-07-09 17:55:11

@Aisaka_Taiga

其实有更简单的方法


by Link_Cut_Y @ 2023-07-09 17:57:09

@Aisaka_Taiga 喵,关我然后私信我,我可以教你。


by yzm0325 @ 2023-07-09 18:12:24

@Aisaka_Taiga %%%


by Error_Yuan @ 2023-07-09 18:19:15

@Aisaka_Taiga windows 下 RAND_MAX2^{15}-1=32~767,Linux 下 RAND_MAX2^{31}-1=2~147~483~647


by CSP_AK_zc @ 2023-07-19 15:55:24

#include<bits/stdc++.h>
using namespace std;
int main()
  {int a,b;
  cin>>a>>b;
  cout<<a+b;
  }

这样写不香吗


by SleepWithMiku @ 2023-09-30 19:48:07

随机的问题?之前模拟退火交了十几次,最高90最低20


by SleepWithMiku @ 2023-09-30 19:57:26

https://www.luogu.com.cn/record/126743806

近70次中唯一一次过的


| 下一页