首页 > 其他分享 >Radio Direction Finding

Radio Direction Finding

时间:2024-09-29 19:47:13浏览次数:7  
标签:Direction cout int ranges Radio ans Finding query view

“繁杂的代码分部调试,
琐碎的思路模拟样例。”【一方面可以检验思路的正确性,另一方面模拟的过程也正是算法执行的过程】

  • 采用以0为起点的标号方式,以处理环形结构
  • 考虑将题目抽象成数学函数
  • 考虑询问点在环上的移动可能会导致距离和+2,+1,不变,-1,-2
  • 考虑距离和的变化趋势(而不是绝对值)所能提供的信息
  • 通过一组询问,将答案限定在某条链上(实现“断环为链”),再在这一条链上做进一步的处理
  • partition_point函数:或许可以看作是升级版的upper_bound,如果要用C++20的ranges::iota_view,则该函数也要做对应的改变(不要忘记星号)
  • 交互题:通过endl就可以避免用cout.flush()清空缓存区
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int n,ans[2];
int query(int x)
{
	int d;
	cout<<"?"<<" "<<x+1<<endl;
	cin>>d;
	return d;
}
void shuchu()
{
	cout<<"!"<<" "<<ans[0]+1<<" "<<ans[1]+1<<endl;
}
void solve()
{
	int x=query(0);
	int y=query(n/2);
	int v,p;
	if(x<y)
	{
		v=x;
		p=0;
	}
	else
	{
		v=y;
		p=n/2;
	}
	int vl=query((p-1+n)%n);
	int vr=query((p+1)%n);
	if(vl==v&&vr==v)
	{
		auto check=[&v,&p](int x)
		{
			return query(p+x)==v;	
		};
		ans[0]=p+(*ranges::partition_point(ranges::iota_view(0,n/2),check))-1;
	}
	else if(vl<v)
	{
		auto check=[&v,&p](int x)
		{
			return v-query((p-x+n)%n)>=2*x;	
		};
		int d=*ranges::partition_point(ranges::iota_view(0,n/2),check)-1;
		ans[0]=(p-d+n)%n;
		v=v-2*d;
	}
	else
	{
		auto check=[&v,&p](int x)
		{
			return v-query((p+x)%n)>=2*x;	
		};
		int d=*ranges::partition_point(ranges::iota_view(0,n/2),check)-1;
		ans[0]=(p+d)%n;
		v=v-2*d;
	}
	int opt=query((ans[0]-1+n)%n);
	if(opt==v)
	{
		ans[1]=(ans[0]-v+n)%n;
	}
	else
	{
		ans[1]=(ans[0]+v)%n;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n;
		solve();
		shuchu();
	}
	return 0;
}

标签:Direction,cout,int,ranges,Radio,ans,Finding,query,view
From: https://www.cnblogs.com/watersail/p/18439159

相关文章

  • 交替方向乘子法(Alternating Direction Method of Multipliers,简称ADMM)
    ADMMADMM简介交替方向乘子法(AlternatingDirectionMethodofMultipliers)通常用于解决存在两个优化变量的只含等式约束的优化类问题,其一般形式为:min⁡......
  • 微信小程序修改radio颜色
    看效果: 代码:<radio-group@change="onRadioChange"><label><radiovalue="同意"style="margin-right:30rpx">同意</radio></label><label><radiovalue="不同意">不同意</radio>......
  • 10min速览文献|乳腺癌多中心多组学研究|Multicenter radio-multiomic analysis for pr
    论文链接:https://www.nature.com/articles/s41698-024-00666-y期刊:npjPrecisionOncology团队:复旦肿瘤数据集:多中心,乳腺癌患者方法:放射组学、基因组学、转录组学、代谢组学“尽管深度学习放射组学目前具有卓越的预测性能,但团队的研究更喜欢放射组学,因为它具有标准化和可重复......
  • 大模型项目部署时Gradio Web页面打不开或者打开用不了及pydantic.errors.PydanticSche
    问题描述 在复现大模型demo时连接器和模型加载都没问题,但是gradio界面打不开或者打开后用不了原因分析:感觉应该是gradio的版本问题导致该文件缺少相关文件解决方案:可以首先按照上面要求下载文件https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_a......
  • 论文研读——《RF-Diffusion: Radio Signal Generation via Time-Frequency Diffusion
    本文的是有关无线电信号生成的一篇文章。目录论文简介名词补充现有RF数据生成模型论文贡献RF-Diffusion时频扩散时频扩散——正向销毁过程时频扩散——正向销毁过程时频扩散——逆向恢复过程  时频扩散——条件生成分层扩散Transformer分层扩散Transformer——......
  • 万象更新 Html5 - css: flex 布局: flex-direction, flex-wrap, flex-flow
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-css:flex布局:flex-direction,flex-wrap,flex-flow示例如下:css\src\layout\flex\demo1.html<!--flex布局(flex-flexibility可伸缩性)1、在容器上指定displayflex-容器......
  • Federated Learning Challenges, Methods, and Future Directions
    本文讨论了联邦学习的独特特征和挑战,提供了当前方法的广泛概述,并概述了与广泛的研究社区相关的未来工作的几个方向。背景:现代分布式网络中的设备(如移动电话、可穿戴设备和自动驾驶汽车等)每天会产生大量数据,由于这些设备的计算能力不断增强,以及对传输私人信息的担忧,在本地......
  • Gradio离线部署到内网,资源加载失败问题(Gradio离线部署问题解决方法)
    问题描述Gradio作为一个快速构建一个演示或Web应用的开源Python包,被广泛使用,最近在用这个包进行AI应用构建,打包部署到内网Docker的时候发现有些资源无法使用。网页加载不出来。即使加载出来了也是没有样式无法点击的。一般出现这个问题的多半是低版本的gradio,高版本中已经解决......
  • WPF Expander ExpandDirection Left,Right,Up,Down
    //xaml<Windowx:Class="WpfApp378.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • WPF RadioButton GroupName
    <Windowx:Class="WpfApp375.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......