LuoguP7593 凑数 题解
Content
给定 \(n\) 个整数 \(1,2,\dots,n\),请问是否能从这 \(n\) 个数中恰好选 \(k\) 个数,使得这 \(k\) 个数的和为 \(s\)。
数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 10^3\),\(1\leqslant k\leqslant n\leqslant 10^9\),\(1\leqslant s\leqslant 10^{18}\)。
Solution
我们都知道,从 \(1\) 到 \(n\) 中选出 \(k\) 个数,最小和是 \(1\sim k\) 的和,最大和是 \(n-k+1\sim n\) 的和,而在此之间的所有的整数和都能够通过最小和和最大和当中的某些数进行加减得到,比如说 \(1\sim 5\) 中选出 \(3\) 个数,最小和是 \(6\),最大和是 \(12\),那么可以构造出如下的整数和的方案:
- 选出的数的集合为 \(\{1,2,3\}\),总和为 \(6\)。
- 选出的数的集合为 \(\{1,2,4\}\),总和为 \(7\)。
- 选出的数的集合为 \(\{1,2,5\}\),总和为 \(8\)。
- 选出的数的集合为 \(\{1,3,5\}\),总和为 \(9\)。
- 选出的数的集合为 \(\{1,4,5\}\),总和为 \(10\)。
- 选出的数的集合为 \(\{2,4,5\}\),总和为 \(11\)。
- 选出的数的集合为 \(\{3,4,5\}\),总和为 \(12\)。
其实这也给出了一种构造出从 \(1\) 到 \(n\) 中选出 \(k\) 个数和为 \(s\) 的一种方案:
- 首先,先选出 \(1\sim k\)。
- 然后,从最后一个数(第 \(k\) 个数)开始往前推,如果当前到了第 \(i\) 个数,直接加到 \(n-k+i\),再根据是否超过了 \(s\) 进行判断。如果当前和 \(\geqslant s\),那么将当前数减回去到刚好使和等于 \(s\),否则继续往前推。
- 依此下去,就能够构造出一种满足题目要求的方案。
因此我们先算出 \(s_{\min}=\sum\limits_{i=1}^k i=\dfrac{k(k+1)}2\) 和 \(s_{\max}=\sum\limits_{i=1}^kn-k+i=\dfrac{(2n-k+1)k}2\),然后再拿 \(s_{\min},s_{\max}\) 与 \(s\) 进行比较。如果 \(s_{\min}\leqslant s\leqslant s_{\max}\),那么显然能够恰好选出和为 \(s\) 的 \(k\) 个数,否则就不行。
Code
int main() {
MT {
ll n = Rll, k = Rll, s = Rll;
((2 * n - k + 1) * k / 2 < s || (1 + k) * k / 2 > s) ? No : Yes;
}
return 0;
}
LuoguP7593 凑数 题解的更多相关文章
- P2188 小Z的 k 紧凑数 题解(数位DP)
题目链接 小Z的 k 紧凑数 解题思路 数位DP,把每一个数位的每一个数对应的可能性表示出来,然后求\(num(1,r)-num(1,l-1)\),其中\(num(i,j)\)表示\([i,j]\)区 ...
- NOIP 2008提高组第三题题解by rLq
啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...
- BestCoder Round #60 题解链接
题解 题目 1001 GT and sequence 注意先特判000的情况:如果读入的数据有000,那么去掉所有的000且最后答案和000取一个max. 剩下的正数显然全部乘起来比较优. 对于负数 ...
- 2018 ACM-ICPC Asia Beijing Regional Contest (部分题解)
摘要 本文主要给出了2018 ACM-ICPC Asia Beijing Regional Contest的部分题解,意即熟悉区域赛题型,保持比赛感觉. Jin Yong’s Wukong Ranki ...
- 51nod 1577 异或凑数
思路真的是挺巧妙的. 让我惊叹,原来线性基还能这么做?!?! 好吧,这种取若干个数异或凑数的题目怎么能少的了线性基呢? 但是,问题集中在于怎么快速提取一个区间的线性基 暴力n^2 线段树维护线性基?分 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
随机推荐
- html图片动态增加文字
<body> <!-- <div class="logo"> <img src="${imagePath}/disc.PNG" ...
- 藏书馆App基于Rainbond实现云原生DevOps的实践
我们需要的不是精通Kubernetes的工程师,我们需要一款小白都能用好的管理工具. -- 厦门正观易知科技有限公司运维负责人 郭传壕 大家好,我是厦门正观易知科技有限公司运维负责人郭传壕. 藏书馆是 ...
- Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS
1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...
- 【玩具】使用Python自动化发送微信消息进行订水
事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样: 然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就 ...
- 彻底搞清楚 JavaScript 的原型和原型链
JavaScript真的挺无语的,怪不得看了那么多的介绍文章还是一头雾水,直到自己终于弄懂了一点点之后才深有体会: 先从整体说起吧,发现没有基础做依据,那都是空中楼阁: 先从基础开始介绍吧,又发现基础 ...
- Codeforces 1368E - Ski Accidents(构造+思维)
Codeforces 题面传送门 & 洛谷题面传送门 神仙构造题(不过可能我构造太烂了?) 首先考虑这个奇奇怪怪的 \(\dfrac{4}{7}\),以及这个每个点出度最多为 \(2\) 的条 ...
- NOI 2008 志愿者招募
NOI 2008 志愿者招募 考虑用 $ p_i $ 表示第 $ i $ 天实际招收的人数,我们假设我们有三种志愿者,分别是 $ 1\to 2,1 \to 3 , 2\to 3 $ ,我们招手的人数分 ...
- 洛谷 P7515 - [省选联考 2021 A 卷] 矩阵游戏(差分约束)
题面传送门 emmm--怎么评价这个题呢,赛后学完差分约束之后看题解感觉没那么 dl,可是现场为啥就因为种种原因想不到呢?显然是 wtcl( 先不考虑"非负"及" \(\ ...
- Nginx pid文件找不到 nginx: [error] open() "/run/nginx/nginx.pid" failed (2: No such file or directory)
Nginx pid文件找不到 nginx: [error] open() "/run/nginx/nginx.pid" failed (2: No such file or dir ...
- 蛋白组DIA分析:Spectronaut软件使用指南
官方文档: https://biognosys.com/media.ashx/spectronautmanual.pdf 0. 准备 Spectronaut软件是蛋白组DIA分析最常用的谱图解析软件之 ...