zoukankan      html  css  js  c++  java
  • 【CF1015D】Walking Between Houses(构造,贪心)

    题意:从1开始走,最多走到n,走k步,总长度为n,不能停留在原地,不能走出1-n,问是否有一组方案,若有则输出

    n<=1e9,k<=2e5,s<=1e18

    思路:无解的情况分为两种:总长度太大,步数太多

    每次贪心从1走到n或从n走到1,但要注意给剩下的步数留出空间

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<string>
     4 #include<cmath>
     5 #include<iostream>
     6 #include<algorithm>
     7 #include<map>
     8 #include<set>
     9 #include<queue>
    10 #include<vector>
    11 using namespace std;
    12 typedef long long ll;
    13 typedef unsigned int uint;
    14 typedef unsigned long long ull;
    15 typedef pair<int,int> PII;
    16 typedef vector<int> VI;
    17 #define fi first
    18 #define se second 
    19 #define MP make_pair
    20 #define N  100010
    21 #define M  200
    22 #define MOD 998244353
    23 #define eps 1e-8 
    24 #define pi acos(-1)
    25 
    26 
    27 
    28 int main()
    29 {
    30     //freopen("D.in","r",stdin);
    31     //freopen("D.out","w",stdout);
    32     ll n,k,s;
    33     scanf("%lld%lld%lld",&n,&k,&s);
    34     ll now=1;
    35     if(k>s||k*(n-1)<s)
    36     {
    37         printf("NO
    ");
    38         return 0;
    39     }
    40     printf("YES
    ");
    41     while(k)
    42     {
    43         ll t=min(n-1,s-(k-1));
    44         if(now-t>0) now-=t;
    45          else now+=t;
    46         printf("%lld ",now);
    47         s-=t;
    48         k--;
    49     }
    50      return 0;
    51 }
  • 相关阅读:
    linux 中rz sz 文件传输
    linux find 命令
    深度学习的博客
    cifar10数据的转换、代码解释
    gflags的使用实例(转载)
    leveldb使用 (转载)
    (转载+整理)Leveldb安装及例子
    2013-09-25-【随笔】-Roy
    2013-09-22 [随笔]-Roy
    2013-08-12【随笔2】-Roy
  • 原文地址:https://www.cnblogs.com/myx12345/p/9852909.html
Copyright © 2011-2022 走看看