题意:

最多有2000组测试样例,每组样例代表n,m;

n代表要把蛋糕平分的份数,m代表必须进行多少次操作。

一共有三种操作

1.竖切   经过蛋糕圆心,将蛋糕整个向下切。

2.横切   平行于蛋糕平面进行平切。

3.复制某块小蛋糕    这种操作只能在1和2所有操作都进行完才能进行。

求:

最少进行多少次复制操作可以将蛋糕分为一样的恰好n种。注意需要用恰好m次操作。

如果没有可行解输出-1。

思路:

假设进行三种操作的数目分别是xyz。然后连立两个式子把z消掉,get

2x(y+1)-(x+y)=n-m;

因为x+y+z=m且z>=0所以有x+y<=m;

所以有2x(y+1)<=n;

进而xy<n;(x和y都是非负整数)

所以得到结论在符合要求的等式中必定有x<=sqrt(n)||y<=sqrt(n);

所以对两者枚举到sqrt(n)即可。

坑:

我们应该明白,每次进行操作至少会使得蛋糕的数量增加1.所以当m>=n的时候直接输出-1.

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
const int inf=0x3f3f3f3f;
int main()
{
int t;
scanf("%d",&t);
while(t--){
long long ans=inf,n,m;
scanf("%lld%lld",&n,&m);
if(n<=m){
printf("-1\n");
continue;
}
for(int i=;i<=sqrt(n)+;i++){
if((n-m-i)%(*i-)==&&n-m-i>=){
long long y=(n-m-i)/(*i-);
if(i+y<=m){
ans=min(ans,m-i-y);
}
}
}
for(int i=;i<=sqrt(n)+;i++){
if((n-m+i)%(*i+)==&&n-m+i>=){
long long x=(n-m+i)/(*i+);
if(i+x<=m){
ans=min(ans,m-i-x);
}
}
}
if(m+==n)ans=;
if(ans==inf)ans=-;
printf("%lld\n",ans);
}
}

ZOJ 3407 Doraemon's Cake Machine [数学]的更多相关文章

  1. POJ 1325、ZOJ 1364、HDU 1150 Machine Schedule - from lanshui_Yang

    Problem Description As we all know, machine scheduling is a very classical problem in computer scien ...

  2. ZOJ 3230 Solving the Problems(数学 优先队列啊)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3230 Programming is fun, Aaron is ...

  3. One Person Game ZOJ - 3329(期望dp, 数学)

    There is a very simple and interesting one-person game. You have 3 dice, namely Die1, Die2 and Die3. ...

  4. ZOJ - 3450 Doraemon's Railgun (dp)

    https://vjudge.net/problem/ZOJ-3450 题意 一座位落(X0,Y0)的城市将遭受n个敌人的摧残.现在我们手上有某科学的超电磁炮,每次攻击都是一条射线,对于共线的敌人,必 ...

  5. ZOJ - 1504 Slots of Fun 【数学】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1504 题意 给出一串字符串 里面的每个字符的位置 都按照题目的意 ...

  6. ZOJ Monthly, October 2010 ABEFI

    ZOJ 3406 Another Very Easy Task #include <cstdio> #include <cstring> const int N = 10000 ...

  7. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  8. Machine Learning Algorithms Study Notes(6)—遗忘的数学知识

    机器学习中遗忘的数学知识 最大似然估计( Maximum likelihood ) 最大似然估计,也称为最大概似估计,是一种统计方法,它用来求一个样本集的相关概率密度函数的参数.这个方法最早是遗传学家 ...

  9. zoj 3511 Cake Robbery(线段树)

    problemCode=3511" target="_blank" style="">题目链接:zoj 3511 Cake Robbery 题目 ...

随机推荐

  1. Redis分布式部署,一致性hash

    一致性哈希 由于hash算法结果一般为unsigned int型,因此对于hash函数的结果应该均匀分布在[0,2^32-1]区间,如果我们把一个圆环用2^32 个点来进行均匀切割,首先按照hash( ...

  2. Redis持久化机制和恢复机制

    Redis持久化方式有两种: (1)RDB 对内存中数据库状态进行快照 (2)AOF 把每条写命令都写入文件,类似mysql的binlog日志 RDB 将Redis在内存中的数据库状态保存到磁盘里面, ...

  3. html标记语言的标准写法-参考自http://www.zhihu.com/question/20797118/answer/16212312

    网页头部的声明应该是用 lang="zh" 还是 lang="zh-cn"?   添加评论   查看全部 12 个回答   skydiver ,程序员 5 人赞 ...

  4. 【原创】VNC-view配置

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  5. HDU3516 树的构造

    题目大意:平面上有n个点,构成一个单调递减的序列.即对于任意的i<j,有xi<xj,yi>yj.现在要用一棵树连接这n个点.树边为有向边,只能向右或向上.求最小的权值. 分析:本题其 ...

  6. 批量修改Sqlserver中数据库对象的所属架构

    执行以下SQL,将执行结果拷贝出来,批量执行既可. SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name FROM sys.Proce ...

  7. datagridview 列位置 设置顺序与加载显示顺序不一致

    因为: dgv.AutoGenerateColumns = false;//禁止自动生成列 该属性是在 dgvJdmx.DataSource = dt; 之后设置的原因. 将两者调换,即可.

  8. SVN并行开发管理策略

    总的原则:trunk保证相对稳定.分支合并到主干时将冲突降至最低. (1)       trunk用于集成.测试.发布,可以提交fixbug代码,但不允许直接提交新特性. (2)       特性在分 ...

  9. java命令行HPROF Profiler

    The HPROF Profiler The Heap and CPU Profiling Agent (HPROF)是JAVA2 SDK自带的一个简单的profiler代理,它通过与Java Vir ...

  10. 【Android】源码external/目录中在编译过程中生成的文件列表

    => external/eyes-free:   accessibilityvalidator.jar (host,share) => external/mesa3d:   libMesa ...