题意:

最多有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. Android Afinal框架(二)

    框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity Final ...

  2. sitemesh使用步骤

    使用sitemesh的步骤 1. 添加jar文件到classpath 2. 在web.xml中增加过滤器 <!-- Sitemesh --> <filter> <filt ...

  3. disruptor - Concurrent Programming Framework 并发编程框架

    disruptor发布了Java的2.0版本(.Net版本见这里),disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件 ...

  4. Quartz CronTrigger最完整配置说明

    转:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html   Quartz CronTrigger最完整配置说明 CronTr ...

  5. 用c#读取文件内容中文是乱码的解决方法:

    用c#读取文件内容中文是乱码的解决方法: //方法1: StreamReader din = new StreamReader(@"C:\1.txt", System.Text.E ...

  6. 修改webftp,在线文件管理

    项目中要添加一个文件管理功能,允许用户维护自己的静态HTML文件. 在网上找了一个现成的在线PHP文件管理工具:webftp 下载地址:http://down.chinaz.com/soft/3067 ...

  7. bzoj1760 [Baltic2009]Triangulation

    给定一个多边形的三角剖分(n<=1e5),且每个三角形有其颜色,问最多可以把这个三角剖分分成几个联通的部分,使任何一种颜色不出现在多个连通块中 建出三角剖分对应的树,同种颜色的点之间的路径是不能 ...

  8. NAND flash和NOR flash的区别详解

    我们使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为“FLASH ...

  9. java学习笔记(二)之数据部分

    数据类型 java数据类型 基本数据类型 数值型 整型byte/short/int/long   浮点型/double/float   字符型char     布尔型boolean 取值true  f ...

  10. 23. Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. = ...