Fermat's Optimization Problem(UVALive - 8355,2017香港icpc A,java大数 + 枚举 + 二分)

【深度学习-番外1】Win10系统搭建VSCode+Anaconda+Pytorch+CUDA深度学习环境和框架全过程 本文将介绍在Windows 10系统下搭建深度学习环境的完整过程,包括安装Anaconda、CUDA、NVIDIA显卡驱动以及Pytorch框架。后续本专栏的Python语言下的深度学习环境都以本篇搭建的为准。 阅读详情

一.题目链接:

UVALive-8355

题目 pdf 下载

二.题目大意:

定义

 F(x, y, z, n) = |x^n+y^n-z^n|, \; x < y < z

T 组样例 (T < 10)

每组样例给出 n (2 < n < 10) 和 z (1 < z < 1e5)

求 F 的最小值,以及任意一对满足该 F 的 x 和 y 的值.

三.分析:

这数据范围妥妥大数了.

由于 z < 1e5,那我们只需要枚举 y,然后二分 F 的值,确定此时 x 的值.

注意要先将 pow 预处理出来,之后 O(1) 查询即可.

还要注意分类讨论.

详见代码.

四.代码实现:

import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Scanner;
import java.util.function.BiFunction;

public class Main
{
	public static void main(String[] args)
	{
		
		BigInteger zero = new BigInteger("0");
		BigInteger one = new BigInteger("1");
		BigInteger[][] pow = new BigInteger[100005][15];
		for(int i = 1; i <= 100000; ++i)
		{
			pow[i][0] = one;
			for(int j = 1; j <= 10; ++j)
				pow[i][j] = pow[i][j - 1].multiply(BigInteger.valueOf(i));
		}
		
		BigInteger inf = one;
		for(int i = 0; i < 6; ++i)
			inf = inf.multiply(pow[10][10]);
		
		Scanner cin = new Scanner(System.in);
		int T = cin.nextInt();
		while((T--) > 0)
		{
			int n = cin.nextInt();
			int z = cin.nextInt();
			int x = 0, y = 0;
			BigInteger ans = inf, num;
			for(int i = 2; i < z; ++i)
			{
				int l = 1, r = i - 1, mid;
				while(l < r)
				{
					mid = (l + r + 1) >> 1;
					num = pow[mid][n].add(pow[i][n]).subtract(pow[z][n]);
					if(num.compareTo(zero) < 0)
						l = mid;
					else
						r = mid - 1;
				}
				
				num = pow[l][n].add(pow[i][n]).subtract(pow[z][n]);
				if(num.compareTo(zero) >= 0)
				{
					if(num.compareTo(ans) < 0)
					{
						ans = num;
						x = l;
						y = i;
					}
				}
				else 
				{
					num = num.multiply(new BigInteger("-1"));
					if(num.compareTo(ans) < 0)
					{
						ans = num;
						x = l;
						y = i;
					}
					if(l < i - 1)
					{
						++l;
						num = pow[l][n].add(pow[i][n]).subtract(pow[z][n]);
						if(num.compareTo(ans) < 0)
						{
							ans = num;
							x = l;
							y = i;
						}
					}
				}
			}
			System.out.printf("%d %d ", x, y);
			System.out.println(ans);
		}
	}
}

 

RocketMQ 为什么要自己做一个 NameServer ?RocketMQ 5.x 版本中的 proxy、controller 和 container 分别有什么用 ? 1.独立运行的分散结构 2.简化实现,容忍部分数据不一致 Proxy:多语言支持、简化开发 Controller: 提高 Broker 的性能 Container:提高资源利用率,平衡负载 阅读详情

相关推荐

多期DID实战指南:从CSDID原理到分组加权策略

本文深入解析多期DID(CSDID方法)在政策评估中的实战应用,从核心思想到分组加权策略全面讲解。通过电商扶贫等案例,详细演示如何正确处理分批实施政策的数据分析,包括分组拆解、子模块DID操作及加权平均选择,帮助研究者规避常见误区,提升政策评估的准确性。

weixin_26833503的博客 524

中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)

题目大意:给出误差函数,现在给出 z 和 n,要求求出 x 和 y ,使得函数 F 的取值最小 题目分析:首先数据范围是幂次级别的,1e5 的 10 次方,也就是 1e50 次方,需要用到大数,我用的是 java 的大数类 因为 x 和 y 的取值是 x < y < z,考虑枚举 x 或 y ,然后二分去逼近另一个,这里我枚举的是 y ,将绝对值去掉后,得到,当 y 和 z 确定后,显然这个函数具有单调性,将整个式子向 0 逼近即可,即求出的最大的可行 x1,然后尝试去更新答案,...

Falcon的博客 452

TDISP(TEE Device Interface Security Protocol)软件操作流程

/ 1. SPDM会话相关定义(🔶1-37、🔶1-187)// SPDM会话ID// AES-256-GCM加密密钥(TDISP要求)// 初始向量// 会话是否激活// 2. IDE流配置(🔶1-52、🔶1-625)// IDE流ID// 4个子流的AES密钥(覆盖所有子流类型)// 密钥是否已配置// 3. TDI状态与配置(🔶1-207、🔶1-210)TDI_CONFIG_UNLOCKED = 0, // 初始配置态。

inquisiter 1433

Regional Contest F Nearby Bicycles 复现 题解

The 2017 ACM-ICPC Asia Hong Kong Regional Contest F Nearby Bicycles 复现 题解题目题意代码思路总结 题目 这次是在社团的oj上做的复现题目。 原题链接 题意 题目给m辆车的坐标,n个人的坐标,还有这n个人对应要求的范围,输出每个样例中每个人对应范围内车的数量。样例以0 0结束,即m和n都为0时结束。 代码 #includ...

Erag0n的博客 331

DC-DC BUCK电路 PCB 布局布线 5 要点:以 XL4015 12V转5V 为例解析噪声控制

本文以XL4015 12V转5V降压电路为例,详细解析DC-DC BUCK电路PCB布局布线的5个关键要点,重点探讨噪声控制策略。通过功率回路最小化、热管理与接地优化、电感电容布局、反馈网络防干扰设计以及实测验证技巧,帮助工程师实现高效稳定的电源设计,显著降低输出纹波和电磁干扰。

weixin_29165725的博客 369

antdv-<a-form>的使用

是 Ant Design Vue 中用于创建表单的组件,提供了一种结构化的方式来收集用户输入。它支持多种布局、验证、数据绑定等功能,非常适合用于处理用户输入和提交数据。

2302_81312344的博客 2619

ICPC2017香港赛区游记

打的还行吧……Day -2终于是中午出发了,不用早起了。 在机场学习了一下掼蛋。 坐飞机……稍微感受了一下香港。Day -1上午去港理工看了一下。 港理工的布局挺有意思的,有一些用字母标号的Corner,然后中间的楼就用两边的Corner来称呼,比如比赛在的机房的楼是在Corner P和Corner Q之间,就是PQ Building。虽然每个楼也有本来的名字。 下午被带逛。 下午莫名其妙

jvjhfhg的博客 1002

第一部分:VTK基础入门(第1章:VTK简介与概述)

VTK简介与核心特性概述 VTK(Visualization Toolkit)是一个开源的跨平台C++类库,专用于3D计算机图形学、图像处理和科学可视化。由Kitware公司开发,VTK自1993年起源以来,经历了开源化、成熟化和现代化多个发展阶段,现已成为科学可视化的核心工具之一。 VTK的核心特性包括: 管道架构:模块化设计实现数据流管理 丰富的数据支持:处理多边形数据、图像数据等 强大的渲染能力:集成OpenGL,支持多种渲染技术 最新版本VTK 9.4.2增强了现代C++支持,优化了内存管理,并提升

仰望星空的博客 2362

问题 A: Fermat‘s Optimization Problem--------------------思维(Java大数+二分)

import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner (new BufferedInputStream(System.in)); BigIntege.

qq_43690454的博客 216

VMware Horizon 8 2111 部署系列(九)创建即时克隆桌面池

即时克隆桌面池是在 vCenter Server 中使用 vmFork 技术(称为即时克隆 API)从最佳配置映像创建的自动桌面池。即时克隆共享同一个基础映像虚拟机,使用基础映像虚拟机的快照创建的,它使用的存储空间也少于完整虚拟机。 即时克隆始终保持开机状态,并在注销后从当前发布的映像重新创建。...

白昼的技术专栏 4043

Ardupilot飞控姿态角与姿态角速度控制过程分析(超长篇)

目录 目录 摘要 1.代码控制过程分析 摘要 本节主要记录自己学习ardupilot飞控代码的姿态角速度的控制过程 1.代码控制过程分析 可以看出:AC_AttitudeControl *attitude_control; //指针对象 virtual void rate_controller_run() = 0;是AC_AttitudeContro...

陌城烟雨 1万+

使用java完成二分算法

使用java完成二分算法。自己写的可能有错package com.test;public class Test2 { // 使用二分算法计算某个数在哪个位置,即每次取中间值进行比较 // 如果这个数小了将最小值设为中间数,如果这个数大了将最大值设为中间数 // 重复以上步骤、但由于java每次进行除法后都是去掉小数点以后的数字。所以应该考虑最后一个值的情况 public

zyb1994的博客 796

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(二)(附源码)

这篇文章我们将继续实现曲线射击与两种不需要实体子弹的射击方式 源码在文章末尾。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5061

ACM-ICPC 2017 Asia Nanning

Rearrangement 题意: 给两行数字,每行有n个数字,问是否可以通过重新排列这些数字,使得相邻的数字之和不能被3整除?相邻包括同一行两个数相邻和两行数字上下相邻。 分析: 可以把数字分为3种:第一种:x除以3的余数为0,第二种:x除以3的余数为1,第三种:x除以3的余数为2。 1.余数为1和2的两种数不能相邻 2.余数为0的两种数不能相邻 0的个数为2时,不合法的情况 ...

紫芝的博客 979

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java实现二分查找-两种方式

二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就介绍两种方法 二分查找算法思想 有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。 一个情景:将表中间位置记录的关键字与查找关键字比较,如果两者相等,

maoyuanming0806的博客 17万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HDU - 6288 缺失的数据范围(Java大数二分)

缺失的数据范围Time Limit: 2000/1000 MS (Java/Others)&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 411&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp

Cymbals的博客 537

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

UVALive 5102 Fermat Point in Quadrangle 极角排序+找距离二维坐标4个点最近的点

题目链接:点击打开链接 题意: 给定二维坐标上的4个点 问: 找一个点使得这个点距离4个点的距离和最小 输出距离和。 思路: 若4个点不是凸4边形。则一定是端点最优。 否则就是2条对角线的交点最优,可以简单证明一下。 对于凸4边形则先极角排序一下。 #include #include #include #include using namespace std; type

九野的博客 2085

UVALive 7147

题目是问从n个球队中选拔m个球队,每个球队都会和其他球队进行一场比赛,比赛会有输赢平三种结果,分别对应不同的得分。 不能晋级的最高得分和能晋级的最低得分。 是一个有多种情况的贪心+构造问题。 首先将所有球队分为3部分m, 1, n - m - 1,同时开头处理保证赢的得分比输的大。 假设中间那个人就是不能晋级的最高得分,他和前m个人一样要获得一个基础分,即和被淘汰的队伍总是赢或者总是平

Face the light 539

2018年ACM总结(下)——icpc 香港赛区

2018年11月18日ACM-ICPC (香港赛区)总结 这是我今年最后一场国赛(因为就只有两场哈哈哈)。 2018年ACM总结(上)——icpc 南京赛区 这是我校第一次去香港比赛,而且香港赛区都是神仙打架的地方,具体体现在奖牌少、大佬多。因为今年香港的奖牌比例从5 5 5变成了10% 20% 30%。所以我们想冲一下,就去香港了。 赛前 周六一早我们就坐火车出发去HK。一去到HK就闻...

luo15345107的博客 2651

The 2017 ACM-ICPC Asia Hong Kong Regional Contest 一些题解

D - Card collection 送温暖的签到题,裸的最短路。点数很少,只要Floyd就可以 E - Base Station Sites 签到题,最大值最小明显是二分问题,直接二分最终的位置,每次判断一下能不能放完就行 G - Optimal Coin Change 比较简单的dp,首先我们利用完全背包,维护一个最少的使用硬币的个数,在此基础上,我们维护一个答案数组c[i][j] 代表钱数...

limn204的专栏 1269

UVALive - 8355- Fermat‘s Optimization Problem

题目: 做法: 看到这个题目就想起来确定二维点坐标的类型,三分套三分,搞起,然后边界各种不对···试了一下忘了的其他整数三分板子,太菜了,边界全都有问题··陷入自闭。debug半小时不知道哪里有问题,最后发现整数三分有毒。 eg: while(r-l>1){ int m1=(l+r)/2,m2=(m1+r)/2; if(judge(m1)>judge(m2))//本题取绝对值最小值,故为凹函数 judge返回值为计算式绝对值 l=m1; else r=m2; } 对于数据:n=

qq_43718271的博客 346

E题 Base Station Sites(ICPC Asia HongKong 2017)二分

Input 5 3 2 3 9 6 11 4 3 1 4 9 10 0 0 Output 4 3 题意:n,k,给出n个坐标(在x轴上),需要挑k个,使得任意两个之间空间尽可能的大,求所挑出的k个两两求差值最小的数是多少。(让最小的间隔最大就能保证所有的距离最大了) ...

ZCY的博客 303

Fermat's Easy Problem

Description In number theory, Pierre de Fermat's theorem on sums of two squares states that an odd prime p . Fermat usually did not prove his claims and he did not provide a proof of this statement....

菲菲家的吴先森 1080

live555实践

基本的原理在这里 可以看下加深认知 http://blog.youkuaiyun.com/rembass/article/details/17653273 1.live555的编译及测试(windows) http://blog.youkuaiyun.com/hjl240/article/details/48159243 ..\UsageEnvironment\include ..\liveM...

weixin_34355559的博客 634

Multiobjective Optimization Problem ---多目标优化问题介绍

1. Introduction 1.1 Multiobjective Optimization Problem In engineering, it is often a problem to formulate a design in which there are several criteria or design objectives. If the objectives are o...

编程资料大全 1342

ACM ICPC 2017 HongKong -F - Nearby Bicycles (输入问题)

F: Nearby Bicycles时间限制:1 Sec内存限制:128 MB提交:329解决:55[提交][状态][讨论版][命题人:admin]题目描述With fast developments of information and communication technology, many cities today ha...

weixin_30244889的博客 257
上一篇: Weak Pair (HDU - 5877 ,DFS + 离散化 + 权值线段树)
下一篇: Bound Found (POJ - 2566,思维 + 尺取)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值