UVa 11636 你好 世界!(贪心)

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

题意:

经过一次复制,一条语句会变成两条语句,再经过一次变成四条语句...求最少需要复制几次能使条数恰好为n?

思路:

贪心水题。

每次以最大复制数复制即可。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 using namespace std;
 5
 6 const int maxn = 50 + 5;
 7
 8 int n;
 9
10 int main()
11 {
12     ios::sync_with_stdio(false);
13     //freopen("D:\\txt.txt", "r", stdin);
14     int kase = 0;
15     while (cin >> n && n >=0)
16     {
17         int num = 1;
18         int cnt = 0;
19         while (true)
20         {
21             if (num >= n)
22                 break;
23             num *= 2;
24             cnt++;
25         }
26         cout << "Case " << ++kase << ": " << cnt << endl;
27     }
28 }
时间: 2024-12-21 16:46:24

UVa 11636 你好 世界!(贪心)的相关文章

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 10317 - Equating Equations 贪心 dfs

UVA 10317 - Equating Equations 贪心 dfs ACM 题目地址:UVA 10317 - Equating Equations 题意: 给一个等式,但是这个等式不一定是正确的,要你对等式中的数字重新排序,使得等式成立.等式只有+和-,数字个数小于16. 分析: 以a + b - c = d - e为例子. 1. 我们把等式右边的各项都换到左边,a + b - c - d + e = 0 2. 把+项和-项放一起,就变成(a + b + e) - (c + d) = 0

UVA 12130 - Summits(BFS+贪心)

UVA 12130 - Summits 题目链接 题意:给定一个h * w的图,每个位置有一个值,现在要求出这个图上的峰顶有多少个.峰顶是这样定义的,有一个d值,如果一个位置是峰顶,那么它不能走到不大于该峰顶高度 - d的位置,如果满足这个条件下,并且无法走到更高的山峰,那么它就是峰顶 思路:利用贪心的策略,把所有点丢到优先队列,每次取出最高的峰值开始找,进行广搜,搜的过程中记录下最大值的点的个数,如果这个是峰顶,就加上这个数.判断是不是峰顶的方法为,如果广搜过程中,不会找到一个点的能到的最高峰

uva 1534 - Taekwondo(dp+贪心)

题目连接:uva 1534 - Taekwondo 题目大意:有两组什么东西,题目背景有点忘记了,就是给出两组数,两组个数分别为n,m,要求找出min(n,m)对数,每个数最多最多选一次,使得这min(n,m)对数ai,bi,ai-bi的绝对值之和最小. 解题思路:贪心,将两组数分别排序,然后dp[i][j]表示i对,匹配到j时候的最优解. #include <cstdio> #include <cstring> #include <cmath> #include &l

uva 11636 Hello World!(找规律)

uva 11636 Hello World! When you first madethe computer to print the sentence "Hello World!", you felt so happy, not knowinghow complex and interesting the world of programming and algorithmwill turn out to be. Then you did not know anything abou

UVA 1422 - Processor (二分+贪心+优先队列)

先对开始时间进行排序,在利用优先队列是结束时间早点先出队: 因为时间只有20000,我们可以去枚举每个单位时间,看要给分配给那个任务, 如果某个时间队列中还有结束时间大于枚举的时间,就跳出判断是在mid的右边. #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> #include<stdlib.h> #include<math.h> #

uva 1372 - Log Jumping(贪心)

题目链接:uva 1372 - Log Jumping 题目大意:给出n,k,表示有n个木板和长度均为k,现在给出所有木板的左边位置,如果两块木板有重叠,那么就可以在两块木板之间移动,问说最多能形成的最大块数的环. 解题思路:将木块按照左边界排序,每次如果i块板和i-1,i-2有重叠,那么i块板也可以加入环. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; co

uva 10020- Minimal coverage (贪心思想 简单区间覆盖)

题目大意:给出一个范围M,然后给出若干的区间,以0 0 终止, 要求用最少的区间将0 ~M 覆盖,输出最少个数以及方案. 解题思路:典型的区间覆盖问题,算法竞赛入门经典P154上有讲. /*author: charkj_z */ /*time: 0.108s */ /*rank: 674 */ /*为什么不把没用的地方去掉? 因为去掉了我觉得不像我能写出来的*/ /*Ac code : */ #include<stdio.h> #include<string.h> #include