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 ...
随机推荐
- idea插件 Background Image Plus 随机更换背景图片
首先在市场搜索: Background Image Plus 设置图片: 在view中,有set 图片,有random图片,有clean图片的 设置就是用set,随便设置个路径. 重点来了,随机更换背 ...
- Codeforces 1276D - Tree Elimination(树形 dp)
Codeforces 题面传送门 & 洛谷题面传送门 繁琐的简单树形 dp(大雾),要是现场肯定弃了去做 F 题 做了我一中午,写篇题解纪念下. 提供一种不太一样的思路. 首先碰到这样的题肯定 ...
- 拒绝恶意同构ssh登陆服务器脚本
#!/bin/bash #Deny specified IP access #IP:who is fail to login sever SECURE_LOG=/var/log/secure #通过s ...
- Python中pymysql基本使用
Python中pymysql模块通过获取mysql数据库命令行游标执行数据库命令来进行数据库操作 优点:操作数据库语句所见即所得,执行了什么数据库语句都很清楚 缺点:操作繁琐,代码量多 1. pymy ...
- Flink(九)【Flink的重启策略】
目录 1.Flink的重启策略 2.重启策略 2.1未开启checkpoint 2.2开启checkpoint 1)不设置重启策略 2)不重启 3)固定延迟重启(默认) 4)失败率重启 3.重启效果演 ...
- 【Reverse】DLL注入
DLL注入就是将dll粘贴到指定的进程空间中,通过dll状态触发目标事件 DLL注入的大概流程 https://uploader.shimo.im/f/CXFwwkEH6FPM0rtT.png!thu ...
- Linux基础命令---nslookup查询域名工具
nslookup nslookup是一个查询DNS域名的工具,它有交互和非交互两种工作模式. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- Docker 生产环境之配置容器 - 自动启动容器
原文地址 Docker 提供了重启策略,以控制容器在退出时是否自动启动,或在 Docker 重新启动时自动启动.重启策略可确保链接的容器以正确的顺序启动.Docker 建议使用重启策略,并避免使用流程 ...
- 微服务中心Eureka
一.简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS(AWS 是业务流程管理开发平台AWS Enterprise BPM Platform ...
- 【Linux】【Shell】【text】grep
grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的"模式(过滤条件)" ...