题目

题目

原数据是水成啥样了,\(<\longrightarrow <=,>=\longrightarrow <=,\)这也能过 被\(hack\)后身败名裂

做法

简单的贪心吧

开始先填上\(1\)~\(k\),然后如果能全部\(+1\)就加:这样一定能为后面的构造创造出更多的可能(\(2\)倍的限制)

后面就找到能填的最小的位置反复填就行了

Code

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const LL maxn=1e6+9;
  5. LL n,k;
  6. LL a[maxn];
  7. int main(){
  8. cin>>n>>k;
  9. LL ret(0);
  10. for(LL i=1;i<=k;++i) a[i]=i,ret+=a[i];
  11. if(ret>n){
  12. puts("NO"); return 0;
  13. }
  14. LL tmp(n-ret);
  15. if(tmp>=k){
  16. LL lun(tmp/k);
  17. for(LL i=1;i<=k;++i) a[i]+=lun;
  18. ret+=lun*k;
  19. }
  20. LL up(0);
  21. while(true){
  22. tmp=n-ret;
  23. if(!tmp) break;
  24. LL now(std::max(k-tmp+1,up));
  25. if(a[now-1]*2<a[now]+1){
  26. LL f(0);
  27. for(LL j=now+1;j<=k;++j){
  28. if(a[j-1]*2>=a[j]+1){
  29. f=j;
  30. break;
  31. }
  32. }
  33. if(!f){
  34. puts("NO"); return 0;
  35. }
  36. up=f;
  37. for(LL j=f;j<=k;++j) ++a[j];
  38. ret+=k-f+1;
  39. }else{
  40. for(LL i=now;i<=k;++i) ++a[i];
  41. ret+=k-now+1;
  42. }
  43. }
  44. puts("YES");
  45. for(LL i=1;i<=k;++i) cout<<a[i]<<' ';
  46. return 0;
  47. }

CF1157D N Problems During K Days(简单构造)的更多相关文章

  1. CF1157D N Problems During K Days

    思路: 在1, 2, 3, ... , k的基础上贪心构造. 实现: #include <bits/stdc++.h> using namespace std; typedef long ...

  2. Codeforces Round #555 (Div. 3) D. N Problems During K Days 【数学思维】

    一 题面 D. N Problems During K Days 二 分析 对于这题,刚开始我就是陷入了对公式的执着,企图用公式直接确定第一个数,然后试着去找序列.经过思考和手动模拟后发现是很难保证正 ...

  3. 问题 H: 小k的简单问题

    问题 H: 小k的简单问题 时间限制: 1 Sec  内存限制: 128 MB提交: 107  解决: 57[提交] [状态] [命题人:jsu_admin] 题目描述 地图上有n个村庄,小k每个月需 ...

  4. 基于邻接表的长度为k的简单路径的求解

    描述 一个连通图采用邻接表作为存储结构.设计一个算法,判断无向图中任意给定的两点是否存在一条长度为k的简单路径. 输入 多组数据,每组m+3数据行.第一行有两个数字n,m和k,代表有n个顶点,m条边和 ...

  5. Codeforces Gym 100187K K. Perpetuum Mobile 构造

    K. Perpetuum Mobile Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/pro ...

  6. Codeforce Round #555 Div.3 D - N Problems During K Days

    构造题 话说挺水的题..当时怎么就WA到自闭呢.. 先把每个位置按照最低要求填满,也就是相差1..然后从最后一位开始把剩下的数加上,直到不能加为止. #include <bits/stdc++. ...

  7. Yet Another Ball Problem CodeForces - 1118E (简单构造)

    大意: 求构造n个pair, 每个pair满足 对于每k组, 让$b_i$为$[1,k]$, $g_i$循环右移就好了 int n, k, cnt; int main() { scanf(" ...

  8. CF1082D:Maximum Diameter Graph (简单构造)

    Graph constructive problems are back! This time the graph you are asked to build should match the fo ...

  9. 字典集合Dictionary<K,V>和构造的应用==>>体检套餐项目

    效果 首先,我们先来准备我们需要的类 1.检查项目类 using System; using System.Collections.Generic; using System.Linq; using ...

随机推荐

  1. windows安装oracle11g第二部

    Oracle 11g数据库安装及配置 安装Oracle数据库: 1)压缩包解压,双击运行win64_11gR2_database\database\setup.exe 2)输入电子邮件,点击“下一步” ...

  2. SQL server 数据库升级版本问题解决办法

    在升级或安装数据库的时候,会遇到数据库版本不对的问题,无论怎么升级,升级提示成功了,但打开数据库发现还是原来那个版本.甚至出现重装数据库之后,登陆页面已经提示安装的是新版本了,但登陆进去之后,发现数据 ...

  3. LeetCode 笔记系列16.2 Minimum Window Substring [从O(N*M), O(NlogM)到O(N),人生就是一场不停的战斗]

    题目:Given a string S and a string T, find the minimum window in S which will contain all the characte ...

  4. vue mixins的使用

    官网传送 刚开始接触vue的时候,官网关于mixins的例子看了好几遍,发现还是不会用,包括vuex也是后来慢慢理解一点的,不过和vuex比起来.mixns还是很好理解,简单很多了 就我目前理解mix ...

  5. Date 日期格式化

    <span id="time"></span> <script> //名称:日期加法函数 //参数:part(year.month.day.ho ...

  6. HDFS 常用Shell命令

    HDFS Shell命令 概述 HDFS Shell命令允许使用命令行在HDFS存储中进行文件夹和文件操作. 如文件夹的增删改查.文件的增删改查等. 开始练习hadoop时,打开Linux之后要用 s ...

  7. CodeForces 639 A

    Bear and Displayed Friends time limit per test2 seconds memory limit per test256 megabytes inputstan ...

  8. servlet容器与web容器的概念

    一般的说法是这样的,servlet容器的主要任务是管理servlet的生命周期.而web容器更准确的说应该叫web服务器,它是来管理和部署 web应用的.还有一种服务器叫做应用服务器,它的功能比web ...

  9. postfix邮箱服务器修改附件大小限制遇到的问题与解决

    Q1:邮件大小限制为30M,发送的附件大小为25M,发送后提示邮件大小超过限制 A:邮箱客户端在发送邮件时会把附件进行base64转码,转码之后邮件大小会超过附件+正文的大小,所以10M的附件在经过转 ...

  10. 7.Git工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 1.工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的test文件夹就是一个工作区 ...