题意:

答案是一个1-n的排列。现在你需要给出一个1-n的排列,系统返回两个排列之间相同的最长子序列长度【不连续】,需要在5*n^2的询问次数内求出来。

ps:longest common subsequence of permutations a and b【最长相同子序列,不需要连续】

思路:

猜排列,那么肯定涉及到定位置。确定每个数字所在的位置,首先本题返回的是最长相同子序列,不要求连续,因此我们只需要考虑数字之间的相对位置即可。如果选中排列中的一个数字,移动该数字,则其他数字的相对位置都不会变化,因此对答案的影响只有+1或者-1,由此我们可以对于1-n中的所有数字,枚举其所在的位置。

不断更换数字i在排列中的相对位置,如果答案+1,则证明当前的位置是数字i应该在的位置,如果答案始终-1或者不变,则说明该数字原来的位置就是正确的,因此在n^2次询问中即可确定答案。

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define rep(i,a,b) for(int i = a; i <= b; i++)
using namespace std;int n;
int pos[50];int output()
{rep(i,1,n){cout << pos[i];if(i == n) cout << endl;else cout << " ";}int hp;cin >> hp;return hp;
}int find(int x)
{rep(i,1,n)if(pos[i] == x) return i;
}void change(int x, int y) //将pos[x]移到pos[y]
{if(x < y){int hp = pos[x];rep(i,x,y-1){pos[i] = pos[i+1];}   pos[y] = hp;}else if(x > y){int hp = pos[x];for(int i = x; i >= y+1; i--){pos[i] = pos[i-1];}   pos[y] = hp;   }
}void solve()
{int base = output();rep(i,1,n){int hp = find(i); //初始位置int gn = hp;int jud = 0;rep(j,1,n){if(j == gn) continue;change(hp,j);hp = j;int tmp = output();if(tmp == n) return;if(tmp == base+1){jud = 1;break;}}if(!jud) change(hp,gn);else base++;    }
}int main()
{cin >> n;rep(i,1,n)pos[i] = i;solve();return 0;
}

【ACM ICPC 2011–2012, Northeastern European Regional Contest】Interactive Permutation Guessing【交互题】相关推荐

  1. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area

    A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...

  2. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game

    G: 要你去才Paul的年龄,Paul的年龄在1~n之间,你每猜一个Paul会告诉你,你猜的这个数和他年龄的gcd,问在最坏情况下最少要猜多少次. 题解: 什么是最坏情况,我们直到如果他的年龄是1的话 ...

  3. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding

    B: 现在有一种新的2进制表示法,要你求出0~m-1的每个数的表示. 规则如下:n 是满足 m<=2n 最小数. 而0~m-1的数只能够用n-1个位和n个位来表示. 对于n个位表示的数来说不能有 ...

  4. 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)

    NEERC 15 题解1 题解2 官方题解 转载于:https://www.cnblogs.com/NEVERSTOPAC/p/5682661.html

  5. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02)

    B Bricks 计算几何乱搞 题意: 给你个立方体,问你能不能放进一个管道里面. 题解: 这是一道非常迷的题,其问题在于,你可以不正着放下去,你需要斜着放.此时你需要枚举你旋转的角度,来判断是否可行 ...

  6. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)

    其实挺简单的.先直接算出之前已经排在k这个数前面的数字.比如543是三位的,那么100~543都是可以的,两位的10~54. 如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能 ...

  7. 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16)

    A:模拟 注意各种情况和细节~ 1 #include<cstdio> 2 #include<string> 3 #include<cstdlib> 4 #inclu ...

  8. 2021 ICPC Southeastern Europe Regional Contest(更新至六题)

    2021 ICPC Southeastern Europe Regional Contest A题签到 A. King of String Comparison 题意:给两个字符串,找出有多少对(l, ...

  9. ICPC North Western European Regional Contest 2019 E. Expeditious Cubing(浮点数处理)

    题目链接 思路:先将前四次时间按照升序排序. 后三次时间的和如果小于给出的标准3,那么就inf,如果前三次的和大于标准时间 3那么就impossible,第三种情况就是,用标准时间 * 3 - 第二长 ...

  10. 2017-2018 Northwestern European Regional Contest (NWERC 2017)

    Rank Solved A B C D E F G H I J K --/-- 6/11 . O Ø O Ø Ø O O O . O O: 当场通过 Ø: 赛后通过 .: 尚未通过 A Ascendi ...

最新文章

  1. 19个人工智能(AI)热门应用领域,你知道多少?
  2. Oracle PL/SQL编程之过程
  3. SQL Server修改表结构后批量更新所有视图
  4. 图论 Make Unique:有向图和无向图的一些算法
  5. Android Studio 2.3 Canary 3 版本发布
  6. 【莫比乌斯反演】10.30破译密码
  7. Vue之实例的生命周期
  8. Red5 修改RTMP监听端口和ip
  9. php计算结果排序,php-按从数组计算出的值对数组进行排序
  10. Oracle基础知识-SQL简单命令
  11. linux 访问文件软件,Linux下访问文件的基本模式
  12. 编程中什么叫做元素什么叫帧_R编程中的数据帧
  13. java中random方法取值范围_java中最值的求法,你可能忽略了这种方法了!
  14. RPLIDAR的坐标系问题
  15. 一个div实现太极图案+动画(简单易懂)
  16. 诛仙服务器状态查询,《诛仙3》部分服务器数据互通公告
  17. oracle 根据符号分列,oracle 树结构数据层次分列显示
  18. 靠谱的录屏软件 + mp4格式转换软件
  19. ECCV 2022 | 适用于分类,检测,分割的生成式知识蒸馏开源
  20. IDA动态调试两种方式

热门文章

  1. 备课好帮手,免费分享 下载
  2. 投身管理工作(项目经理修炼手册正文的开头)
  3. 如何解决xp进系统的时候需要按enter键
  4. hdu 1213 “How Many Tables”(并查集基本到优化)
  5. ABC + DEF = GHI //递归思想的充分体现(重难点)
  6. 小米6 twrp_小米手机刷国际版欧版 MIUI 的详细教程
  7. python批量添加水印_手把手教你用Python批量给图片添加水印!知了干货分享!
  8. python 知乎接口_ZhihuVAPI 是一个可以让你以一种优雅的形式调用知乎数据的 Python 包....
  9. 云服务器远程连接的设置方法、安全组设置(外网可访问)
  10. nyoj20吝啬得过度(DFS)