首页 > 其他分享 >CF1839A题解

CF1839A题解

时间:2023-10-23 10:15:24浏览次数:32  
标签:lceil frac 分块 int 题解 CF1839A 整除 rceil

  • 分析

    可以很容易地想到如果只有1要求的话答案就是 \(\lceil \frac{n}{k} \rceil\)。
    最优策略显然是在每个整除分块的第一位放一个1。
    思考加入2条件如何修改。
    显然当最后一块的大小不为1时,大于1的部分后缀和为0。
    所以需要在最后一位加入一个1。
    所以答案为\(\begin{cases}\lceil \frac{n}{k} \rceil(最后一个整除分块大小为一,即n \mod k = 1或者k = 1)\\ \lceil \frac{n}{k} \rceil + 1(最后一个整除分块大小不为1)\end{cases}\)

    思考正确性。
    即当整除分块不为1时是否存在\(\lceil \frac{n}{k} \rceil\)的方案。
    假设存在。
    显然需要有一个1在最后。
    所以对于\(n - 1, k\)只有1要求存在一个\(\lceil \frac{n}{k} \rceil - 1\)的合法方案。
    由于最后一个块的大小大于1,所以对于\(n-1\)而言最后一个块仍然存在,所以\(\lceil \frac{n-1}{k} \rceil = \lceil \frac{n}{k} \rceil\)。
    所以对于\(n, k\)只有1要求存在一个\(\lceil \frac{n}{k} \rceil - 1\)的合法方案。
    显然先前已经得到答案为\(\lceil \frac{n}{k} \rceil\),而且由于\(n\)位置的前缀和为\(\lceil \frac{n}{k} \rceil\),所以必然不存在一种更优方案,与原命题得出的结论矛盾。
    原命题证伪。

  • 代码

#include <iostream>
using namespace std;
constexpr int MAXN(1000007);
int T, n, k;
inline void read(int &temp) { cin >> temp; }
inline int cil(int x, int y) { return (x / y) + (x % y != 0); }
inline void work() {
	read(n), read(k);
	if (k == 1)  cout << n << endl;
	else if (n % k <= 1)  cout << n / k + 1 << endl;
	else  cout << n / k + 2 << endl;
}
int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
	read(T);
	while (T--)  work();
	return 0;
}

标签:lceil,frac,分块,int,题解,CF1839A,整除,rceil
From: https://www.cnblogs.com/Kazdale/p/17781765.html

相关文章

  • [ZJOI2015] 地震后的幻想乡积分题解
    题意:给定一个无向图,边权为\([0,1]\)之间的随机变量。求图最小生成树最大边权的期望。\(n\le10\)。Soluion:Meatherm口诏:我都不知道这个东西怎么想出来的针对这道题,好像正常的方法是转计数然后斯特林反演+dp。但是如果想到概率理论,你就已经赢了很遗憾,我没想出来设最大边......
  • [题解]P9752 [CSP-S 2023] 密码锁
    这次CCF的行为过于迷惑了。思路首先发现只会有\(10^5\)种密码,考虑枚举它们,然后去check。假设当前密码是:\(p_1,p_2,p_3,p_4,p_5\)。如果它能从对于所有\(1\simn\)种错误的密码按照题目所述的操作得到,那么此密码就是合法的。假设我们现在判断当前密码能否由第\(i\)种......
  • 洛谷-P9779 题解
    正文对于每个选择题,都有两种状态,因此总状态数为\(2^n\)。请注意初始所有选择题都不选也是一个状态,不计入贡献,因此答案为\(2^n-1\)。代码:#include<iostream>usingnamespacestd;intmain(){longlongn;cin>>n;cout<<(1<<n)-1;}提交记录。......
  • CSP-S 2023 题解
    CSP-S2023题解密码锁发现总状态数只有\(10^5\)个,枚举\(O(n)\)暴力判断即可,复杂度\(O(10^5n)\)。或者每一个状态只对应了\(81\)个状态,枚出来,取交集即可,复杂度\(O(81n)\)。消消乐好的,来一波抽象做法QwQ我看到这道题的第一眼:这不就是QOJ6504Flower'sLand2吗......
  • 洛谷题解 | AT_abc321_c Primes on Interval
    目录题目翻译题目描述输入格式输出格式样例#1样例输入#1样例输出#1样例#2样例输入#2样例输出#2样例#3样例输入#3样例输出#3题目简化题目思路AC代码题目翻译【题目描述】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能......
  • [ABC234E] Arithmetic Number 题解
    题目传送门一道枚举题。暴力枚举数字位数、首位、等差数列的公差即可。注意公差的枚举范围,并且需要看看末尾合不合法。顺便提一下,我是用字符串存储枚举的数字的,所以写了一个check函数代替大于号。Code#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;......
  • [ABC231E] Minimal payments 题解
    题目传送门一道贪心题。感觉很裸啊,模拟赛时随便乱写了个暴力递归就能过。每次找最接近钱数\(x\)的面额\(num\),如果比钱数少那么答案为剩下\(x\bmodnum\)钱数的答案加上\(x\divnum\)。否则答案则为剩下\(num-x\)钱数的答案加上\(1\)。Code#include<bits/stdc++.h......
  • ABC323D题解
    ABC323DMergeSlimes题目简述小A有\(N\)种橡皮泥。对于第\(i\)种橡皮泥,它的大小为\(S_i\)且一共有\(C_i\)个。小A可以合成两个大小相同的橡皮泥,若这两个橡皮泥大小为\(X\),则新和成的橡皮泥大小为\(2X\)。小A想知道,在进行若干次合成后(有可能\(0\)次),他能获得......
  • P9754 [CSP-S 2023] 结构体 题解
    前言在考场上调了2h+还没调出来,并且T4也没来得及做。希望看到这段文字的你能避免这样的悲剧。正文题目要求动态创建类型,于是我用结构体代表一个struct(禁止套娃),要新建就new出来一个。(最后也没delete)structObj{typnamtnam;lllen,align;std::map<std:......
  • CSP-S 2023 题解
    expect:\(100+100+65+25=290\)真实:\(100+85+0+15=205\),rk62感觉自己考的好烂好烂好烂T4这么简单竟然想不出来,感觉如果自己不被T4吓到,全做出来其实有望365+?今年CSP-S怎么这么简单吓得我不敢做了T1暴力T2考场做法:设\(lst_i\)表示\(a_i=a_{lst_i}\)并且\((......