题解:CF1015D Walking Between Houses
题解:CF1015D Walking Between Houses
算法
模拟,分类讨论
分析
首先,设每步走的距离为 \(t_i\),我们发现 \(t_i\) 应是满足 \(1\le t_i\le n-1\) 的。那么就很容易推出 NO 的情况:
- 当 \(s<k\) 时,由于每一步都要至少走一个单位,所以 \(k\) 次步数肯定用不完,而题目要求恰好 \(k\) 次;
- 当 \(\frac{s}{k}>n-1\) 时,此时我们把每一步都撑到了最大的距离也就是 \(n-1\) 个单位,但仍不满足要求,所以判负。
判完 NO 后,余下的就都是 YES 的情况,考虑怎么构造方案。
如果 \(k\mid s\),容易想到一种构造方案为 \(\frac{s}{k},1,\frac{s}{k},…,1,\frac{s}{k}(,1)\)。
如果 \(k\nmid s\),说明 \(s\div k\) 存在余数,那我们以上一种情况的方式处理后将余数加上即可。为了方便处理,我采用了上取整再将多走的距离减去的方法。这时多走的距离就是 \(\left\lceil\dfrac{s}{k}\right\rceil\times k-s\)。注意,在中间的某处减去一个单位的距离相当于少走了两个单位的距离(如 \(1,3,1\) 变为 \(1,2,1\)),那么在余数为奇数时,将中间的减完后会剩 \(1\),我们需要在结尾处理,此时需分类讨论。
- 当 \(k\) 为偶数时,原本 \(k\) 回到开头 \(1\),但因为我们处理剩下多走了 \(1\) 个单位的距离,所以我们少走一个应回到 \(2\)。
- 当 \(k\) 为奇数时,原本 \(k\) 会走到后面的 \(\frac{s}{k}\) 处,但因为我们多走了 \(1\) 个单位,所以我们将结尾走到的位置减 \(1\)。
最终输出答案即可,注意要开 long long,不然会 Wrong answer on test 8。
示例代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace Ryan
{
const int N=2e5+5;
vector<int> v;
int n,k,s;
signed work()
{
cin>>n>>k>>s;
if(k>s||s*1.0/k>(n-1))
{
cout<<"NO"<<endl;
return 0;
}
for(int i=1;i<=k;i++)
{
if(i&1)
v.push_back(ceil(s*1.0/k)+1);
else
v.push_back(1);
}
if(s%k)
{
int ss=ceil(s*1.0/k)*k-s;
// cout<<ss<<"**\n";
for(int i=1;i<=k&&ss-2>=0;i+=2)
{
ss-=2;
v[i-1]--;
}
if(ss)
{
if(k&1)
v[k-1]-=1;
else
v[k-1]+=1;
}
}
cout<<"YES"<<endl;
for(auto it:v)
cout<<it<<" ";
return 0;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
return Ryan::work();
}
题解:CF1015D Walking Between Houses的更多相关文章
- Codeforces Round #501 (Div. 3) 1015D Walking Between Houses
D. Walking Between Houses time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Walking Between Houses(贪心+思维)
Walking Between Houses There are nn houses in a row. They are numbered from 11 to nn in order from l ...
- 【CF1015D】Walking Between Houses(构造,贪心)
题意:从1开始走,最多走到n,走k步,总长度为n,不能停留在原地,不能走出1-n,问是否有一组方案,若有则输出 n<=1e9,k<=2e5,s<=1e18 思路:无解的情况分为两种: ...
- CodeForces - 1015 D.Walking Between Houses
Description Natasha is planning an expedition to Mars for nn people. One of the important tasks is t ...
- Codeforces Round #501 (Div. 3) D. Walking Between Houses (思维,构造)
题意:一共有\(n\)个房子,你需要访问\(k\)次,每次访问的距离是\(|x-y|\),每次都不能停留,问是否能使访问的总距离为\(s\),若能,输出\(YES\)和每次访问的房屋,反正输出\(NO ...
- Codeforces Round #501 (Div. 3) D. Walking Between Houses
题目链接 题意:给你三个数n,k,sn,k,sn,k,s,让你构造一个长度为k的数列,使得相邻两项差值的绝对值之和为sss, ∑i=1n∣a[i]−a[i−1]∣,a[0]=1\sum_{i=1}^n ...
- CF D. Walking Between Houses (贪心)
题意: 现在有n个房子排成一列,编号为1~n,起初你在第1个房子里,现在你要进行k次移动,每次移动一都可以从一个房子i移动到另外一个其他的房子j里(i != j),移动的距离为|j - i|.问你进过 ...
- Codeforces Div3 #501 A-E(2) F以后补
感觉自己有点强迫症 不都写出来就找理由不写题解 http://codeforces.com/contest/1015 题目链接 A. Points in Segments 题目意思 n个线段 ...
- Codeforces Round #501 (Div. 3)
A - Points in Segments 题意:implement #include<bits/stdc++.h> using namespace std; typedef long ...
- 【题解】poj 3162 Walking Race 树形dp
题目描述 Walking RaceTime Limit: 10000MS Memory Limit: 131072KTotal Submissions: 4941 Accepted: 1252Case ...
随机推荐
- Linux入门的基础知识点,有这篇就够了(持续更新)
很多粉丝给一口君留言,想要学习Linux资料,其实关注一口君的公众号,后台回复 1024 ,就有很多非常不错的电子书,但是有一个问题,很多粉丝是初学者,而这一大堆电子书,估计随便一本,还没看完就基本上 ...
- 什么是API?(详解)
编程资料时经常会看到API这个名词,网上各种高大上的解释估计放倒了一批初学者.初学者看到下面这一段话可能就有点头痛了. API(Application Programming Interface,应用 ...
- 排除log4j-api ( 排除log4j )
写法都一样,排除log4j,或者其相关的依赖 1. gradle: 1.1 判断是否有log4j a. 将war或jar解压后,搜索log4j b. 使用IDEA gradle菜单, 项目名-> ...
- SQL无法解决排序规则 Chinese_PRC_CI_AS 和 Latin1_General_CI_AS 的冲突
最近在执行一些跨库关联查询语句的时候提示了 "Cannot resolve the collatior conflict between "Chinese_PRC_Ci As&qu ...
- 浅谈舞蹈链(DLX)
名字: \(DL\),\(Dancing\space Link\),舞蹈链,是由\(Donald\space Knuth\)提出的数据结构,用来优化 \(X\) 算法,所以叫\(DLX\) \(X\) ...
- BOOST <boost/asio.hpp> 奇怪的编译错误 boost/asio/detail/consuming_buffers.hpp:105:65: error
在我的项目工程代码内#include <boost/asio.hpp>后导致了编译报错: ./include/boost/asio/detail/consuming_buffers.hpp ...
- Centos LNMP 安装日记
环境介绍 [root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) mysql8.0.12_b ...
- VMware Vsphere 8.0 ESXI 主机部署
一. VMware vSphere 8.0新特性 VMware vSphere 8.0是一个全新的版本,引入了许多新功能,其中最主要的新功能包括 1.集中式云控制台 使 IT 管理员能够借助 vSph ...
- 八字五行强弱喜用神测算api免费接口_json数据格式_可计算五行打分强弱
八字以木.火.土.金.水去分析其旺弱,而分析之法以月令地支最为有力,其次为时支,再次为日支,最弱为年支,而天干必须见地支有同类或有生自己的五行才有用,因为只有天干一个单独的五行,其力会弱至无用.这个接 ...
- MobileNet V2中InvertedResidual实现
1.为了方便理解其本身结构,找到源码理解一下. 2.论文地址:http://arxiv.org/pdf/1801.04381.pdf 3.V2相比较V1增加了倒残差结构和线性瓶颈层.整个结构按照维度来 ...