Numbers ZOJ - 3987(二进制思维+贪心)

C#集成Bartender:动态图片标签打印的实战与优化 本文详细介绍了在C#程序中集成Bartender实现动态图片标签打印的实战方法与优化策略。通过具名数据源绑定、图片对象尺寸控制等核心技巧,解决了动态图片显示/隐藏的难题,并提供了从模板设计、代码架构到性能优化、错误处理的全流程指南,帮助开发者构建稳定高效的工业级标签打印系统。 阅读详情

Numbers ZOJ - 3987

DreamGrid has a nonnegative integer . He would like to divide into nonnegative integers and minimizes their bitwise or (i.e. and should be as small as possible).
Input

There are multiple test cases. The first line of input contains an integer , indicating the number of test cases. For each test case:

The first line contains two integers and ().

It is guaranteed that the sum of the length of does not exceed .
Output

For each test case, output an integer denoting the minimum value of their bitwise or.
Sample Input

5
3 1
3 2
3 3
10000 5
1244 10

Sample Output

3
3
1
2000
125
题意:

将整数nnn拆分成mmm个数的和,输出这mmm个数的按位或的最小值

分析:

考虑贪心,如果m个数中的某一个数的某一位有一个是1了,那么最终结果这一位也必定是1,因此我们可以判断一下分成的这m个数,这个位是否必须要有一个1,那么如果有,我们就让尽量多的1在这一位,使得后面的1 尽量少,没有的话,我们能不放就不放

那么重点是我们如何去判断这一位是否至少需要一个1呢?

对于一个数n,首先记录n的二进制位数,然后我们从高位到低位一位一位的看

对于当前位i,我们看如果分成m个数后,这个位是否必须要有1,如果这一位有1的话说明得有一个2i−12^{i-1}2i−1(注意从202^020开始的),那么我们知道第一个比它小的数是2i−1−12^{i-1}-12i−1−1即这一位后面的位全为1的情况,我们比较一下如果m个数全都这样的数,(就是全为1),这m个数的和如果还比当前n小,说明我们必须至少得要有一个i位为1,这样才能凑成n嘛,否则就凑不成了。

这样如果我们判断了当前i位必须有一个1(有一个2i−12^{i-1}2i−1),即(m×(2i−1−1)&lt;nm\times (2^{i-1}-1) &lt; nm×(2i−1−1)<n),此时我们就让i位上尽可能的多放1,那么能放多少个呢

当然就是num=n2i−1num = \frac{n}{2^{i-1}}num=2i−1n​了,当然了如果num&gt;mnum &gt; mnum>m,让num=mnum = mnum=m,然后更新当前n,即n−=num×2i−1n -= num \times 2^{i-1}n−=num×2i−1,答案此时就要加上这个2i−12^{i-1}2i−1,然后剩下的n再次循环判断

code:

import java.math.BigInteger;
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in) ;
        BigInteger n,m;
        int T = in.nextInt();
        while((T--) > 0) {
        	n = in.nextBigInteger();
        	m = in.nextBigInteger();
        	int len = 0;
        	BigInteger tmp = n;
        	while(tmp.compareTo(BigInteger.ZERO) > 0) {
        		tmp = tmp.shiftRight(1);
        		len++;
        	}
        	BigInteger ans = BigInteger.ZERO;
        	for(int i = len; i > 0; i--) {
        		if(n.compareTo(BigInteger.ZERO) <= 0) break;
        		tmp = BigInteger.valueOf(2).pow(i-1).subtract(BigInteger.ONE);
        		BigInteger sum = tmp.multiply(m);
        		if(sum.compareTo(n) < 0) {
        			BigInteger num = n.divide(BigInteger.valueOf(2).pow(i-1));
        			if(num.compareTo(m) > 0) num = m;
        			n = n.subtract(BigInteger.valueOf(2).pow(i-1).multiply(num));
        			ans = ans.add(BigInteger.valueOf(2).pow(i-1));
        		}
        	}
        	System.out.println(ans);
        	
        }
    }

}
面向精准医疗的多模态影像融合:实现前列腺MRI与大病理切片的三维配准与空间重建研究 亲爱的同学,当你能完整实现“前列腺MRI与大病理组织学图像的3D配准及体素重建”,你会发现医学影像交叉领域的毕设课题充满挑战与乐趣。我们将从临床需求出发,拆解3D配准与体素重建的核心技术,带你从原理到代码实现完整流程,让你的毕设不仅能顺利完成,更能体现临床应用价值。,让MRI和病理图像在同一空间对齐,能实现“术前影像-术后病理”的精准关联,为前列腺癌的精准诊疗、预后评估提供关键依据——这一课题既有技术挑战性,又有临床意义,是毕设的优质选择。(如NCC、Dice、配准时间),用数据证明方法的优越性。 阅读详情

相关推荐

基于IC617下Layout XL的使用

基于IC617下Layout XL的使用

weixin_43816759的博客 1万+

ZOJ 3987 Numbers (贪心)

Description DreamGrid has a nonnegative integer nn. He would like to divide nn into mm nonnegative integers a1,a2,…,ama_1, a_2, \dots, a_m and minimizes their bitwise or (i.e. n=a1+a2+⋯+amn=a_1 + a_2

小坏蛋_千千 1489

基于Super-Jacoco的精准测试实践之路

灵魂拷问这个版本的影响范围到底有多大?研发改动了代码,为什么不通知测试?测试用例真的全面覆盖了吗?测试同学的测试覆盖情况该怎么评估?什么是精准测试概念借助技术手段、通过辅助算法对软件测试过...

咻咻ing的专栏 5838

[CCPC] 2017秦皇岛 NumbersI | Java BigInteger | 贪心

题目描述 DreamGrid has a nonnegative integer n. He would like to divide n into m nonnegative integers a1,a2,…,am and minimizes their bitwise or (i.e. n=a1+a2+…+am and a1 OR a2 OR … OR am should be as small as possible). input There are multiple test cases. The

PushyTao的博客 299

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

Claude Code vs Codex实战对比:哪个更适合你的Next.js项目?(含真实案例)

本文通过两个真实的Next.js项目案例,深度对比了Claude Code与Codex在UI实现和业务逻辑构建中的表现。Claude Code在代码质量、设计还原度和架构完整性方面优势明显,适合对可维护性要求高的生产级项目;而Codex则以快速响应和低成本见长,更适合原型开发或内部工具。文章提供了基于项目类型、团队能力和成本效益的详细选择策略。

weixin_29201859的博客 806

Numbers ZOJ - 3987[思维暴力]

题意:给出一个数字N以及一个M,要求把N分为M部分且满足 N=a1+a2+a3+⋯+amN = a_1 + a_2 + a_3 + \dots+a_mN=a1​+a2​+a3​+⋯+am​ 询问如何让a1∣a2∣a3∣…∣ama_1|a_2|a_3|\dots|a_ma1​∣a2​∣a3​∣…∣am​尽可能的小,输出最小值。 题解:如果让后来的或值最小的话,那么我们首先需要去掉最高位的1(二...

Zephyr的博客 350

EPS+ArcGIS+CASS三剑客:等高线裁剪的完整工作流与避坑指南

本文详细介绍了EPS、ArcGIS和CASS三款软件在等高线裁剪中的协同工作流程与避坑指南。通过发挥各软件优势,解决数据完整性、拓扑准确性和流程可靠性等核心挑战,提升40%以上的工作效率。特别适合大型测绘项目中复杂地形的处理,涵盖数据准备、核心处理到后期优化的全流程。

weixin_30352645的博客 617

G - Numbers ZOJ - 3987 (大数+贪心)

题目链接走~~~~~ 这次不能甩锅了呜呜呜。 先讲一下题意,就是给你一个数分成m组,使他们的或最小。 分析: 一开始想太简单了,有点先入为主的意思,虽然想到了,均分二进制位会使或值最小,但是当无法恰好均分时,无法处理了 。。。自闭 接下来是重点了呢: 我们可以不断的按位来分, 首先,我们要找到他的最高位,如果(2 * k - 1 ) * m > n > (2 *(k-...

fighting_yifeng的博客 440

AI大模型学习(14)AI 小白入门!用 OpenCV+Python 打造人体姿态识别系统,超详细教程来了

这篇教程介绍了如何使用Python+OpenCV+MediaPipe搭建入门级人体姿态识别系统。主要内容包括:人体姿态识别的应用场景(如健身APP、体感游戏)、开发环境搭建(安装Python、OpenCV和MediaPipe库)、核心代码实现(通过30行代码完成摄像头姿态检测),以及进阶功能开发(深蹲动作纠正算法和PPT体感控制器)。教程详细解析了MediaPipe的BlazePose模型架构和33个关键点的生理学意义,并提供了多线程优化等性能提升方案。该项目适合AI初学者实践,无需复杂算法即可实现实时人体

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1549

OpenClaw插件配置错误修复完全指南

插件文件名是插件目录结构正确package.json配置正确OpenClaw的插件系统还在快速迭代,偶尔会遇到这种配置问题。看错误信息检查配置文件检查实际文件对比差异修复问题大部分问题都能解决。查看官方文档:https://openclaw.ai/docs提Issue:https://github.com/openclaw/openclaw/issues加入Discord社区求助快速修复命令汇总。

Maynor的博客 4092

ZOJ 3987 Numbers(枚举)

没想到是枚举,还推了规律好久,应为对Java的不了解,所以没想到枚举,或者感觉枚举太麻烦会超时,首先最多枚举2的4000次方,4000重循环不会超时,每次2的k次方的计算也不会超时,因为pow复杂度是lg。所以,应该直接暴力,开始思路被带偏,或者说对Java的不了解,没做出来,所以直接枚举能放下的最小的就行了,如果2^k-1能放下,就不放2^k,对2^(k-1)进行判断,学了一波java大数,顺便

但求心安的博客 492

通信算法之320:DJI无人机云哨--信息包类型

大疆DJI无人机的云哨信息包主要分为四种类型:1)含经纬度位置、型号及序列号的完整数据包;2)仅含序列号的简化数据包;3)完全加密的数据包;4)加密密钥包。这些信息包格式不同,解析方式和应用场景也各异。如需更详细的技术资料,可联系作者获取。

leegang12的专栏 759

Numbers(模拟)

ZOJ - 3987 DreamGrid has a nonnegative integer n. He would like to divide n into m nonnegative integers a1,a2,…,ama_1, a_2, \dots, a_ma1​,a2​,…,am​​ and minimizes their bitwise or (i.e. n=a1+a2+⋯+amn...

蒟蒻的博客 379

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

zoj3987—Numbers(贪心)

题目链接:传送门 Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer . He would like to divide  into  nonnegative integers  and minimizes their bitwi

zhiyuanjiang的博客 1149

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ZOJ 3987 Numbers 2017CCPC秦皇岛站G题 大整数 二进制 贪心

题目:https://cn.vjudge.net/problem/ZOJ-3987题意:给出一个数n(不超过4000个十进制数字),将其分成m(不超过10的100次方)个数,要求这m个数的和等于n。求这m个数最小可能的按位或的值。思路:按位或的特点是这m个数如果在某一个二进制位上有一个为1的,那么最终结果在那一位就会是1,所以我们想要尽可能的让高位上没有1,而且只要有一位上确定必须是1,就尽可能利用

Rewriter_huanying的博客 825

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【贪心】【高精度】zoj3987 Numbers

题意:给你一个数n,让你找m个非负整数,使得它们的和为n,并且按位或起来以后的值最小化。输出这个值。 从高位到低位枚举最终结果,假设当前是第i位,如果m*(2^i-1)<n的话,那么说明这一位如果填零,剩下的位不论怎么填,都绝对凑不出n来,所以这一位必须填1.如果m*(2^i-1)>=n,这一位就填1,然后把n变为max(n mod 2^i , n-m*2^i),重复这个过程即可。 ...

weixin_34245169的博客 170

ZOJ3987(二进制枚举+java大数)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3987 题意:给一个数n和一个数m,让你将n这个数分成m个数相加,且这m个数的or值最小。 思路:直接从二进制角度考虑,要使得m个数的or值最小,也就是说m个数中最高位应该尽量低,我们先假设存在一个k使得 (2^k-1)*m > n > (2^(k...

时光、疏离了记忆づ童话的博客 793

ZOJ - 3987 - Numbers (高精度,贪心)

Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer . He would like to divide  into  nonnegative integers  and minimizes their bitwise or (i.e. 

vloai 521

ZOJ-3987 Numbers 2017CCPC秦皇岛站G题 (二进制、贪心)

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 65536K,其他语言131072K 64bit IO Format: %lld 题目描述 DreamGrid has a nonnegative integer n, He would like to divide n into m nonnegative integers a1,a2,...am and

1988的博客 690

ZOJ 3987 Numbers (大数+贪心)

Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer . He would like to divide into nonnegative integers and minimizes their bitwise

咸鱼有梦想 604

ZOJ-3987 Numbers 2017CCPC秦皇岛站G题 (二进制乱搞、贪心)

DreamGrid has a nonnegative integer . He would like to divide into nonnegative integers and minimizes their bitwise or (i.e. and should be as small as possible). Input There are multiple test cases. The first line of input contains an integer , indica

yo_bc的博客 2478

ZOJ 3987 Numbers (BigInteger类、贪心)

Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer . He would like to divide  into  nonnegative integers  and minimizes their bitwise or (i.e. and  should ...

Rainbow_storm的博客 441

2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)

Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer n . He would like to divide n into m nonnegative integers a1,a2,...am and minimizes their bitwise or (i

MR CODER 480

牛客每日练习----​​​​​​​String of CCPC,Numbers,蝴蝶

也许,年少时不能遇见太过惊艳的人,就像你不能做我的诗,而我无法成为你的梦! 链接:https://ac.nowcoder.com/acm/problem/14367 来源:牛客网 题目描述 BaoBao has just found a stringsof lengthnconsisting of 'C' and 'P' in his pocket. As a big fan of the China Collegiate Programming Contest, BaoBao thinks ...

0k-ok 491

zoj3987 Numbers(大数+贪心)

Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer . He would like to divide into nonnegative integers and minimizes their bitwise or (i.e. and should be...

20164225的博客 368
上一篇: Crusaders Quest ZOJ - 3983(思维+暴力)
下一篇: Safest Buildings ZOJ - 3993(计算几何+思维)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值