codeforces 520 Two Buttons】的更多相关文章

http://codeforces.com/problemset/problem/520/B B. Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input:standard input output:standard output Vasya has found a strange device. On the front panel of a device there are: a…
http://codeforces.com/problemset/problem/520/A A. Pangram time limit per test 2 seconds memory limit per test 256 megabytes input:standard input output:standard output A word or a sentence in some language is called a pangram if all the characters of…
 Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing s…
Manao is trying to open a rather challenging lock. The lock has n buttons on it and to open it, you should press the buttons in a certain order to open the lock. When you push some button, it either stays pressed into the lock (that means that you've…
Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Description Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing some positive integer. After click…
题目链接 \(Description\) 给定两个数\(n,m\),每次可以使\(n\)减一或使\(n\)乘2.求最少需要多少次可以使\(n\)等于\(m\). \(Solution\) 暴力连边BFS或者DP都行,都是O(n)的.有更优的做法. 过程是可逆的,我们考虑m变成n,有两种操作:1是m+=1:2是当m为偶数时,m/=2. 要用最少的次数使得m<=n. 因为m加两次再除以二和先除以二再加一次得到的结果是一样的,即能除就不加.这样就O(logn)解决了. 正推n到m好像推不出性质啊..正…
题目链接:http://codeforces.com/problemset/problem/520/B 题意 给出两个数n和m,n每次只能进行乘2或者减1的操作,问n至少经过多少次变换后能变成m 思路 在百度之前用了各种方法,dfs,递推什么的能用的全用了,最后都WA在了第七组 百度了一下,看到了大佬们的代码震精了!!!竟然只有一行!! 用逆推,把从n变成m转换成从m变成n. 如果m是偶数那么m一定是通过上一步乘2的操作变来的,如果是奇数,那么一定是通过上一步减一变来的.最后当m小于n的时候,停…
Codeforces Round #520 (Div. 2) https://codeforces.com/contest/1062 A #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define sqr(x) ((x)*(x)) #define pb push_back #define eb emplace_back…
/*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思路:当然是*2可以掠过的步数更少啦,如果n是输入,m是输出. 如果n大于m,不能使用红色按钮,很容易看出,步数就是n-m. 如果n比m小,如果m是偶数的话,m/2,如果m是奇数,m+1,这样一直循环判断n是不是还比m小,不符合就跳出循环,进入第一个如果.*/ /*正向BFS #include<ios…
[题目链接]:http://codeforces.com/contest/520/problem/B [题意] 给你一个数n; 对它进行乘2操作,或者是-1操作; 然后问你到达m需要的步骤数; [题解] 操作的过程中; 可能会大于m吧: 也不知道是多少倍; 但也没事,不差那一点时间. bfs [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,r…
占个坑慢慢填 A ()[http://codeforces.com/contest/1062/problem/A] 题意:现在有一个长度为n的严格上升正整数序列 每个数的取值在[1, 1000] 现在求一个最长的连续子序列 使得删掉这个序列后 可以推导出原来的序列 求这个序列的最长长度 当然如果a[i] - a[j] == i - j那么a[j +1]到a[i-1]都是可以推导出来的 另外 第二个是2或倒数第二个是999 那么第一个或最后一个可以推导 B 现在有两种操作 mul x:把x乘上任意…
Manao is trying to open a rather challenging lock. The lock has n buttons on it and to open it, you should press the buttons in a certain order to open the lock. When you push some button, it either stays pressed into the lock (that means that you've…
https://codeforces.com/contest/1062/problem/E 题意 给一颗树n,然后q个询问,询问编号l~r的点,假设可以删除一个点,使得他们的最近公共祖先深度最大.每次询问,输出删除的点和祖先的深度 思路 考虑dfs序来判断v是否在u的子树里: dfn[u]<dfn[v]<=max(dfn[u的子树]) 那么进一步拓展,dfs序之差越大,点就在越分离的地方,这些点的lca一定是lca(max(dfn[u]),min(dfn[u])) 这不仅知道了需要去掉哪个点(…
B. Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing…
B. Two Buttons time limit per test : 2 seconds memory limit per test :256 megabytes input :standard input output : standard output Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display s…
B. Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing…
B. Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing…
题意:给你一个数字n,有两种操作:减1或乘2,问最多经过几次操作能变成m: 随后发篇随笔普及下memset函数的初始化问题.自己也是涨了好多姿势. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #define INF 0x7fffffff; using namespace std; ], vis[]; int dp(int n, int m) { ) re…
题意:给出一个x 可以做两种操作  ①sqrt(x)  注意必须是完全平方数  ② x*=k  (k为任意数)  问能达到的最小的x是多少 思路: 由题意以及 操作  应该联想到唯一分解定理   经过分析可以知道   ②操作最多使用一次  将x分解成一系列素数乘积的时候  只要看最高幂次离哪个二的幂近(只取上界) 并且把所以素因子都凑成找到的这个二的幂  只要x*=k一步就可以凑成  然后一直操作①模拟即可 而如果刚好全部都相等并且都是2的幂次 那么直接一直操作①模拟即可 #include<bi…
比赛过程总结:过程中有事就玩手机了,后面打的状态不是很好,A题理解错题意,表明了内心不在状态,B题想法和思路都是完全正确的,但是并没有写出来,因为自己代码能力不强,思路不是特别清晰,把代码后面写乱了,而且出现了手误,这非常不应该. 反思:打下来应该想好,打代码的时候一气呵成,尽量避免调BUG,看错题这种低级错误,每天比赛时应该关闭手机. 本场目标:补题A-B-C-D-E A- #include<iostream> #include<stdio.h> #include<stri…
A. A Prank Solved. 题意: 给出一串数字,每个数字的范围是$[1, 1000]$,并且这个序列是递增的,求最多擦除掉多少个数字,使得别人一看就知道缺的数字是什么. 思路: 显然,如果缺的这块数字的个数刚好等于右界 - 左界 + 1 那么就可以知道 还需要考虑数据范围,因为是$<= 1000  和 >= 1$ 那么对于两边的边界需要特殊考虑. #include <bits/stdc++.h> using namespace std; #define N 110 in…
D. Fun with Integers 题目链接:https://codeforc.es/contest/1062/problem/D 题意: 给定一个n,对于任意2<=|a|,|b|<=n,如果a->b,则存在一个x,使得x*a=b 或者 x*b=a,那么最终答案就是|x|的总和.相同的a,b不能被重复转化. 题解: 哎,这个复制过来格式各种错误,还是就这样吧... 我们发现当a->b时,-a->b,-a->-b,a->-b中的x对答案的贡献都是一样的,所以我…
C. Banh-mi time limit per test:1 second memory limit per test:256 megabytes 题目链接:https://codeforc.es/contest/1062/problem/C Description: JATC loves Banh-mi (a Vietnamese food). His affection for Banh-mi is so much that he always has it for breakfast.…
B. Math time limit per test:1 second memory limit per test:256 megabytes Description: JATC's math teacher always gives the class some interesting math problems so that they don't get bored. Today the problem is as follows. Given an integer n, you can…
A. A Prank time limit per test   1 second memory limit per test    256 megabytes 题目链接:https://codeforc.es/contest/1062/problem/A Description: JATC and his friend Giraffe are currently in their room, solving some problems. Giraffe has written on the b…
题意: 给出一个n ; 有两个操作: 1,mul A   ,   n=n*A   : 2,sqrt()  ,  n=sqrt(n)  开更出来必须是整数 : 求出经过这些操作后得出的最小  n , 和最小操作数: 分析:首先得明确知道分解到怎样的时候才是 得出最小的n , 首先进过手画就可以明明,经过分解n 可以发现它的素数因子是不可以被开根去的 , 无论怎么相乘开根的结果总是留在的 , 好那这到题的MIN(n) = (本身所有的素数因子的鸡) : 那操作数怎么求呢? 首先我们只需要一次的相乘把…
#include<bits/stdc++.h>using namespace std;int mi[100007];int main(){ int cnt=0; int flag=0; int ans=1; int n,k=0; scanf("%d",&n); for(int i=2;i*i<=n;i++){ if(n%i==0){ flag=1; break; } } if(flag==0)//如果不用操作直接输出即可 printf("%d %d&…
A:A Prank 题意:给定一个递增序列, 问最多能删除多少个连续数字,要求删除数字之后能还原成原来的数列. 题解:直接找就好了,为了方便可以使得第0个数字为0, 第n+1个元素为1001 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w&quo…
题意:有两个正整数\(n\)和\(m\),每次操作可以使\(n*=2\)或者\(n-=1\),问最少操作多少次使得\(n=m\). 题解:首先,若\(n\ge m\),直接输出\(n-m\),若\(2*n>=m\),分\(m\)的奇偶判断一下,如果是奇数就输出\(n-(m+1)/2+2\),是偶数就输出\(n-m/2+1\).否则我们就需要用dp来求解,因为是求最小值,所以先初始化将所有值设为\(INF\),\(dp[i]\)表示从\(n\)到\(m\)的操作次数最少的最优解,首先需要更新\([…
http://codeforces.com/contest/520/problem/B Two Buttons Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing some positive integer. After clicking the red button, device multipl…