130.json 3.3 KB
Newer Older
每日一练社区's avatar
test  
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{
   "question_id": 7428827,
   "question_title": "报数游戏",
   "question_content": "<p><strong>题目描述</strong><br />报数游戏\n首先&#xff0c;会给他们一人一个编号&#xff0c;并且每个人的编号都不相同。接下来的每一回合&#xff0c;会给一个数&#xff0c;编号超过它的最小编号的人要报出自己的编号。如果没有人的编号比给出的数要大&#xff0c;那么编号最大的人要报出自己的编号。每个人可以重复报号。\n会按照一个列表顺次报出每个回合的数&#xff0c;朋友们想知道每回合报出的编号应该是多少。\n<strong>输入</strong><br />输入数据共 3 行。\n第一行有两个整数 n,m(1≤n≤100,000,1≤m≤100,000)&#xff0c;分别表示参与游戏的朋友的个数&#xff0c;和游戏的回合数。 \n第二行 n个整数 ai(1≤ai≤100,000,000)&#xff0c;表示朋友们每个人的编号。对于 0≤i&lt;j&lt;n&#xff0c;都有 ai&lt;aj&#xff0c;即他们的编号递增排列。 \n第三行 m 个整数 qi(1≤qi≤100,000,000)&#xff0c;表示每回合给的数字。\n<strong>输出</strong><br />\n输出共一行 m 个整数&#xff0c;表示每回合报出的编号&#xff0c;每两个整数之间一个空格&#xff0c;最后一个数后面没有空格。</p>",
   "difficulty": "中等",
   "answer_id": 53395178,
   "answer_content": "<pre>\n<code>#include&lt;iostream&gt;\n#include&lt;cstring&gt;\n#include&lt;vector&gt;\n#include&lt;algorithm&gt;\nusing namespace std;\nint ai[100010], qi[100010];\nint main()\n{\n\tint a, q;\n\twhile (cin &gt;&gt; a &gt;&gt; q)\n\t{\n\t\tfor (int i &#61; 0; i &lt; a; i&#43;&#43;)cin &gt;&gt; ai[i];\n\t\tfor (int i &#61; 0; i &lt; q; i&#43;&#43;)cin &gt;&gt; qi[i];\n\t\tfor (int i &#61; 0; i &lt; q; i&#43;&#43;) {\n\t\t\tint left &#61; 0, right &#61; a - 1, mid;\n\t\t\twhile (left &lt; right) {\n\t\t\t\tmid &#61; (left &#43; right) &gt;&gt; 1;\n\t\t\t\tif (ai[mid] &lt;&#61; qi[i])left &#61; mid &#43; 1;\n\t\t\t\telse right &#61; mid;\n\t\t\t}\n\t\t\tif (left - 1 &lt; 0 || ai[left] &lt; qi[i])left&#43;&#43;;//qi[i]小于最小值或大于最大值的情况\n\t\t\ti ? cout &lt;&lt; &#34; &#34; &lt;&lt; ai[left - 1] : cout &lt;&lt; ai[left - 1];\t\t\t\n\t\t}\n\t\tcout &lt;&lt; endl;\n\t}\n\treturn 0;\n}</code></pre>\n\n<p> </p>\n",
   "tag_name": "c语言",
   "cpp": "#include<iostream>\n#include<cstring>\n#include<vector>\n#include<algorithm>\nusing namespace std;\nint ai[100010], qi[100010];\nint main()\n{\n\tint a, q;\n\twhile (cin >> a >> q)\n\t{\n\t\tfor (int i = 0; i < a; i++)cin >> ai[i];\n\t\tfor (int i = 0; i < q; i++)cin >> qi[i];\n\t\tfor (int i = 0; i < q; i++) {\n\t\t\tint left = 0, right = a - 1, mid;\n\t\t\twhile (left < right) {\n\t\t\t\tmid = (left + right) >> 1;\n\t\t\t\tif (ai[mid] <= qi[i])left = mid + 1;\n\t\t\t\telse right = mid;\n\t\t\t}\n\t\t\tif (left - 1 < 0 || ai[left] < qi[i])left++;\n\t\t\ti ? cout << \" \" << ai[left - 1] : cout << ai[left - 1];\t\t\t\n\t\t}\n\t\tcout << endl;\n\t}\n\treturn 0;\n}",
   "topic_link": "https://bbs.csdn.net/topics/600469965",
   "status": 1,
   "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术",
   "license": "csdn.net",
   "notebook": {
      "cpp": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/answer/ipynb/cpp/130.ipynb?type=file"
   },
   "notebook_enable": 1
}