【链接】 我是链接,点我呀:)

【题意】

题意

【题解】

设最后行分成了x行,列分成了y列。
那么答案就是floor(n/x)*floor(n/y)
然后x+y-2=k
//即平均分配x行、y列
我们可以枚举floor(n/x)的值
这个值其实就是n整除x
我们现在证明n/x的结果最多只可能有2*sqrt(n)个
证明:
当x小于$\sqrt{n}$时,n/x的值有$\sqrt{n}$个。
当x大于$\sqrt{n}$时,n/x的结果肯定小于$\sqrt{n}$,因此也只可能有$\sqrt{n}$个数字
所以综上,n/x的结果最多只可能有2*$\sqrt{n}$个数字
所以我们可以把1..$\sqrt{n}$和n/1,n/2...n/$\sqrt{n}$的值全都枚举一遍。
假设他们是n/x,然后求出最大的x(x越大,y就越小,m/y就越大),即n/这个数字。
然后算出来还剩下多少刀可以切在列上。
如果剩余的刀数小于0的话
不要忘记,我们是求出来最大的x,因此我们总是可以减少在行上切的刀数的(但最小的间距还是可以不变),然后让剩余的刀数变为0即可。
但是如果剩余刀数大于m-1了,那就说明行上能切的次数太少了,不能满足切成x行,即n/x取该值不合法

【代码】

#include <bits/stdc++.h>
#define ll long long
using namespace std; ll n,m,k;
vector<ll> v; int main()
{
cin >> n >> m >> k;
for (int i = 1;i*i <= n;i++){
v.push_back(n/i);
v.push_back(i);
}
ll ans = -1;
int len = v.size();
for (int ii = 0;ii < len;ii++){
//n/x
ll ndx = v[ii];
ll x = n/ndx;
ll rest = k-(x-1);
if (rest<0) rest = 0; //如果行砍的边太多了,可以少砍一点的,只要x个单位长度的连续边就好
if (rest>m-1) continue; //如果行砍得太少了则没有办法,因为没办法再多砍了
ll y = rest + 1;
if (ndx*(m/y)>ans){
ans = ndx*(m/y);
}
}
cout<<ans<<endl;
return 0;
}

【Codeforces 449A】Jzzhu and Chocolate的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  3. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  4. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  5. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

  6. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

  7. 【Codeforces 429D】 Tricky Function

    [题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...

  8. 【Codeforces 670C】 Cinema

    [题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...

  9. 【codeforces 515D】Drazil and Tiles

    [题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...

随机推荐

  1. HDOJ 5475 An easy problem

    题目传送门 题意:一个计算器,两种操作,乘上x,或者除掉之前的某个x,结果取模输出 分析:因为取模不支持除法,然后比赛时想到用逆元,结果发现MOD需要与b互质,结果一直苦苦寻找求逆元的其它方法.后来队 ...

  2. discuz x2.5用户注册后邮箱认证后无法收到邮件或者直接进垃圾箱

    又是一个周末,jquery特效继续折腾我那discuz论坛,我开启了个邮箱验证,恶意注册的太恶心了,没有办法. 能稍微屏蔽点,但是问题来了,据亲们反应,无法收到验证邮件,或者有时间直接进入垃圾箱,这个 ...

  3. asp.net core教程 (一)

    Asp.Net Core简介 ASP.NET Core 是一个全新的开源.跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things,物联 ...

  4. CF779A(round 402 div.2 A) Pupils Redistribution

    题意: In Berland each high school student is characterized by academic performance — integer value bet ...

  5. 《Python基础教程》 读书笔记 第五章(下)循环语句

    5.5.1while循环 x=1 while x<=100: print x x+=1 确保用户输入了名字: name="" while not name: name=raw ...

  6. 杨辉三角python的最佳实现方式,牛的不能再牛了

    def triangles(): N = [1] while True: yield N N.append(0) N = [N[i-1] + N[i] for i in range(len(N))] ...

  7. Tomcat配置Oracle数据源

    开发环境:Eclipse luna.tomcat 7.Oracle 配置Oracle datasource步骤 第一步:打开tomcat目录下的 context.xml 文件,添加 Resource ...

  8. https为数据传输保驾护航

    为什么要使用https 谷歌官网已宣布,今年7月起,Chrome浏览器的地址栏将把所有HTTP标示为不安全网站. 在客户端与服务器数据传输过程中,http协议传输是不安全的,一般情况下,http协议的 ...

  9. EF为什么向我的数据库再次插入已有对象?(ZT)

    最近做了个多对多对实体对象,结果发现每次只要增加一个子实体,就会自动添加一个父实体进去,而不管该父实体是否已经存在. 找了好久,终于找到这篇文章,照文章内容来看,应该是断开连接导致的. 原文地址:ht ...

  10. Angular和SAP C4C的事件处理队列

    Angular 我们在Angular框架的代码里能看到一个名为processQueue的函数: 这个函数是通过$scope.$apply启动的: 核心代码位于一个for循环里,循环体是一个存储异步处理 ...