日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客14392 猴子吃香蕉

發布時間:2024/7/19 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客14392 猴子吃香蕉 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/problem/14392
來源:牛客網

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 65536K,其他語言131072K
64bit IO Format: %lld

題目描述

有n只猴子,第i只猴子每過xi小時會連續吃香蕉yi小時。猴子從第二次開始每次休息結束后這只猴子連續吃香蕉的時間會增加zi小時。

給定n只猴子,每一只的xi,yi,zi,以及時間t,求在前t小時中,所有猴子共吃了多少小時。
對于一只猴子來說是這樣的:
從第1小時開始:
休息xi小時( 1 -> xi )
吃yi小時( xi + 1 -> xi + yi )
休息xi小時
吃yi+zi小時
休息xi小時
吃yi+zi+zi小時

輸入描述:

第一行兩個數n和t;

之后n行,第i+1行每行三個數xi,yi,zi.

輸出描述:

一行一個數表示答案.

開始用暴力的方法,發現會超時。然后參考了其他人的題解 ,發現可以用解方程的方法來降低時間復雜度。這其實是一個等差數列的問題。這里還要注意python3的除法結果會保留1位小數,所以要使用//。

a1 = x+y an = a1+(n-1)d 2*t = 2Sn = n*(a1+an) = n*(2*a1+(n-1)*d)ax^2+bx+c=02*a1*n+d*n^2-d*n-2*t = 0 d*n^2 + (2*a1-d)n + (-2*t) = 0a = d b = 2*a1-d c = -2*t n, t = list(map(int, input().split())) ans = 0 import math for i in range(n):x, y, z = list(map(int, input().split()))if z == 0:count = t/(x+y)else:a = zb = 2*x+2*y-zc = -2*tcount = (-b + math.sqrt(b**2 - 4*a*c))/(2*a)count = math.floor(count)ans += y*count + count*(count-1)*z//2tmp = t - (x+y)*count - count*(count-1)*z//2 - xif tmp > 0:ans += tmpprint(ans)

總結

以上是生活随笔為你收集整理的牛客14392 猴子吃香蕉的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。