51nod 1483 化学变换 | 二进制 暴力】的更多相关文章

51nod 1483 化学变换 题面 给出n个整数(n <= 1e5,每个数 <= 1e5),对每个数都可以进行多次操作,操作有两种:乘二/整除以二. 问最少经过多少次操作能使所有数相等. 题解 对于每个数,枚举它变成另外一个数(目标数)所需的最小步数,目标数的代价值 += 这个最小步数.这样最后输出所有目标数中代价值最小的即可. 注意,对于一个奇数,把它除以二之后再乘以二,得到的是一个新数. #include <cstdio> #include <cmath> #in…
51Node  1483----化学变换 有n种不同的化学试剂.第i种有ai升.每次实验都要把所有的化学试剂混在一起,但是这些试剂的量一定要相等.所以现在的首要任务是把这些化学试剂的量弄成相等. 有两种操作: ·        把第i种的量翻倍,即第i种的量变成2ai. ·        把第i种的量减半,除的时候向下取整,即把第i种的量变成 ⌊ ai2 ⌋ . 现在所有的化学试剂的量已知,问最少要变换多少次,这些化学试剂的量才会相等. 样例解释:把8变成4,把2变成4.这样就需要两次就可以了.…
题意是现在有n个雕像把一个圆等分了,每一个雕像有一个吸引力. 叫你不移动雕像只去掉雕像让剩下的雕像还能等分这个圆,求剩下的雕像的吸引力之和的最大值. 显然去掉后剩下雕像的间隔应该是n的因子,因为这样才能使剩下的雕像等分圆. 这道题数据量不大,可以暴力枚举,模拟出每一种情况取最大值就可以了. 现在我们分析完这道题了,写一下步骤. 1.求出n的因子存在list中. ;i <= n/; i++) l.push_back(i); } 2.遍历因子(因子是可以去取的间隔),遍历从1到因子作为第一个取的雕像…
本题同bzoj1640...双倍经验双倍幸福 虽然数据范围n=3w然而O(n²)毫无压力= = http://blog.csdn.net/xueyifan1993/article/details/7773750 只要比较两个字符串的大小就行了= =果断hash? 具体一点的话就是从前往后和从后往前各hash一遍..其他的懒得复述了= = 一开始开了unsigned long long然后被卡在了第二位..... 然后作死用unsigned int直接68ms#1了2333 #include<cs…
题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数组a的大小.(1 ≤ n ≤ 2*10^5) 第二行有n个用空格分开的整数ai (1 ≤ ai ≤ 10^6). Output 输出一个整数代表最大的mod值. Input示例 3 3 4 5 Output示例 2 对每个数,枚举它的所有倍数,找到比这个倍数小并且最接近这个倍数的数,更新ans. 是…
传送门 题意 分析 只要从小到大二进制处理即可 我一直遍历了1->n,应该是0->1e6+1000 果然智障 trick 代码 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[1001001]; const int maxn=1e6+1000; int n,x; int main() { scanf("%d",&n)…
1413 权势二进制 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一个十进制整数被叫做权势二进制,当他的十进制表示的时候仅仅由0或1组成.比如0,1,101,110011都是权势二进制而2,12,900不是. 当给定一个n的时候,计算一下最少要多少个权势二进制相加才干得到n. Input 单组測试数据. 第一行给出一个整数n (1<=n<=1,000,000) Output 输出答案占一行. Input演…
有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数).求背包能够容纳的最大价值. 我们可以转化成01背包来做,但是这样很慢. 所以我们可以二进制优化. 一个数a,我们可以按照二进制来分解为1 + 2 + 4 + 8 -- +2^n + 剩下的数 = a 剩下的数等于a - (1 + 2 + 4 + 8 -- +2^n ) 我们把a拆成这么多项…
\(设最后的答案为t,那么有\) $$2^+2^+...2^+tp=n$$ \(那我们完全可以枚举这个t,判断n-tp(我们下面记为z)能刚好被t个二进制表示\) \(首先,z如果小于t,那一定无法表示,因为每一个二进制最小是2^0=1,t个二进制最小是t\) \(然后,我们数一下z的二进制1的个数,假如t不够的话也不行.\) \(为什么?因为二进制高位的1可以由低位的1补齐,所以t大了没事,但不能比z的二进制1个数少.\) #include <bits/stdc++.h> using nam…
C. Amr and Chemistry time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Amr loves Chemistry, and specially doing experiments. He is preparing for a new interesting experiment. Amr has n differ…