Codeforces Round #720 (Div. 2) C. Nastia and a Hidden Permutation 交互

传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一个序列ppp长度nnn,每次可以执行两个种询问:
t=1max(min(x,pi),min(x+1,pj))t=1\ \ max(min(x,p_i),min(x+1,p_j))t=1  max(min(x,pi),min(x+1,pj))
t=2min(max(x,pi),max(x+1,pj))t=2\ \ min(max(x,p_i),max(x+1,p_j))t=2  min(max(x,pi),max(x+1,pj))
询问操作不能超过⌊3∗n2⌋+30\left \lfloor \frac{3*n}{2} \right \rfloor+3023n+30次。
n<=1e4n<=1e4n<=1e4

思路:

交互题看到操作不能超过⌊3∗n2⌋+30\left \lfloor \frac{3*n}{2} \right \rfloor+3023n+30的时候容易想到通过⌊n2⌋\left \lfloor \frac{n}{2} \right \rfloor2n次操作询问出某个值,让后再通过n−1n-1n1次操作询问出所有值,下面考虑如何询问某个值。
其实1,21,21,2操作是差不多的,我们这里利用第一个操作询问出来nnn的位置。从111开始,让x=n−1x=n-1x=n1,每次询问相邻两项,如果返回值为nnn的话,说明i+1i+1i+1的位置是nnn,如果是n−1n-1n1的话,将i,i+1i,i+1i,i+1的位置调换一下再询问一次看是否为nnn。当nnn为奇数的时候,如果最后都没找到nnn的位置,那么说明nnn的位置在最后一位。
现在知道nnn的位置为pospospos,我们可以通过第二个操作询问出来所有值,我们让pj=pos,x=1p_j=pos,x=1pj=pos,x=1,让后让pip_ipi为当前询问的位置,返回值即为当前位置的值。
这样问题就完美解决啦,总询问次数不会超过⌊n2⌋+n+1\left \lfloor \frac{n}{2} \right \rfloor+n+12n+n+1

//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<assert.h>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
int a[N];int query(int op,int i,int j,int x) {printf("? %d %d %d %d\n",op,i,j,x); fflush(stdout);int ans; scanf("%d",&ans);return ans;
}int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);int _; scanf("%d",&_);while(_--) {scanf("%d",&n);int pos=-1;for(int i=1;i<=n-1;i+=2) {int now=query(1,i,i+1,n-1);if(now==n) {pos=i+1;break;}else if(now==n-1) {now=query(1,i+1,i,n-1);if(now==n) {pos=i;break;}}}if(pos==-1) pos=n;a[pos]=n;for(int i=1;i<=n;i++) {if(i==pos) continue;int now=query(2,i,pos,1);a[i]=now;}printf("! "); fflush(stdout);for(int i=1;i<=n;i++) printf("%d ",a[i]),assert(a[i]<=n),fflush(stdout);puts(""); fflush(stdout);}return 0;
}
/**/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NOIP2018】赛道修建【二分】【树形dp】【multiset】【贪心】

传送门 题意&#xff1a;给一棵带边权的树&#xff0c;求MMM条没有公共边的路径的最小长度的最大值。 N≤50000N \leq50000N≤50000 抛开NOIP不谈&#xff0c;其实这题本身出的很好 显然二分 问题转化成了“最多可以找多少条长度不小于kkk的路径” 递归处理 对于每个结点…

asp.net core 系列之Startup

这篇文章简单记录 ASP.NET Core中 &#xff0c;startup类的一些使用。一.前言在 Startup类中&#xff0c;一般有两个方法&#xff1a;ConfigureServices 方法: 用来配置应用的 service 。 Configure 方法&#xff1a;创建应用的请求处理管道它们都在应用启动时&#xff0c;被AS…

可持久化Splay 学习笔记

可持久化Splay是怎么回事呢&#xff1f;Splay相信大家都很熟悉&#xff0c;但是可持久化Splay是怎么回事呢&#xff0c;下面就让小编带大家一起了解吧。   可持久化Splay&#xff0c;其实就是将Splay持久化一下&#xff0c;大家可能会很惊讶Splay怎么可以持久化呢&#xff1f…

译 | .NET Core 基础架构进化之路(一)

原文&#xff1a;Matt Mitchell翻译&#xff1a;Edi Wang随着 .NET Core 3.0 Preview 6 的推出&#xff0c;我们认为简要了解一下我们基础设施系统的历史以及过去一年左右所做的重大改进会很有用。如果您对构建基础结构感兴趣&#xff0c;或者想要了解我们如何构建与 .NET Core…

【洛谷P4705】玩游戏【二项式定理】【NTT卷积】【生成函数】【分治NTT】【函数求导】【多项式对数】

传送门 题意&#xff1a;给定长度为N,MN,MN,M的序列a,ba,ba,b和ttt&#xff0c;随机选取x∈[1,N],y∈[1,M]x \in[1,N],y\in[1,M]x∈[1,N],y∈[1,M],对于i1,2,...,t,i 1,2,...,t,i1,2,...,t,求(axby)i(a_xb_y)^i(ax​by​)i的期望 N,M,t≤100000N,M,t \leq100000N,M,t≤100000 …

剑指 Offer 27. 二叉树的镜像

思路&#xff1a;递归 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:TreeNode* mirrorTree(TreeNode*…

Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个长度为nnn的序列aaa&#xff0c;让你计算 n≤4e5,a≤1e7n\le 4e5,a\le 1e7n≤4e5,a≤1e7 思路&#xff1a; 首先这个式子是n2n^2n2的&#xff0c;显然不能直接算&#xff0c;并且异或没有分配律&…

.NET开发框架(一)-框架介绍与视频演示

本文主要介绍一套基于.NET CORE的SPA高并发、高可用的开发框架.我们暂且称它为&#xff1a;&#xff08;让你懂.NET&#xff09;开发框架。以此为主线&#xff0c;陆续编写教程&#xff0c;讲述如何构建高并发、高可用的框架。&#xff08;欢迎转载与分享&#xff09;它标准化了…

【CF700E】Cool Slogans【后缀自动机】【可持久化线段树合并】【树上倍增】

传送门 题意&#xff1a;给定字符串SSS&#xff0c;求一堆字符串s1,s2,s3,...,sks_1,s_2,s_3,...,s_ks1​,s2​,s3​,...,sk​&#xff0c;满足s1s_1s1​是SSS的子串&#xff0c;且sis_isi​在si−1s_{i-1}si−1​中至少出现两次&#xff0c;最大化kkk ∣S∣≤200000|S| \leq …

P1377 [TJOI2011]树的序 笛卡尔树优化建树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一棵二叉树的生成序列&#xff0c;让你输出一个字典序最小的序列&#xff0c;使其生成的二叉树与原来的二叉树相同。 思路&#xff1a; 首先想到暴力建树&#xff0c;让后输出先序遍历即可&#xff0c…

译 | .NET Core 基础架构进化之路(二)

原文&#xff1a;Matt Mitchell翻译&#xff1a;Edi Wang&#xff08;接上篇 译 | .NET Core 基础架构进化之路&#xff08;一&#xff09;&#xff09;Maestro 及依赖流.NET Core 3.0 基础结构难题的最后一部分就是我们所说的依赖项流。这不是 .NET Core 的唯一概念。除非它们…

【NOI2019】回家路线【无后效性dp状态设计】【斜率优化】

传送门 题意&#xff1a;给定MMM个班车&#xff0c;每个班车pip_ipi​时刻从xix_ixi​发车qiq_iqi​到达yiy_iyi​&#xff0c;等车ttt时间花费代价At2BtCAt^2BtCAt2BtC,在ttt时刻到达花费ttt的代价&#xff0c;求从111到NNN的最小花费。 1≤N≤100000,1≤M≤2000001 \leq N \…

Codeforces Round #628 (Div. 2) E. Ehab‘s REAL Number Theory Problem 巧妙的质因子建图

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你nnn个数&#xff0c;每个数的因子个数不超过777个&#xff0c;选出最少的数使其乘积为平方数。 n≤1e5n\le 1e5n≤1e5 思路&#xff1a; 由于因子不超过777个&#xff0c;所以由约数个数(1p1)∗(1p2)∗…

在.Net Core中实现一个WebSocket路由

Net Core中使用WebSocket默认是没有路由系统的&#xff0c;只能通过Request.Path"/xxx"来判断请求&#xff0c;例如&#xff1a;1 2 3 4 5 6 7 8 91011121314151617181920app.Use(async (context, next) >{ if (context.Request.Path "/ws") { …

【CF1189D】Add on a Tree【结论】【构造】

传送门 题意&#xff1a;给一棵NNN个结点的树&#xff0c;构造或判断无法构造若干次操作&#xff0c;每次操作选择两个叶节点将路径上的边加上一定整数权值&#xff0c;使得每条边等于给定权值。权值互不相同且为偶数。 1≤N≤10001 \leq N \leq10001≤N≤1000 结论&#xff…

Codeforces Round #628 (Div. 2) F. Ehab‘s Last Theorem dfs树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个nnn个点mmm条边的图&#xff0c;可以选择完成以下两个任务中的一个&#xff1a; (1)(1)(1)找出大小恰好为n\sqrt nn​的一个独立集。 (2)(2)(2)找出一个长度≥n\ge \sqrt n≥n​的一个环。 n≤1e5,m≤…

Dapper介绍--Micro-ORM

一&#xff0e;概述目前对于.net的数据访问ORM工具很多&#xff0c;EF和EF Core是一个重量级的框架。最近在搭建新的项目架构&#xff0c;来学习一下轻量级的数据访问ORM工具Dapper。Dapper支持SQL Server&#xff0c;MySQL&#xff0c;Sqlite&#xff0c;SqlCE&#xff0c;Fir…

剑指 Offer 31. 栈的压入、弹出序列

思路&#xff1a;模拟就完事 class Solution { public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> c;int idx0;for(int v:pushed){c.push(v);while(c.size()&&c.top()popped[idx]){c.pop();idx;}…

【CF1189F】Array Beauty【dp】【复杂度玄学优化】

传送门 题意&#xff1a;给一个长度为NNN的序列aaa,从中选出kkk个&#xff0c;定义一个序列的美丽度为最接近的两个数的差的绝对值&#xff0c;求所有方案的美丽度之和模998244353998244353998244353。 N≤1000,ai≤100000N \leq 1000,a_i \leq100000N≤1000,ai​≤100000 显…

Educational Codeforces Round 84 (Rated for Div. 2) D. Infinite Path 构建环 + 思维

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 懒得写了&#xff0c;直接贴图了。 思路&#xff1a; 遇事不决画成图&#xff0c;考虑将iii向p[i]p[i]p[i]连一个边&#xff0c;可以发现每个点入度为111&#xff0c;出度为111&#xff0c;所以画出来是若…