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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ZCMU—1946

發布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZCMU—1946 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1946: Who is stupid?

Time Limit:?1 Sec?? Memory Limit:?128 MB
Submit:?4?? Solved:?1
[ Submit][ Status][ Web Board]

Description

xh 和 hx 經常互相嘲笑對方智商低而打架,cc為了讓hx和xh和諧的變成好基友,cc要操作使得hx 和xh的智商變成一樣。

題目給出hx和xh的智商x,y(0<=x, y<=1e9) , cc每一次操作都能改變hx的智商,cc的神奇的操作有3個選擇

1.增加一點hx的智商

2.減少hx的智商 z點 (下一次操作cc就可以減少2*z點智商,若上一次cc增加了一點hx的智商或者選擇休息,則這次只能減少1點,第一次操作也只能減少1點智商)

3.休息(休息也算一種操作)

cc想知道做少操作幾次才能使hx和xh變成好基友?

Input

輸入包含T組數據(1 <= T <= 300000)

每組數據包含x,y

Output

輸出最小的操作次數

Sample Input

2 1 5 7 3

Sample Output

4 4

HINT

智商不能小于0


【分析】

對智商x,y可以考慮,當x<=y時只能進行+1操作,所以ans=y-x; 否則就要考慮如何減,稍微考慮一下可以發現,肯定是一次性減,減到x<=y,那么答案就是進行減智商的步數t+y-x;
但是有可能是減到最靠近y的但是比y大的那個數,然后停一步,接著從1開始減,然后減到x<=y,答案如上, 類推,也就是可能需要多次連續的減智商,再+1補回來。 所以只要去搜一下減的次數就可以了,另外考慮一點,因為如果要打斷連續的減智商,需要一部休息(stop),但是這一步stop用來做之后需要的y-x步的+1操作也是可以的,所以記錄一下stop,在之后考慮+1操作的時候先用stop次數去補。別的問題不大...記得10^9需要考慮long long 防止(1<<t)炸掉 【代碼】 #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> using namespace std; long long x,y; long long dfs(long long now,long long deep,long long stop) {if (now==y) return deep;long long t=0;while (now-(1<<t)+1>y) t++;if (now-(1<<t)+1==y) return deep+t;long long ans=y-max(0LL,now-(1<<t)+1);ans=deep+t+max(0LL,ans-stop);ans=min(ans,dfs(now-(1<<(t-1))+1,deep+t,stop+1));return ans; }int main() {int pp;scanf("%d",&pp);while (pp--){scanf("%lld%lld",&x,&y);if (x<=y)printf("%lld\n",y-x);else printf("%lld\n",dfs(x,0,0));}return 0; }

總結

以上是生活随笔為你收集整理的ZCMU—1946的全部內容,希望文章能夠幫你解決所遇到的問題。

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