码迷,mamicode.com
首页 > 其他好文 > 详细

CF1270D Strange Device

时间:2019-12-30 13:03:46      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:col   map   range   ice   思路   name   数组   ase   names   

思路:

对数组的前k + 1个元素询问k + 1次,结果会出现两个数字,分别是第m大的数和第m + 1大的数。并且,第m + 1大的数将出现m次,第m大的数将出现k + 1 - m次。因此,统计较大的那个数出现的次数即是答案。

实现:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n, k;
 6     cin >> n >> k;
 7     set<int> st;
 8     for (int i = 1; i <= k + 1; i++) st.insert(i);
 9     int x, p;
10     map<int, int> mp;
11     for (int i = 1; i <= k + 1; i++)
12     {
13         if (i > 1) st.insert(i - 1);
14         st.erase(i);
15         cout << "? ";
16         for (auto it: st) cout << it << " ";
17         cout << endl;
18         cout.flush();
19         cin >> x >> p;
20         mp[p]++;
21     }
22     cout << "! " << mp.rbegin()->second << endl;
23     return 0;
24 }

CF1270D Strange Device

标签:col   map   range   ice   思路   name   数组   ase   names   

原文地址:https://www.cnblogs.com/wangyiming/p/12119158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!