zoukankan      html  css  js  c++  java
  • CF1270D Strange Device

    Solution

    我们可以对前 (k+1) 个元素询问 (k+1) 次,因为题目中明确说明 (k<n) ,所以是不会超的。

    这样做的正确性:每次会少一个数,当你少的是第 (m) 个数之前的数或 (m) 时,返回的会是第 (m+1) 大的数,当你少的是 (m) 之后的数时,返回的是第 (m) 大的数。

    (m+1) 大的数会出现 (m) 次,第 (m) 大的数会出现 (k+1-m) 次,所以统计较大数出现次数即可。

    #include<bits/stdc++.h>
    
    using namespace std;
    map<int,int> f;
    
    int main(){
        ios::sync_with_stdio(false);
        int n,k;
        cin>>n>>k;
        int maxx=0;
        for(int i=1;i<=k+1;i++){
            putchar('?');
            for(int j=1;j<=k+1;j++){
                if(i==j) continue;
                printf(" %d",j);
            }
            puts("");
            fflush(stdout);
            int x,y;
            cin>>x>>y;
            f[y]++;
            maxx=max(maxx,y);
        }
        printf("! %d
    ",f[maxx]);
        return 0;
    }
    
  • 相关阅读:
    9-2 链表
    transient
    获取当前电脑的ip地址
    LinkList
    Java代码模拟链表
    什么是复合主键
    wp8 入门到精通
    C# 从入门到精通
    wp8 json2csharp
    wp8 安装.Net3.5
  • 原文地址:https://www.cnblogs.com/jasony/p/13777968.html
Copyright © 2011-2022 走看看