UVa 10970 大块巧克力

https://vjudge.net/problem/UVA-10970

题意:

把一个m行n列的矩形巧克力切成mn个1×1的方块,需要切几刀。

思路:

可以考虑用动态规划的方法去做,当然,最简单的是直接找到规律,直接计算出来。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 #include<cstring>
 5 using namespace std;
 6
 7 int n, m;
 8 int d[305][305];
 9
10 int dp(int i, int j)
11 {
12     int& ans = d[i][j];
13     if (ans != -1)  return ans;
14     if (i == 1)    return ans=j - 1;
15     if (j == 1)    return ans=i - 1;
16     if (i % 2 == 0)      ans = 2 * dp(i / 2, j) + 1;
17     else if (j % 2 == 0) ans = 2 * dp(i, j / 2) + 1;
18     else return ans = dp(i - 1, j) + j;
19 }
20
21 int main()
22 {
23     ios::sync_with_stdio(false);
24     //freopen("D:\\txt.txt", "r", stdin);
25     while (cin >> n >> m)
26     {
27         memset(d, -1, sizeof(d));
28         dp(n, m);
29         cout << d[n][m] << endl;
30     }
31 }
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 #include<cstring>
 5 using namespace std;
 6
 7 int n, m;
 8
 9 int main()
10 {
11     ios::sync_with_stdio(false);
12     //freopen("D:\\txt.txt", "r", stdin);
13     while (cin >> n >> m)
14     {
15         cout << m*n - 1 << endl;
16     }
17 }
时间: 2024-10-14 05:19:05

UVa 10970 大块巧克力的相关文章

UVA 11636 Hello World,LA 3602 DNA Consensus String,UVA 10970 Big Chocolate,UVA 10340 All in All,UVA 11039 Building Designing

课程好紧啊,只能刷点水题了,几乎都是贪心. UVA 11636 Hello World 二的幂答案就是二进制长度减1,不是二的幂答案就是是二进制长度. #include<cstdio> int main() { int n,kas = 0; while(scanf("%d",&n),n>0){ int r = 0; for(n--;n;n>>=1) r++; printf("Case %d: %d\n",++kas,r); }

UVa 10970 Big Chocolate (想一下就AC了)

题意:给你一个m*n的巧克力,让人把它切成1*1的,但是每次只能切一下,问要切多少刀. 析:简单啊,我就不明白了 怎么那么多人TLE了,不会当DP做了吧,其实不用的. 假设有一个1*m的巧克力,很明显知道是切m-1刀,那么再把n把变成1,要n-1刀,加起来就OK. 代码如下: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <vecto

leetcode 5111. 分享巧克力(最大化最小值)

题目: 你有一大块巧克力,它由一些甜度不完全相同的小块组成.我们用数组 sweetness 来表示每一小块的甜度. 你打算和 K 名朋友一起分享这块巧克力,所以你需要将切割 K 次才能得到 K+1 块,每一块都由一些 连续 的小块组成. 为了表现出你的慷慨,你将会吃掉 总甜度最小 的一块,并将其余几块分给你的朋友们. 请找出一个最佳的切割策略,使得你所分得的巧克力 总甜度最大,并返回这个 最大总甜度. 示例 1: 输入:sweetness = [1,2,3,4,5,6,7,8,9], K = 5

大白书

UVA 11292 (简单贪心) 题意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要的最少金币. 思路: 贪心,均从小到大排序.为每一条龙找一个恰好能杀他的骑士.简单贪心. UVA 11729 (经典贪心问题) 题意: n个任务,需要交代B分钟,执行J分钟,让你合理选择交代任务的次序,求得n个任务完成的最小总时长. 思路: 经典贪心,通过比较俩俩的关系,得到整个序列的贪心排序方法.这个

大白书第一章

UVA 11292 The Dragon of Loowater(简单贪心) 题意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要的最少金币. 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 20000 + 5; 4 int n, m; 5 int night[maxn], dragon[maxn

cumt2017春季——周练(二)

A.Bear and Big Brother 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int x, y; 6 scanf("%d%d", &x, &y); 7 8 int ans = 0; 9 while(x <= y) 10 { 11 x *= 3; 12 y *= 2; 13 ans++; 14 } 15 printf("%d\n"

今日竞赛——解题报告

MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 546A Description A soldier wants to buy w bananas in the shop. He has to pay k dollars for the first banana, 2k dollars for the second one and so on (in

东北育才第2天

这个时间,过得太快了.在这里的时间更为紧张,没有课间,没有其他内容,很多时候会觉得很累,不过还好.听说校内已经讲到一些高深的东西了,本人表示很感兴趣. 这个地方很神奇,厕所里面顶上挂有“真菌”,餐厅是“清真”的(不过确实很好吃,还可以自己洗碗). 今天考试,渐入佳境,成了rank 1,我也很感到惊讶.胜者居然奖赏一大块巧克力,特别有意思.但我也应该多加警惕,当然也不要太放在心上,追求提升,而不应当是一味的追求名利. 上午考试的时候,突然飘过来一阵响亮的歌声,是高三的学长学姐们在回声嘹亮,霎时间很

新概念英语第二册31-60课(转)

lesson 31 成功者的故事   1. 昨天下午Yesterday afternoon弗兰克 霍金斯 Frank Hawkins当时正在告诉我 was telling me关于他的经历 about his experiences 当他年轻时.as a young man.   昨天下午弗兰克 霍金斯告诉我他年轻时的经历.Yesterday afternoon Frank Hawkins was telling me about his experiences as a young man.