UVa 1648 (推公式) Business Center

题意:

有一种奇怪的电梯,每次只能向上走u个楼层或者向下走d个楼层

现在有m个这种电梯,求恰好n次能够到达的最小楼层数(必须是正数),最开始默认位于第0层。

分析:

假设电梯向上走x次,则向下走n-x次,则所到达的楼层为xu - (n-x)d ≥ 0

(u+d)x ≥ nd,x的最小值为

换句话说,如果nd % (u+d) == 0, x = nd / (u+d)

否则 x = nd / (u+d) + 1

考虑到不能停到0楼的条件:当nd % (u+d) == 0会出现这种情况,所以只能多上一次u个楼层,少下一次d个楼层,所以这样最终会停在u+d层

 1 #include <cstdio>
 2
 3 int main()
 4 {
 5     int n, m;
 6
 7     while(scanf("%d%d", &n, &m) == 2)
 8     {
 9         int ans = 1000000000;
10         while(m--)
11         {
12             int u, d;
13             scanf("%d%d", &u, &d);
14             if((n*d) % (u+d) == 0) { if(u+d < ans) ans = u+d; }
15             else
16             {
17                 int x = (n*d) / (u+d) + 1;
18                 int t = x*(u+d)-n*d;
19                 if(t < ans) ans = t;
20             }
21         }
22         printf("%d\n", ans);
23     }
24
25     return 0;
26 }

代码君

时间: 2024-10-28 11:40:06

UVa 1648 (推公式) Business Center的相关文章

UVA 10014(推公式)

题目链接:UVA 10014 解题思路: 第一个想法是高斯消元,但貌似复杂度有点高,于是开始推公式,想了好久. 推导过程: a[i-1] + a[i+1] = 2 * ( a[i] + c[i] ) a[1] + a[n] = a[0] + a[n+1] - c[1:n] n = 1, 2, 3, - n (n+1) * a[1] = n*a[0] +a[n+1] - ( n*c[1] + (n-1)*c[2] + - + c[n] ) 代码: #include <cstdio> #inclu

HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)

在一个D维空间,只有整点,点的每个维度的值是0~n-1 .现每秒生成D条线段,第i条线段与第i维度的轴平行.问D条线段的相交期望. 生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平行)为,i!=j时,a1[j]=a2[j],且随机取区间[0,n-1]内的整数.然后a1[i],a2[i]在保证a1[i]<a2[i]的前提下同样随机. 由于D条线段各自跟自己维度的轴平行,我们可以转换成只求第i个维度与第j个维度的相交期望,然后乘以C(2,n)就好了 显然线段[a1,a2]和线段[

HDU 4870 Rating(概率、期望、推公式) &amp;&amp; ZOJ 3415 Zhou Yu

其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒)四五次才上来写这份有抄袭嫌疑的题解... 这2题很类似,多校的rating相当于强化版,不过原理都一样.好像是可以用高斯消元做,但我不会.默默推公式了. 公式推导参考http://www.cnblogs.com/chanme/p/3861766.html#2993306 http://www.cn

Trimble Business Center 3.60 Win64 1DVD+Altair.SimLab.14.1

Digital.Vision.Nucoda.v2015.3.020.Win64 1DVD  iMold v13 SP3 for SolidWorks 2011-2016 Win32_64 2CD  NI.LabVIEW.2015.SP1.v15.0.1.Win32_64 2DVD  Trimble Business Center 3.60 Win64 1DVD  CEI.Ensight.10.1.6d.GOLD.Windows.MacOSX64.Linux32_64 4DVD  Mathwork

sgu495:概率dp / 推公式

概率题..可以dp也可以推公式 抽象出来的题目大意: 有 n个小球,有放回的取m次  问 被取出来过的小球的个数的期望 dp维护两个状态 第 i 次取出的是 没有被取出来过的小球的 概率dp[i] 和取出的是已经被取出来过的小球的概率np[i]; 如果第 i-1 次取出的是已经被取出来过的小球 那么第 i 次取出没有取出来过小球的概率即为 dp[i-1]: 反之则为 dp[i-1] - 1/n(没有取出来过的小球少了一个) 所以可以得到状态转移方程 dp[i]=dp[i-1]*(dp[i-1]-

bjfu1211 推公式,筛素数

题目是求fun(n)的值 fun(n)= Gcd(3)+Gcd(4)+…+Gcd(i)+…+Gcd(n).Gcd(n)=gcd(C[n][1],C[n][2],……,C[n][n-1])C[n][k] means the number of way to choose k things from n things. n最大一百万,马上反映到可能是递推打表. 首先肯定是推公式了,fun(n)其实就是Gcd(n)的一个前n项和,没意义,直接看Gcd(n),把前几项列出来,发现公式是Gcd(n) =

ASC(22)H(大数+推公式)

High Speed Trains Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisticNext Problem Problem Description The kingdom of Flatland has n cities. Recently the king of Flatland visited Japan and was amazed by high

HDU 1165 Eddy&#39;s research II (推公式)

Eddy's research II Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3122    Accepted Submission(s): 1137 Problem Description As is known, Ackermann function plays an important role in the sphere

hdu 6128 Inverse of sum(推公式)

题目链接:hdu 6128 Inverse of sum 题意: 给你n个数,问你有多少对i,j,满足i<j,并且1/(ai+aj)=1/ai+1/aj 在%p意义下. 题解: 不愧是高中生,推公式神题. 将式子通分化简后可得(ai2+aj2+ai*aj)%p=0. 然后两边同时将两边乘(ai-aj),化简可得(ai3-aj3)%p=0. 然后就可以用map记录一下个数,并且减掉ai==aj时不合法的情况就行了. 1 #include<bits/stdc++.h> 2 #define F