CS 300 Second Minimum 交互题,思维(循环赛)
来源:互联网 发布:济南行知小学位置 编辑:程序博客网 时间:2024/05/18 11:01
CS 300
题意:交互题,电脑藏了一个[1..n]的排列.每次的询问:问两个下标(i,j),哪一个对应值较小.
n<=1e4,询问次数不超过min(2n,n+15)时.求出val=2对应的下标是多少?
容易用n-1次比较求出最小值val=1的下标.
题意:交互题,电脑藏了一个[1..n]的排列.每次的询问:问两个下标(i,j),哪一个对应值较小.
n<=1e4,询问次数不超过min(2n,n+15)时.求出val=2对应的下标是多少?
容易用n-1次比较求出最小值val=1的下标.
类似循环赛淘汰,线段树求最值 通过询问最底层n次 知道最小值和被最小值淘汰的logn个元素.第二小的肯定在这logn个元素内.
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e4+5,mod=1e9+7;int n;vector<int> v[N];int query(int i,int j){ printf("Q %d %d\n",i,j); fflush(stdout); int x; scanf("%d",&x); return x==i;}int solve(int le,int rg){ if(le==rg) return le; int m=le+rg>>1; int a=solve(le,m),b=solve(m+1,rg); if(query(a,b)) { v[a].push_back(b); return a; } else { v[b].push_back(a); return b; }}int main(){ scanf("%d",&n); int a=solve(1,n); int b=v[a][0]; for(int i=1;i<v[a].size();i++) { if(query(v[a][i],b)) b=v[a][i]; } printf("A %d\n",b); fflush(stdout); return 0;}
阅读全文
0 0
- CS 300 Second Minimum 交互题,思维(循环赛)
- CS 4820 second lecture
- HDU 6186 CS Course 简单思维题
- 循环赛
- CS 400 Tournament Swaps 循环赛,完全二叉树.
- CS交互流程
- CS 300 X Distance 思维+并查集
- Finding Second Minimum element in an Array
- 计蒜客 Minimum Distance in a Star Graph 思维水题
- WHOJ 1603 - Minimum Sum【思维】
- Find the first minimum number and the second one.
- 671. Second Minimum Node In a Binary Tree
- leetcode 671. Second Minimum Node In a Binary Tree
- 671. Second Minimum Node In a Binary Tree
- leetcode 671. Second Minimum Node In a Binary Tree
- Second Minimum Node In a Binary Tree问题及解法
- leetcode 671. Second Minimum Node In a Binary Tree
- 671. Second Minimum Node In a Binary Tree
- C#生成PDF总结
- Mybatis学习(01)-对原生jdbc程序中的问题总结 && mybatis概述
- python里使用正则表达式的嵌套可选模式
- Appium+python自动化测试框架(自动生成html,自动截图,运行完成后自动发送到邮箱)
- 区间内的随机数的生成【rand()】
- CS 300 Second Minimum 交互题,思维(循环赛)
- Memcached和Memcache安装(64位win7)
- 搭建第一个shiro安全框架。
- 金蝶EAS,BOS,前端Client代码执行SQL查询
- RTTI
- postgresql使用SSD页大小优化
- ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用
- PostgreSQL调整检查点的基础
- postgresql内存表