魔理沙的烟火制造

2023-11-23 01:10
文章标签 制造 烟火 魔理沙

本文主要是介绍魔理沙的烟火制造,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述
在魔法森林,最有名的两个建筑物就是玛格特洛依德邸和雾雨邸。
这个问题便是雾雨邸的主人,雾雨魔理沙,在制造以星尘为原料的烟火时遇到的。
魔理沙一共想要制造T个烟火。她现在有n种星尘,用第i种材星尘制造一个烟火的花费为ci份星尘。由于同种星尘之间的排斥,每次用第i种星尘制造了一个烟火之后,下一次使用同种星尘制造一个烟火的花费会增加di。
幸运的是,魔理沙还有另外一种特别的,不会发生排斥的星尘。每次用这种星尘制造一个烟火,都要花费P份星尘。
收集星尘,即使是对于一个不需要借助任何物品就能飞行的人类而言,也不是一件容易的事。所以魔理沙想知道,制造所有的T个烟火,她至少要多少的星尘。

 

输入
第一行三个整数,代表T,P,n。
接下来n行,每行两个整数,代表ci,di。

 

输出
一行一个正整数代表答案。

样例输入

8 16 3
1 5
2 4
3 3
样例输出
43
提示

分别用1,2,3种星尘制造2,3,3个烟火,代价为1+6+2+6+10+3+6+9=43

 题解:

先用二分求出费用的上边界,由题目可得 初始值 l=0,r=p;

然后判断这个边界值取多少个,多了就减,少了就加。

AC代码:

 1 import java.util.*;
 2 import java.math.*;
 3 public class Main {
 4     static int n;
 5     static long t,p,sumx;
 6     static long[] a=new long[100005];
 7     static long[] b=new long[100005];
 8     static BigInteger ans=BigInteger.valueOf(0),ttt=BigInteger.valueOf(2);
 9     public static boolean check(long val) {
10         long sum=0;
11         for(int i=1;i<=n;i++) {
12             long res=a[i];
13             if(res<=val) {
14                 sum++;
15                 long ret=(val-res)/b[i];
16                 sum+=ret;
17                 if(sum>=t) return true;
18             }
19         }
20         return false;
21     }
22     public static void solve(long val) {
23         long sum=0;
24         for(int i=1;i<=n;i++) {
25             long res=a[i];
26             if(res<=val) {
27                 sum++;
28                 BigInteger tmp=BigInteger.valueOf(res);
29                 long ret=(val-res)/b[i];
30                 sum+=ret;
31                 BigInteger Ret=BigInteger.valueOf(ret);
32                 BigInteger cnt=tmp.add(Ret.multiply(BigInteger.valueOf(b[i])));
33                 ans=ans.add(cnt.add(tmp).multiply(Ret.add(BigInteger.valueOf(1))).divide(ttt));
34             }
35         }
36         sumx=sum;
37     }
38     public static void main(String args[]) {
39         Scanner cin=new Scanner(System.in);
40         t=cin.nextLong();
41         p=cin.nextLong();
42         n=cin.nextInt();
43         long ma=1000000000;
44         int pos=0;
45         boolean flag=false;
46         for(int i=1;i<=n;i++) {
47             a[i]=cin.nextLong();
48             if(a[i]==0) {
49                 flag=true;
50             }
51             b[i]=cin.nextLong();
52             if(ma>b[i]) {
53                 ma=b[i];pos=i;
54             }
55         }
56         if(t==0) {
57             System.out.println(0);
58             cin.close();
59             return ;
60         }
61         if(p==0) {
62             System.out.println(0);
63             cin.close();
64             return ;
65         }
66         if(b[pos]==0){
67             if(flag) {
68                 System.out.println(0);
69                 cin.close();
70                 return ;
71             }
72             else {
73                 System.out.println(t);
74                 cin.close();
75                 return ;
76             }
77         }
78         long l=0,r=p;
79         while(l<r) {
80             long mid=(l+r)/2;
81             if(check(mid)) r=mid;
82             else l=mid+1;
83         }
84         solve(l);
85         if(l==p) {
86             ans=ans.add(BigInteger.valueOf(p).multiply(BigInteger.valueOf(t-sumx)));
87         }
88         else {
89             ans=ans.subtract(BigInteger.valueOf(l).multiply(BigInteger.valueOf(sumx-t)));
90         }
91         System.out.println(ans.toString());
92         cin.close();
93     }
94 }
View Code

 

转载于:https://www.cnblogs.com/lglh/p/11161279.html

这篇关于魔理沙的烟火制造的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414232

相关文章

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

亿发:中小型制造企业数字化转型典型场景、痛点、解决方案

随着全球制造业的不断发展,中小型制造企业正面临前所未有的挑战和机遇。数字化转型成为了企业提升竞争力、优化生产效率、应对市场变化的关键路径。然而,对于资源相对有限的中小型制造企业而言,数字化转型并非易事。他们在推进转型的过程中往往遇到许多典型场景和痛点。本文将分析这些场景及痛点,并给出针对性的解决方案,帮助中小制造企业成功迈向数字化。 场景一:生产计划与调度的复杂性 典型场景: 在生产过程

提升汽车制造质量:矫平技术在车门平整化中的应用

汽车制造业对每一个部件的精细度都有着极高的要求,尤其是车门这样的关键组件。车门不仅需要提供良好的密封性,还要在外观上展现出车辆的高端品质。然而,生产过程中的不平整问题往往成为提升制造质量的障碍。矫平技术的应用,为解决这一问题提供了有效的手段。 车门平整度的重要性 车门的平整度对于车辆的整体性能和美观至关重要。不平整的车门可能导致密封不良、噪音增大,甚至影响车门的正常开启和关闭。因此,确保车门的

变压器制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

变压器制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型。作为传统制造业的重要组成部分,变压器制造行业也不例外地踏上了数字化转型的快车道。而变压器制造5G智能工厂物联数字孪生平台的出现,更是为这一进程注入了强大的动力,不仅极大地提升了生产效率,还推动了整个行业的智能化、精细化发展。 5G智能工厂,是基于5G通信技术和物联网(IoT)的深度融合而构建的智能制造体系。它利用5G网络的高速度、

发动机制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

发动机制造作为高端制造业的核心领域之一,正积极探索并引领这一变革。其中,发动机制造5G智能工厂物联数字孪生平台的兴起,不仅为发动机制造业注入了新的活力,也为整个制造业的数字化转型树立了新的标杆。发动机制造5G智能工厂物联数字孪生平台,是基于5G通信技术、物联网(IoT)、大数据、人工智能(AI)及数字孪生技术等多领域深度融合的产物。 工业物联网技术将发动机制造工厂内的各类设备、传感器等物体互联互

GPU池化赋能智能制造

2023年3月10日,“第六届智能工厂高峰论坛”在杭州隆重揭幕。本次会议由e-works数字化企业网、浙江制信科技有限公司主办,中国人工智能学会智能制造专业委员会、长三角新能源汽车产业链联盟、长三角(杭州)制造业数字化能力中心、浙江省智能工厂操作系统技术创新中心协办。趋动科技作为钻石合作伙伴出席了本次峰会,与制造业精英企业以及行业专业人士共同分享制造业在智能工厂推进过程中的成功经验,探讨工厂改进中

智能制造新纪元:3D协同平台引领前沿创新

随着市场的发展,我们的企业面临两个方面的挑战: 从业务和市场方面来看,为了在竞争中取得更大优势,我们需要以高质且低价的产品赢得消费者的信赖,同时必须有效控制成本、加速产品迭代,缩短产品上市周期,以确保能够快速响应市场变化。 从设计和技术方面来看,产品的发展趋势正朝着高度集成化、模块化以及小型化的方向迈进,约束条件越来越复杂,同时也需要满足新的设计标准及行业规则。 3D协同平台提供更多可

飞利浦的精益转型之路:从传统制造到智能制造的华丽蜕变

飞利浦作为一家拥有百年历史的全球知名品牌,其在精益转型方面的经验值得我们深入研究和借鉴。本文将从飞利浦的转型背景、转型过程、转型成效以及给我们的启示等方面,探讨飞利浦如何成功实现精益转型,从而在新的市场竞争中脱颖而出。 一、转型背景 随着科技的飞速发展和市场竞争的日益激烈,传统制造业面临着巨大的挑战。飞利浦作为一家以家电和医疗设备为主的制造企业,同样面临着产品同质化、成本上升、利润下滑等问

英文缩写大全(IT 领域和电子行业制造领域)

英文缩写大全(IT 领域和电子行业制造领域) 前言一、计算机通用二、WINDOWS三、LINUX四、编程语言1. 前端 / 设计2. JAVA / Android3. PHP4. Python 四、电子行业制造领域五、常识 前言 本文收集了各类英文缩写大全,方便查阅,主要涉及【IT领域】和【电子行业制造领域】为防止翻译出现偏差,只描述英文全称,可以自行通过词典翻译缩写的说明顺序无

【智能制造-30】机器人飞车现象

什么是机器人飞车? 机器人飞车是指机器人在运行过程中出现失控加速的异常现象。表现形式如下: 速度异常升高 正常情况下,机器人的运动速度是由其控制系统根据预设的程序和指令进行精确控制的。但在飞车状态下,机器人的电机转速会突然大幅增加,导致整体运动速度远超正常范围。例如,一个工业机器人在执行装配任务时,原本以稳定的速度进行操作,突然之间速度急剧上升,可能对周围的设备、工件以及操作人员造成严重的安全