zoukankan      html  css  js  c++  java
  • Shashlik Cooking

    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 nn skewers parallel to each other, and enumerated them with consecutive integers from 11 to nn in order from left to right. For better cooking, he puts them quite close to each other, so when he turns skewer number ii, it leads to turning kk closest skewers from each side of the skewer ii, that is, skewers number iki−k, ik+1i−k+1, ..., i1i−1, i+1i+1, ..., i+k1i+k−1, i+ki+k (if they exist).

    For example, let n=6n=6 and k=1k=1. When Miroslav turns skewer number 33, then skewers with numbers 22, 33, and 44 will come up turned over. If after that he turns skewer number 11, then skewers number 11, 33, and 44 will be turned over, while skewer number 22 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 nn skewers with the minimal possible number of actions. For example, for the above example n=6n=6 and k=1k=1, two turnings are sufficient: he can turn over skewers number 22 and 55.

    Help Miroslav turn over all nn skewers.

    Input

    The first line contains two integers nn and kk (1n10001≤n≤1000, 0k10000≤k≤1000) — the number of skewers and the number of skewers from each side that are turned in one step.

    Output

    The first line should contain integer ll — the minimum number of actions needed by Miroslav to turn over all nn skewers. After than print ll integers from 11 to nn denoting the number of the skewer that is to be turned over at the corresponding step.

    Examples
    input
    Copy
    7 2
    output
    Copy
    2
    1 6
    input
    Copy
    5 1
    output
    Copy
    2
    1 4
    Note

    In the first example the first operation turns over skewers 11, 22 and 33, the second operation turns over skewers 44, 55, 66 and 77.

    In the second example it is also correct to turn over skewers 22 and 55, but turning skewers 22 and 44, or 11 and 55 are incorrect solutions because the skewer 33 is in the initial state after these operations.


    借鉴一个大佬的,太强了。。。

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
    #include <set>
    #include <queue>
    #include <map>
    #include <sstream>
    #include <cstdio>
    #include <cstring>
    #include <numeric>
    #include <cmath>
    #include <unordered_set>
    #include <unordered_map>
    #include <xfunctional>
    #define ll long long
    #define mod 998244353
    using namespace std;
    int dir[4][2] = { {0,1},{0,-1},{-1,0},{1,0} };
    const int maxn = 16;
    const long long inf = 0x7f7f7f7f7f7f7f7f;
    
    int main()
    {
        int n, k;
        cin >> n >> k;
        int mi = n % (2 * k + 1);
        if(mi>k) 
            mi = k + 1, printf("%d
    ", n / (2 * k + 1) + 1);
        else if (mi == 0) 
            mi = k + 1, printf("%d
    ", n / (2 * k + 1));
        else 
        {
            printf("%d
    ", n / (2 * k + 1) + 1);
        }
        for (; mi <= n; mi += 2 * k + 1) 
            printf("%d ", mi);
        return 0;
    }
  • 相关阅读:
    ASP.NET3.5 企业级项目开发 -- 第一章(续):企业级项目框架解决方案的提出
    ASP.NET安全问题--Forms验证(后篇)--实战篇
    ASP.NET安全问题--Froms验证的具体介绍(中篇)
    ASP.NET3.5 企业级项目开发 -- 第二章(续) 数据访问层(DAL)的开发解决方案提出
    ASP.NET3.5 企业级项目开发
    ASP.NET3.5 企业级项目开发 -- 第二章 数据访问层(DAL)的开发
    通过js的学习谈谈学习方法
    转载:LINQ to SQL更新数据库操作
    通用分页存储过程真的有注入漏洞吗?
    [MOSS开发]:webpart在部署时应该注意的地方
  • 原文地址:https://www.cnblogs.com/dealer/p/12350631.html
Copyright © 2011-2022 走看看