P1852 [国家集训队]跳跳棋 题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在\(a\),\(b\),\(c\)这三个位置.我们要通过最少的跳动把他们的位置移动成\(x\),\(y\),\(z\).(棋子是没有区别的) 跳动的规则很简单,任意选一颗棋子,对一颗中轴棋子跳动.跳动后两颗棋子距离不变.一次只允许跳过1颗棋子. 写一个程序,首先判断是否可以完成任务.如果可以,输出最少需要的跳动次数. 输入…
题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动成x,y,z.(棋子是没有区别的) 跳动的规则很简单,任意选一颗棋子,对一颗中轴棋子跳动.跳动后两颗棋子距离不变.一次只允许跳过1颗棋子. 写一个程序,首先判断是否可以完成任务.如果可以,输出最少需要的跳动次数. 输入输出格式 输入格式: 第一行包含三个整数,表示当前棋子的位置a b c.(互不相同…
P1407 [国家集训队]稳定婚姻 题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的姗姗和男友谈恋爱半年就结婚,结婚不到两个月就离婚,是典型的"闪婚闪离"例子,而离婚的导火线是两个人争玩电脑游戏,丈夫一气之下,把电脑炸烂. 有社会工作者就表示,80后求助个案越来越多,有些是与父母过多干预有关.而根据民政部的统计,中国离婚五大城市首位是北京,其次是上海.深圳,广州和厦门,那…
P1501 [国家集训队]Tree II 题目描述 一棵\(n\)个点的树,每个点的初始权值为\(1\).对于这棵树有\(q\)个操作,每个操作为以下四种操作之一: + u v c:将\(u\)到\(v\)的路径上的点的权值都加上自然数\(c\): - u1 v1 u2 v2:将树中原有的边\((u_1,v_1)\)删除,加入一条新边\((u_2,v_2)\),保证操作完之后仍然是一棵树: * u v c:将\(u\)到\(v\)的路径上的点的权值都乘上自然数\(c\): / u v:询问\(u…
P2757 [国家集训队]等差子序列 题目描述 给一个\(1\)到\(N\)的排列\(\{A_i\}\),询问是否存在 \[1 \le p_1<p_2<p_3<p_4<p_5<-<p_{Len} \le N (Len \ge 3)\] 使得\(A_{p_1},A_{p_2},A_{p_3},\cdots,Ap_{Len}\)是一个等差序列. 输入输出格式 输入格式: 输入的第一行包含一个整数\(T\),表示组数. 下接\(T\)组数据,每组第一行一个整数\(N\),每组…
P1527 [国家集训队]矩阵乘法 题目描述 给你一个\(N*N\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(K\)小数. 输入输出格式 输入格式: 第一行两个数\(N,Q\),表示矩阵大小和询问组数: 接下来\(N\)行\(N\)列一共\(N*N\)个数,表示这个矩阵: 再接下来\(Q\)行每行\(5\)个数描述一个询问:\(x1,y1,x2,y2,k\)表示找到以\((x1,y1)\)为左上角.以\((x2,y2)\)为右下角的子矩形中的第\(K\)小数. 输出格式: 对于每组询…
P1903 [国家集训队]数颜色 题目描述 墨墨购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1.Q L R代表询问你从第\(L\)支画笔到第\(R\)支画笔中共有几种不同颜色的画笔. 2. R P Col 把第\(P\)支画笔替换为颜色\(Col\). 为了满足墨墨的要求,你知道你需要干什么了吗? 输入输出格式 输入格式: 第1行两个整数\(N\),\(M\),分别代表初始画笔的数量以及墨墨会做的事情的个数. 第2行\(N\)…
P1852 [国家集训队]跳跳棋 lca+二分 详细解析见题解 对于每组跳棋,我们可以用一个三元组(x,y,z)表示 我们发现,这个三元组的转移具有唯一性,收束性 也就是说,把每个三元组当成点,以转移关系为边,那么可以得到一棵树 显然最短步数==lca 然后我们就可以愉快地跑lca了 但是还要加优化,就是有可能出现2个靠得近的棋子,但与另一个棋子离得远的情况 这时要跳很多次,但是可以加速,详见代码 最后二分求lca code: #include<iostream> #include<cs…
luogu 直接操作是不可能的,考虑发现一些性质.可以发现如果每次跳的棋子都是两边的,那么最多只有一种方案,那么就把这样操作得到的状态记为当前状态的父亲,从一个状态这样做一定会结束.那么如果两个状态只操作两边到达的最终状态相同,那么就可以互相转换 步数的话,如果把这个看成一棵树,那么就是一个树上距离问题,就要求出这两个状态在树上的深度以及他们lca的深度.这个操作直接模拟是不行的,不过如果把中间的棋子坐标和左边坐标差记为\(a\),右边的和中间的差记为\(b\)(这里假设\(a>b\),反之类似…
P1852 [国家集训队]跳跳棋 题目背景 原<奇怪的字符串>请前往 P2543 题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动成x,y,z.(棋子是没有区别的) 跳动的规则很简单,任意选一颗棋子,对一颗中轴棋子跳动.跳动后两颗棋子距离不变.一次只允许跳过1颗棋子. 写一个程序,首先判断是否可以完成任务.如果可以,输出最少需要的跳动次数. 输…