CF1040B.Shashlik Cooking
普及-
通过率:0%
时间限制:1.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Long story short, shashlik is Miroslav's favorite food. Shashlik is prepared on several skewers simultaneously. There are two states for each skewer: initial and turned over.
This time Miroslav laid out n skewers parallel to each other, and enumerated them with consecutive integers from 1 to n in order from left to right. For better cooking, he puts them quite close to each other, so when he turns skewer number i, it leads to turning k closest skewers from each side of the skewer i, that is, skewers number i−k, i−k+1, ..., i−1, i+1, ..., i+k−1, i+k (if they exist).
For example, let n=6 and k=1. When Miroslav turns skewer number 3, then skewers with numbers 2, 3, and 4 will come up turned over. If after that he turns skewer number 1, then skewers number 1, 3, and 4 will be turned over, while skewer number 2 will be in the initial position (because it is turned again).
As we said before, the art of cooking requires perfect timing, so Miroslav wants to turn over all n skewers with the minimal possible number of actions. For example, for the above example n=6 and k=1, two turnings are sufficient: he can turn over skewers number 2 and 5.
Help Miroslav turn over all n skewers.
长话短说,沙希利克(shashlik)是米罗斯拉夫最喜爱的食物。沙希利克是同时在若干串签上烤制的。每根串签有两种状态:初始状态和翻转状态。
这一次,米罗斯拉夫将 n 根串签彼此平行地排成一排,并从左到右依次用连续整数 1 到 n 对其编号。为了使烤制效果更佳,他将串签摆放得非常靠近,因此当他翻转第 i 根串签时,会导致其左右两侧各自最近的 k 根串签也被翻转,即串签编号为 i−k, i−k+1, ..., i−1, i+1, ..., i+k−1, i+k 的那些串签(如果存在的话)。
例如,设 n=6 且 k=1。当米罗斯拉夫翻转第 3 根串签时,则编号为 2、3、4 的串签都会被翻转。若此后他再翻转第 1 根串签,则编号为 1、3、4 的串签将被翻转,而编号为 2 的串签将恢复至初始状态(因为它又被翻转了一次)。
如前所述,烹饪的艺术要求精准的时机控制,因此米罗斯拉夫希望以最少的操作次数翻转全部 n 根串签。例如,在上述例子中(n=6 且 k=1),两次翻转操作即足够:他可以翻转第 2 根和第 5 根串签。
请帮助米罗斯拉夫翻转全部 n 根串签。
输入格式
The first line contains two integers n and k (1≤n≤1000, 0≤k≤1000) — the number of skewers and the number of skewers from each side that are turned in one step.
第一行包含两个整数 n 和 k(1≤n≤1000,0≤k≤1000)—— 分别表示烤肉签的总数,以及每一步中从每一侧翻转的烤肉签数量。
输出格式
The first line should contain integer l — the minimum number of actions needed by Miroslav to turn over all n skewers. After than print l integers from 1 to n denoting the number of the skewer that is to be turned over at the corresponding step.
第一行应包含整数 l —— 米罗斯拉夫将全部 n 个烤肉签翻转所需的最少操作次数。随后输出 l 个介于 1 到 n 之间的整数,表示在对应步骤中需要翻转的烤肉签编号。
输入输出样例
输入#1
7 2
输出#1
2 1 6
输入#2
5 1
输出#2
2 1 4
说明/提示
In the first example the first operation turns over skewers 1, 2 and 3, the second operation turns over skewers 4, 5, 6 and 7.
In the second example it is also correct to turn over skewers 2 and 5, but turning skewers 2 and 4, or 1 and 5 are incorrect solutions because the skewer 3 is in the initial state after these operations.
在第一个例子中,第一次操作翻转烤肉签 1、2 和 3,第二次操作翻转烤肉签 4、5、6 和 7。
在第二个例子中,翻转烤肉签 2 和 5 也是正确的;但翻转烤肉签 2 和 4,或 1 和 5 是错误的解法,因为经过这些操作后,烤肉签 3 仍处于初始状态。
输入解题思路,AI测评打分。不知道怎么写?