GCJ Round2 B题 Deterministic方法实现

BMS保护板原理图+PCB+固件源码+bin文件+上位机 BMS保护板原理图+PCB+固件源码+bin文件+上位机 单片机是STM32F303CCT6 1、带有软电源开关输入,带 LED (LOAD) 开/关 + 充电指示灯; 2、具有高压侧电源开关,控制通断; 3、隔离式 CAN 总线接口; 4、电流测量; 5、带有短路检测; 6、带有USB 接口通信和固件升级; 7、蜂鸣器指示错误状态; 8、体积小巧; 9、短时间最大负载电流+/- 100A,长时间约为70A; 10、最大充电电流 10A(带二极管)或 30A(带二极管旁路); 11、电池电压范围为 2.5V 至 4.5V; 12、包电压 12V 至 54V; 立即下载

虽然用随机化方法可以很容易过此题,代码实现也很方便,但还是写了一个Deterministic Solution的方法,具体的实现方案看GCJ官方的analysis

public class BProblem {
	
	private class Circle implements Comparable<Circle>{
		public long R;
		public int ind;
		@Override
		public int compareTo(Circle o) {
			// TODO Auto-generated method stub
			return this.R > o.R ? -1:1;
		}
		
	}
	
	private Circle[] circles;
	private long[][] queue;
	private int head,tail;
	private long[][] res;
	
	public void run(){
		try {
			System.setIn(new BufferedInputStream(new FileInputStream("B-large-practice.in")));
			System.setOut(new PrintStream(new File("data.out")));
			Scanner cin = new Scanner(System.in);
			int t;
			t = cin.nextInt();
			int ca ;
			for(ca = 1;ca<=t;ca++){
				int n;
				n = cin.nextInt();
				long L,W;
				L = cin.nextLong();
				W = cin.nextLong();
				circles = new Circle[n];
				int i;
				for(i=0;i<n;i++){
					circles[i] = new Circle();
					circles[i].R = cin.nextLong();
					circles[i].ind = i;
				}
				Arrays.sort(circles);
				res = new long[n][2];
				queue = new long[n+5][3];
				head=tail=0;
				queue[tail][0] = 0;
				queue[tail][1] = L;
				queue[tail++][2] = 0;
				long offset=0;
				boolean pop = true;
				int num = 0;
				long l=0,r=0,h=0;
				while(num < n){
					if(pop){
						pop = false;
						l=queue[head][0];
						r= queue[head][1];
						h=queue[head][2];
						head++;
					}
					if(offset == 0 && l != 0){
						pop = true;
						continue;
					}
					if(offset >= r){
						pop = true;
						continue;
					}
					res[circles[num].ind][0] = offset;
					res[circles[num].ind][1] = h;
					num++;
					if(h+circles[num-1].R*2 <= W){
						queue[tail][0] = offset;
						queue[tail][1] = (offset+circles[num-1].R*2) < L ? (offset+circles[num-1].R*2) : L;
						queue[tail++][2] = h + circles[num-1].R*2;
					}
					offset += circles[num-1].R*2;
					if(num==n) break;
					if(offset >= r){
						pop = true;
						if(offset >= L) 
							offset = 0;
					}
				}
				System.out.print("Case #"+ca+":");
				for(i=0;i<n;i++)
					System.out.print(" "+res[i][0]+" "+res[i][1]);
				System.out.println();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new BProblem().run();
	}

}


文创媒体电商行业智算中心(AIDC)建设规划方案.pptx 立即下载

相关推荐

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对电容式触摸传感器在金属基材上应用时易受干扰导致信号衰减的问题,提出一种集成于金属基材涂层中的带状电容器半数值计算模型。通过理论推导建立传感器电容的数学模型,设定合理的边界条件并采用数值方法求解,利用Matlab实现完整的仿真代码,对传感器在金属背景下的电容特性进行精确建模与性能分析。该方法有效提升了传感器的灵敏度与抗干扰能力,适用于高精度、复杂环境下的触摸感应场景,具有良好的工程应用价值。研究不仅提供了详细的建模流程与仿真验证,还开放了可复现的代码资源,便于后续优化与拓展。; 适合人群:从事电容式传感器设计、嵌入式系统开发、人机交互技术研究及相关领域的科研人员,以及具备电磁场理论基础和Matlab编程能力的硕士、博士研究生;; 使用场景及目标:①用于金属表面电容式触摸传感系统的建模与性能优化;②为抗金属干扰传感器提供有效的半数值仿真方法与技术支撑;③辅助高校科研与教学中对电容耦合机制的理解及仿真平台搭建; 阅读建议:建议结合Matlab代码逐模块调试,深入理解模型中几何参数、材料属性及边界条件对电容输出的影响规律,可进一步推广至其他复杂结构或非理想环境下的传感器设计中。

Google CodeJam Round 2 2013

Official Analysis: https://code.google.com/codejam/contest/2442487/dashboard#s=a C++ code Problem A (small data) #include #include #include #include #include using namespace std; int main

MADNESS 890

(Multisim课设资料)最全面函数信号发生器(三角波+正弦波+方波信号+锯齿波仿真设计+报告文档

内容概要:本文档是一份综合性科研技术资源汇总,系统梳理了工程与计算机科学领域的多项关键技术及其实现方法,涵盖图像处理、路径规划、无人机应用、通信技术、信号处理、电力系统优化、车间调度、雷达技术、微电网与综合能源系统调度等多个前沿方向。文档重点提供了基于Matlab和Simulink的丰富仿真案例,包括裂纹检测、双目视觉体积测量、卡尔曼滤波状态估计、永磁同步电机控制、无功优化、多目标调度算法(如NSGA-II、粒子群算法)在能源与交通系统中的应用,以及遗传算法、差分进化、人工蜂群等智能优化算法的代码实现。资源强调理论与实践深度融合,配套完整的仿真模型、算法代码与实验结果,具有较强的工程复现价值和科研指导意义。; 适合人群:具备一定编程基础的研究生、科研人员及从事自动化、电气工程、控制工程、通信、人工智能等相关领域工作的技术人员,尤其适合有1-3年工作经验的研发人员。; 使用场景及目标:①用于高校课程设计、毕业设计、科研项目开发和技术复现;②支撑电力系统优化、智能制造调度、智能交通路径规划、无人机控制等实际工程问题的算法研究与仿真验证;③帮助读者掌握主流优化算法与信号处理技术的核心原理与代码实现。; 阅读建议:建议读者结合文中提供的Matlab/Simulink代码与仿真模型进行实践操作,优先选择与自身研究方向相关的主题深入学习,并参考所提供的网盘链接获取完整资源以辅助调试与复现实验结果。

【gcj】2013 round 2

解答 ==================================== 题目 ==================================== Problem C. Erdős–Szekeres Given a list X, consisting of the numbers (1, 2, ..., N), an increasing

一地鸡毛 578

无刷直流电机BLDC无感+滑模观测器+转速电流双闭环PI控制(总共三个仿真模型)(Simulink仿真实现)

内容概要:本文档系统阐述了无刷直流电机(BLDC)在无位置传感器条件下的高性能控制策略,基于Simulink平台构建了三个相互关联的仿真模型,重点实现无感控制与滑模观测器(Sliding Mode Observer, SMO)相结合的转速电流双闭环PI控制系统。该资源摒弃了传统的霍尔传感器,利用滑模观测器实时估算转子的位置与转速信息,有效降低了系统成本并提升了在恶劣环境下的运行可靠性。仿真模型完整涵盖了逆变电路、空间矢量脉宽调制(SVPWM)、三相电流采样、坐标变换(Clark & Park)、PI调节器以及滑模观测器等核心模块,形成了一个闭环的、高动态响应的电机驱动系统。此外,文档还集成了模糊PID、传统PID等多种控制算法的对比仿真模型,便于研究者深入分析不同控制策略在动态响应、抗干扰能力和稳态精度方面的性能差异,为电机控制算法的研究与工程化应用提供了坚实的仿真验证基础。; 适合人群:具备自动控制理论、电机拖动原理及电力电子技术基础知识,并熟悉MATLAB/Simulink软件操作的电气工程、自动化、机电一体化等专业的高年级本科生、硕士研究生,以及从事电机驱动、新能源汽车、工业自动化等领域的研发工程师和技术人员。; 使用场景及目标:①深入学习和掌握无刷直流电机无位置传感器控制的基本原理与实现方法;②系统性地理解滑模观测器的设计思想、稳定性分析及其在转子位置与速度估计中的关键技术;③对比研究传统PI控制、模糊PID控制及滑模观测器在BLDC调速系统中的综合性能,分析其在不同工况下的鲁棒性与适应性;④为毕业设计、科研课题或工业项目中的电机控制系统开发提供可复用的仿真平台与技术参考。; 阅读建议:本资源以Simulink仿真为核心载体,建议使用者结合文档中提供的详细说明报告与参考文献,循序渐进地理解各功能模块的设计逻辑与参数整定方法。在学习过程中,务必动手运行并调试仿真模型,仔细观察并记录在不同负载突变、转速指令变化等工况下,电机的三相电流、转速响应曲线及滑模观测器输出的转子位置与速度的动态波形,从而深刻理解控制算法的内在机理。为进一步提升实践与创新能力,可尝试修改控制器参数(如PI增益、滑模增益),或替换不同的控制策略进行对比实验,探究其对系统性能的影响。

基于UC3842的反激式开关电源Multisin仿真设计【仿真+原理说明+参考文档】

内容概要:本文系统阐述了基于UC3842电流模式PWM控制器的反激式开关电源在Multisim环境中的完整仿真设计过程。围绕小功率隔离型直流电源的设计需求,深入剖析反激拓扑与电流模式控制的协同工作机制,构建了包含启动电路、高频变压器、RCD钳位网络、TL431与光耦构成的隔离反馈环路以及UC3842核心控制芯片的完整仿真模型。重点对电源的启动特性、辅助供电建立、变压器初级电流与电压波形、反馈环路的稳定性、以及UC3842的逐周期峰值电流限制和在负载突变、输出短路等异常工况下的“打嗝”式保护行为进行了详尽的仿真分析与验证,充分论证了该设计方案的可行性与工程可靠性。; 适合人群:具备模拟电子技术、电力电子技术及开关电源基础知识,从事电源产品开发、电力电子系统设计的工程师、高等院校电气工程及相关专业的师生及科研人员。; 使用场景及目标:①深入学习和掌握基于UC3842的反激式开关电源的核心设计原理、电路拓扑构建与Multisim仿真方法;②透彻理解电流模式控制、变压器参数设计与匹配、隔离反馈环路补偿设计、RCD吸收网络优化以及过流保护等关键技术的实现细节与工程考量;③为实际硬件电路的研发、调试与优化提供精确的前期仿真验证、理论支撑和设计指导。; 阅读建议:建议读者结合Multisim软件进行动手实践,严格按照文中所述的结构与参数逐步搭建电路,通过示波器、探针等工具仔细观测并分析关键节点的电压与电流波形,重点关注系统在不同负载条件下的动态响应与稳定性表现,并充分利用所提供的完整仿真文件、原理说明与参考文档进行对比学习与深入探究。

GCJ 2018 Round 2

占坑,明天过来补题解 A 模拟 + 贪心 B dp,简单背包 C 建图,经典二分匹配

Step by step 738

【一】PCIe基础知识

Linux PCIe基础知识

他山之石 可以攻玉 4万+

GCJ_Round_2_2011 部分题解

GCJ_Round_2_2011 部分题解 00:30比赛结束,然后就是看scoreboard,acrush名副其实,开始1:07时就AK掉了. 看完board然后和MM聊,然后睡觉去,然后睡不着,然后开始写解题报告. 衣服到手,Rank555... 过掉了A...

weixin_30632089的博客 223

MaxEnt物种分布预测中的常见误区与优化技巧:如何提高模型准确率

本文深入探讨了MaxEnt物种分布预测模型从基础应用到精准预测的进阶实践。针对模型准确率提升,文章系统分析了环境变量筛选、模型参数调优、结果批判性解读等核心环节的常见误区,并提供了基于生态位模型原理的深度优化技巧,帮助研究者产出更可靠、可解释的预测结果。

weixin_29219539的博客 594

VSCode+Keil高效开发STM32:Keil Assistant插件配置全攻略

本文详细介绍了如何通过VSCode的Keil Assistant插件,将Keil MDK的编译调试能力与VSCode的现代编辑体验相结合,打造高效的STM32开发环境。文章涵盖了从环境配置、工程导入、智能提示设置到与STM32CubeMX协同工作的全流程攻略,旨在解决Keil编辑器效率低下的痛点,大幅提升嵌入式开发的编码与项目管理效率。

gold的博客 507

GCJ 2015 Round D

Problem B. GBus count

lydcsdn 769

VTK在QT与非QT环境下使用的区别

VTK可以在QT框架内使用,也可以独立于QT使用,这两种使用方式在架构、交互和渲染方面有显著差异。

深之JohnChen的专栏 628

最大独立集问题

最大独立集问题 Given N sets of integers, remove some sets so that the remaining all sets are disjoint with one another. Find the optimal solution so that the number of sets remaining at the end is maxim

whosemario的专栏 4万+

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向、半径、深度)

获取圆柱面的信息前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 文章目录前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 前言 在一个项目中,需要遍历曲面,获得所有的圆柱面和圆柱面的信息,包括轴向、半径和圆柱面的深度。经过研究,采用uFModl.AskFaceData(face.Tag, out faceTypeInt, point, dir, box, out

GimiGimmy 4145

【STM32 Blue Pill编程】-STM32CubeIDE开发环境搭建与点亮LED

本文为使用 STM32Cube IDE 的 STM32 Blue Pill 入门教程。 在本文中,我们将介绍如何控制 STM32 Blue Pill 的 GPIO 引脚。以及开发环境搭建。 本系列文章将重点介绍采用 ARM Cortex-M 的 BluepellSTM32F103C8 微控制器以及如何使用 STM32CubeIDE 对其进行编程。 STM32CubeIDE是STM32官网提供的IDE

视觉与物联智能 1066

梯度下降算法(Gradient descent)

梯度下降算法是一种求局部最优解的方法,在wikipedia上对它做了详细的说明,这里我只是把自己感兴趣的一些地方总结一下: 对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向,我们有如下结论: 其中,v是一个大于0的数,于是我们有F(b)>=F(a),那么当我们不断地迭代下去,最终结果将收敛于一个局部最小值。 我们举一个简单的例子: 利用梯度

whosemario的专栏 1万+

AI大模型探索之路-认知篇1-全景透视:揭秘AIGC技术的进化之路

随着人工智能技术的突飞猛进,内容创作方式的发生了革命性的转变;从早期专业人员主导的内容生产,到现如今生成式人工智(AIGC)能创作时代;本篇文章主要讲解AIGC技术的演变历程。

寻道AI,探索AI无限可能! 1645

ZJU PAT 1010

好久没写oj的题解了,今天做了pat 1010的题目,提交代码后才只有19分,最后在网上看到才发现radix的大小是long long级别的啊,那么我们就只能使用二分来查找结果了,那么剩下的就是理清思路了。 如果两个数字都是1,结果肯定是2如果两个数字相同,但不是1,结果肯定是题目输入的那个radix如果两个数字不相同,我们则有确定radix的范围呢?我们假设A的radix已经知道,那么

whosemario的专栏 4891

学习STM32的CAN总线通信

在配置时,确保您启用了CAN总线功能。CAN节点是CAN总线上的一个设备,每个节点都有唯一的标识符。在CAN总线中,有两种类型的节点:CAN控制器和CAN外设。步骤2:配置CAN总线 在STM32CubeMX中,选择CAN总线模块并进行必要的配置。在CAN总线中,有两个重要的概念:CAN节点和CAN帧。步骤5:测试CAN总线通信 在成功编译和烧录代码后,您可以使用串口调试助手或其他CAN总线工具来测试CAN总线通信。步骤3:编写CAN总线通信代码 在项目的主代码文件中,我们将编写CAN总线通信的示例代码。

2401_85258012的博客 496

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

树形DP——POJ1947 and POJ2486

本文针对POJ上的2057、1947、2486、3140四道题目,谈一下个人对树形DP的理解,上面4题无法覆盖树形DP的所有形式,但也有一定的针对性,值得去做一做,思考一下: 树形DP中常常用到“背包思想”,1947和2486就是利用了“背包思想”,状态想好了,最后就是在填“背包”,某个节点的“背包”是用他们的子树的状态进行填充的。 POJ1947:状态dp[i][p]表示以节点i为根

whosemario的专栏 1793

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

编程之美4.4 扩展问题——判断点位于多边形内部

首先说明的是此多边形是任意多边形,包括凹多边形: 方法一:射线法 以此点为原点的向右水平射线如果相交于多边形的点的个数为奇数个,则此点在多边形内部,但需要注意几个trick: 有可能射线与某条边的端点相交,如果相交的端点的纵坐标是较大的那个,则记录,否则忽略有可能射线与某条边完全覆盖,忽略即可 用Java写了一个代码,没有测试,但基本思路是这样的: public class

whosemario的专栏 1448

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ZJU PAT的一些代码

最近为了找实习,开始刷ZJU PAT上的题目,还有8、9道题就快刷完了,现在把部分代码放到github上,由于时间原因,有些代码遗漏掉了,后续可能会补上。。。。 https://github.com/Whosemario/PatSourceCodes

whosemario的专栏 1361

《编程珠玑》第一章笔记

文章从一个实际的问题开始:一个电话系统,7位数的电话号码,用1MB的内存空间将这些电话号码排序。 分析:如果将这些电话号码看成int类型的整数,将其读入内存中进行排序,int类型4个字节,最多有10000000个电话号码,则需要40MB的内存空间,远远超出题目的要求,但是这10

whosemario的专栏 1048

细节很关键

此篇博文只是一些吐槽,主要还是要提醒自己细节很重要。 平时写C代码,永远都不去管什么Warning,只要没有Error就OK。这次在实验室做一个小东西,要用Java的Runtime执行一个Makefile文件,Makefile文件编译一些C源码,编译的过程中会报很多Warning出来,本来本地直接运行Makefile一切正常,但用Runtime的exec运行时就会卡死,个人认为是大量的Warni

whosemario的专栏 644
上一篇: 梯度下降算法(Gradient descent)
下一篇: 细节很关键
whosemario
博客等级 码龄16年 22粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值