首页 > 其他分享 >随机化

随机化

时间:2024-08-15 15:10:28浏览次数:8  
标签:Node Rand return int double 随机化

随机化

随机数生成器

mt19937 Rand(random_device{}());

模拟退火

#include<bits/stdc++.h>
using namespace std;
/*====================*/
#define endl "\n"
/*====================*/
typedef long long lnt;
/*====================*/
const int N = 1e3 + 10;
/*====================*/
double begintime = 0;
bool TLE(void)
{
	if ((clock() - begintime) / CLOCKS_PER_SEC > 0.9)
	{
		return true;
	}
	return false;
}
/*====================*/
int n;
/*====================*/
struct Node
{
	double w, x, y;
	Node(double _w = 0, double _x = 0, double _y = 0)
	{
		w = _w, x = _x, y = _y;
	}
};
Node node[N];
/*====================*/
double ansx, ansy, ansSigma = 1e18;
/*====================*/
double GetSigma(double x, double y)
{
	double res = 0;
	for (int i = 1; i <= n; ++i)
	{
		double dx = node[i].x - x;
		double dy = node[i].y - y;
		res += sqrt(dx * dx + dy * dy) * node[i].w * 100;
	}
	if (res < ansSigma)
	{
		ansx = x, ansy = y, ansSigma = res;
	}
	return res;
}
/*====================*/
double Rand() { return (double)rand() / RAND_MAX; }
/*====================*/
void SA(void)
{
	double curx = 0, cury = 0, curSigma = 0;
	for (int i = 1; i <= n; ++i)
	{
		curx += node[i].x, cury += node[i].y;
	}
	curx /= n, cury /= n; curSigma = GetSigma(curx, cury);

	double t = 1e4;
	while (t > 5e-4)
	{
		double nxtx = curx + t * (Rand() * 2.0 - 1.0);
		double nxty = cury + t * (Rand() * 2.0 - 1.0);
		double nxtSigma = GetSigma(nxtx, nxty);
		double delta = nxtSigma - curSigma;
		if (exp(-delta / t) > Rand())
		{
			curx = nxtx, curx = nxty, curSigma = nxtSigma;
		}
		t *= 0.9996;
	}
	for (int i = 1; i <= 5000; ++i) 
	{
		double nxtx = ansx + t * (Rand() * 2 - 1);
		double nxty = ansy + t * (Rand() * 2 - 1);
		double nxtSigma = GetSigma(nxtx, nxty);
	}
}
/*====================*/
void Solve(void)
{
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		double w, x, y;
		cin >> x >> y >> w;
		node[i] = Node(w, x, y);
	}
	while (!TLE())SA();
	printf("%.3f %.3f\n", ansx, ansy);
}
/*====================*/
int main()
{
#ifndef ONLINE_JUDGE
	freopen("IN.txt", "r+", stdin);
#endif
	srand(time(0)); begintime = clock();
	ios::sync_with_stdio(false);
	cin.tie(NULL), cout.tie(NULL);
	int T = 1; //cin >> T;
	while (T--)Solve();
	return 0;
}

标签:Node,Rand,return,int,double,随机化
From: https://www.cnblogs.com/ProtectEMmm/p/18360930

相关文章

  • 随机化两个光栅的位置
    我正在尝试创建两个同时显示的圆形光栅(一个水平的,一个垂直的)。在每次试验中,两个光栅的位置应该随机改变。这是我到目前为止的代码,但我不知道如何添加“随机化”。importpsychopy.visualimportpsychopy.eventwin=psychopy.visual.Window(size=[1200,600],......
  • 一起来学习孟德尔随机化临床医学SCI发表吧!!!
    如今,临床科研工作者面对越来越重的科研压力,以及越来越高的SCI文章要求,如何才能在不进实验室、不做基础科研的前提下,利用好各种公共数据资源快速发表SCI论著?这是一个困绕每一个临床科研医生的话题。真正的随机对照临床研究(RCT)往往费时,费力,费钱。因此,当前科研的热点之......
  • 孟德尔随机化基础概念
    孟德尔随机化(MendelianRandomization,MR)是一种利用基因型信息作为工具变量评估暴露与结果之间因果关系的统计方法。一般步骤:单核苷酸多样性(singlenucleotidepolymorphism,SNP):主要是指在基因组水平上由单个核苷酸的变异所引起的DNA序列多样性选择的MR分析方法包括:逆方差加......
  • driftingblues9 - 溢出ASLR(内存地址随机化机制)
    SiteUnreachabledriftingblues9easyaPphpGETSHELL、searchsploit使用、凭据收集、gdb使用、缓冲区溢出漏洞(难)、pattern_create.rb、pattern_offset.rb使用主机发现┌──(kali㉿kali)-[~/桌面/OSCP]└─$sudonetdiscover-ieth0-r192.168.44.139/24服务探测......
  • 1689D Lena and Matrix (曼哈顿距离转切比雪夫距离/随机化/线段树)
    记一道有趣的题:P题意这道题很有意思。给定地图上若干个黑色的点,求这样一个点的坐标,满足其到图中任何一个黑色点的最大曼哈顿距离最小。\(max(|a-x_i|+|b-y_i|),i=1,2..k\)方法一曼哈顿距离和且比雪夫距离可以互相转化,曼哈顿转切比雪夫如下:\((x,y)\to(x+y,x-y)\)转化后......
  • 一篇文章带你实践掌握社会网络分析——随机网络、度保持随机化、BA模型
    实践内容:生成和下载的网络相同平均度和网络规模的随机网络对比分析随机网络和下载的网络相关的特征和指标采用度保持的网络随机化算法生成和下载的网络度序列相同的网络利用BA模型生成与下载的网络模型相同的网络,其初始和每个时间t新加入节点的连边自己定义对比分析生成的......
  • 随机化
    Aulvwc非正解做法,但大概率正确(实际上过不了Hack)。套路的,考虑让每个\(a_i\)减去整体的平均值,问题转换为让两个集合的和均为\(0\)。我们每次随机打乱\(a\)数组,并贪心的将其插入两个堆中,最后判断即可。CodeABC272GYetAnothermodM由于同余的性质可得,如果\(a_x\equiv......
  • P8819 [CSP-S 2022] 星战 (很厉害的随机化想法)
    简化下题意有n个点m条单向边每条边有激活和失活两种状态,一共有4中操作1.失活一条u->v的边2.失活终点是v的边3.激活u->v的边4.激活终点是v的边问你每次修改后每个点的出度是否都为1.50分的做法就是暴力修改,对于1操作和3操作都是可以o(1)解决,对于2操作和4......
  • CF1514D-区间(绝对)众数-莫队、随机化、可持久化线段树
    link:https://codeforces.com/contest/1514/problem/D很久以前小号打的场了,当时D题写的莫队,现在重新来看看。题意:给一个序列\([a_1,\dots,a_n]\),有q次询问,每次问:把\([a_l,\dots,a_r]\)划分最少几个不相交子序列,才能使得每个子序列是beautiful的。称一个序列\(a_1,\dots,a_x\)......
  • 随机化算法
    1随机化算法简介随机化算法,是一种十分玄学的做法。百度百科对其的定义是:随机化算法(randomizedalgorithm),是这样一种算法,在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。就是将算法的某一步或某几步置于运气的控制之下,即该算法在运......