Codeforces1063D Candies for Children 【分类讨论】【暴力】
题目分析:
首先要想两个暴力,一个的时间复杂度是$O(n^2)$,另一个是$O([\frac{n}{k}])$的。
$n^2$的暴力可以枚举两段,一段有$i$个取两个的小朋友,一段有$j$个取两个的小朋友。
你就可以算出每轮选取他们的代价,假设为$alpha$和$beta$。你要做的只是解$ (x+1)*alpha+x*beta=k $,不难解决。
然后是$O([\frac{n}{k}])$的暴力,枚举选举的轮数,也就是上面的$x$。首先假设每个小朋友选一个糖果,然后问题变为小朋友选或不选糖果。
引入新参数$gamma$来表示现在你需要小朋友选的糖果数。
这样不难发现一组解是$(gamma,-gamma)$。然后两个解的选择范围为$[0 or 1,len1]$和$[0,len2]$。调一调就行了。
代码:
#include<bits/stdc++.h>
using namespace std; long long n,l,r,k; long long func(long long x,long long y,long long ki,int dr,long long ll,long long rr){
if(y == ){
if(ki == && dr == -) return -;
if(ki <= ll) return ki+rr;
else return -;
}
long long a = ki,b = -ki;
long long hh = a/y;a %= y; b += hh*x;
if(a > ll) return -;
if(dr == ){
if(b < ) return -;
if(b <= rr)return b+a;
else {
hh = (b-rr)/x+((b-rr)%x!=);
b -= hh*x;
a += hh*y;
if(a <= ll) return b+a;
else return -;
}
}else{
if(a == ) a += y,b -= x;
if(b < ) return -;
if(b <= rr) return b+a;
else {
hh = (b-rr)/x+((b-rr)%x!=);
b -= hh*x;
a += hh*y;
if(a <= ll) return b+a;
else return -;
}
}
} int main(){
scanf("%I64d%I64d%I64d%I64d",&n,&l,&r,&k);
long long um = (r-l+n)%n;
l = ; r = +um;
if(k/n <= 5e6){
long long len1 = r-l+,len2 = n-len1;
long long ans = -;
for(int i=;i<=k/n;i++){
long long zeta = k-i*n-len1;
if(zeta>=)ans = max(ans,func(i+,i,zeta,,len1,len2));
zeta = k+-i*n-len1;
if(zeta>=)ans = max(ans,func(i+,i,zeta,-,len1,len2));
}
printf("%I64d",ans);
}else{
int len1 = r-l+,len2 = n-len1;
int ans = -;
for(int i=;i<=len1;i++){
for(int j=;j<=len2;j++){
int alpha = len1+i,beta = len2+j;
long long zeta = k-alpha;
if(zeta % (alpha+beta) == ) ans = max(ans,i+j);
}
}
k++;
for(int i=;i<=len1;i++){
for(int j=;j<=len2;j++){
int alpha = len1+i,beta = len2+j;
long long zeta = k-alpha;
if(zeta % (alpha+beta) == ) ans = max(ans,i+j);
}
}
printf("%d",ans);
}
return ;
}
Codeforces1063D Candies for Children 【分类讨论】【暴力】的更多相关文章
- 【cf789B】Masha and geometric depression(分类讨论/暴力)
B. Masha and geometric depression 题意 在黑板上写数列,首项是b,公比是q,超过l时就停止不写.给定m个数,遇到后跳过不写.问一共写多少个数,如果无穷个输出inf. ...
- CF1063D Candies for Children
CF1063D Candies for Children 分类讨论题 n<=1e11, 整体上先分n<=2e6与否讨论 len长度,ans贪心的人,p就是len这一段贪心的人 n<= ...
- cf 251 B Playing with Permutations 暴力 分类讨论
题链;http://codeforces.com/problemset/problem/251/B B. Playing with Permutations time limit per test 2 ...
- UVaLive 6862 Triples (数学+分类讨论)
题意:给定一个n和m,问你x^j + y^j = z^j 的数量有多少个,其中0 <= x <= y <= z <= m, j = 2, 3, 4, ... n. 析:是一个数 ...
- CodeForces - 789B B. Masha and geometric depression---(水坑 分类讨论)
CodeForces - 789B 当时题意理解的有点偏差,一直wa在了14组.是q等于0的时候,b1的绝对值大于l的时候,当b1的绝对值大于l的时候就应该直接终端掉,不应该管后面的0的. 题意告诉你 ...
- P5979 [PA2014]Druzyny dp 分治 线段树 分类讨论 启发式合并
LINK:Druzyny 这题研究了一下午 终于搞懂了. \(n^2\)的dp很容易得到. 考虑优化.又有大于的限制又有小于的限制这个非常难处理. 不过可以得到在限制人数上界的情况下能转移到的最远端点 ...
- Codeforces 521E - Cycling City(点双连通分量+分类讨论)
Codeforces 题面传送门 & 洛谷题面传送门 大家都是暴力找生成树然后跳路径,代码不到 50 行(暴论)的一说--好,那本蒟蒻决定提供一种代码 150 行,但复杂度也是线性的分类讨论做 ...
- Codeforces 460D Little Victor and Set --分类讨论+构造
题意:从区间[L,R]中选取不多于k个数,使这些数异或和尽量小,输出最小异或和以及选取的那些数. 解法:分类讨论. 设选取k个数. 1. k=4的时候如果区间长度>=4且L是偶数,那么可以构造四 ...
- BZOJ-1067 降雨量 线段树+分类讨论
这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...
随机推荐
- 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)
十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别.最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器 ...
- immutability因React官方出镜之使用总结分享!
作者:首席填坑官∙苏南 公众号:honeyBadger8,群:912594095,本文原创,著作权归作者所有,转载请注明原链接及出处. 引言 之前项目中遇到数据拷贝.引用之间数据层级嵌套过深,拷贝的值 ...
- SAI窗口无法移动
昨天开SAI遇到了一个很奇怪的问题,改变了双屏的位置后SAI的窗口不能移动两边也有黑边,貌似是这样,标题栏只能进行上下改变窗口大小,不能移动窗体 问题是这样出现的:把任务栏解除锁定拖到侧边就会这样 解 ...
- SoftWater——SDN+UnderWater系列论文一
---- SoftWater: Software-defined networking for next-generation underwater communication systems 来源: ...
- 软件工程(FZU2015) 学生博客列表(最终版)
FZU:福州大学软件工程 张老师的博客:http://www.cnblogs.com/easteast/ 经过前两周选课,最后正式选上课程的所有学生博客如下: 序号 学号后3位 博客 1 629 li ...
- Elasticsearch 5.0Head插件
Elasticsearch 5.0 —— Head插件部署指南 使用ES的基本都会使用过head,但是版本升级到5.0后,head插件就不好使了.下面就看看如何在5.0中启动Head插件吧! 官方 ...
- Git文件冲突的常用解决方法
在提交代码时,偶尔会有文件冲突的情况,当出现: Please, commit your changes or stash them before you can merge. 提示后,可用依次输入下列 ...
- org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manu
这个是sql 语句 错误 仔细检查 SQL语句是否写错了 org.apache.ibatis.exceptions.PersistenceException: ### Error queryi ...
- 查看mysql数据库连接数、并发数相关信息
查看mysql数据库连接数.并发数相关信息. - caodongfang126的博客 - CSDN博客 https://blog.csdn.net/caodongfang126/article/det ...
- HowTos/Virtualization/VirtualBox - CentOS Wiki
https://wiki.centos.org/HowTos/Virtualization/VirtualBox