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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hdoj4710 规律题

發(fā)布時(shí)間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdoj4710 规律题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2018-3-1

題目大意比較容易理解,一開(kāi)始覺(jué)得很簡(jiǎn)單,附上TLE的代碼:

#include<iostream> using namespace std;int t,n,a,b;int main(){cin>>t;while (t--){cin>>n>>a>>b;if (a==b){cout<<0<<endl;continue;}int r=0;for (int i=0;i<n;i++){int t=i%a-i%b;if (t>0) r+=t;else r+=-t;}cout<<r<<endl;}return 0; }

直接輸出為零的情況:
1.如果說(shuō)舊箱子和新箱子的大小是一樣的話(huà),那么我們就不用移動(dòng)了。
2.如果說(shuō)兩個(gè)箱子都沒(méi)有全用掉的話(huà),即n<=a&&n<=b的話(huà),那么我們也不用移動(dòng)了。

如何進(jìn)行優(yōu)化呢,O(n)的復(fù)雜度已經(jīng)超出了題目的要求。

令p為(a*b)/gcd(a,b),即a與b的最小公倍數(shù),不知道大家有沒(méi)有想到,無(wú)論對(duì)于哪個(gè)箱子而言,第0個(gè)位置放的永遠(yuǎn)都是編號(hào)為0,p,2*p…的球,它的位置是不變的,第1個(gè)位置放的永遠(yuǎn)都是編號(hào)為0+1,p+1,2*p+1…的球,它的位置改變了1…第i個(gè)位置放的永遠(yuǎn)都是編號(hào)為0+i,p+i,2*p+i…的球,它的位置改變了i,這樣我們就能夠在O(a,b的最小公倍數(shù))內(nèi)解決這個(gè)問(wèn)題了,但是結(jié)果好像并沒(méi)有那么理想,還是TLE:

#include<iostream> #include<cmath> using namespace std;typedef long long ll; const int N = 100000; ll t,n,a,b;ll gcd(ll a,ll b){while(b^=a^=b^=a%=b);return a;} int main(){cin>>t;while (t--){cin>>n>>a>>b;if (a==b||(a>=n&&b>=n)){cout<<0<<endl;continue;}ll p=(a*b)/gcd(a,b);ll r=0,m=min(n,p),t=n%p,c=(n/p+1);for (int i=0;i<t;i++){r+=abs(i%a-i%b)*c;}c=c-1;for (int i=t;i<m;i++){r+=abs(i%a-i%b)*c;}// int p=(a*b)/gcd(a,b);// int r=0,m=min(n,p);// for (int i=0;i<m;i++){// int k=n/p;// if (i<=n%p) k+=1;// r+=abs(i%a-i%b)*k;// }cout<<r<<endl;}return 0; }

對(duì)于當(dāng)a與b的最小公倍數(shù)比較大的情況,我的時(shí)間復(fù)雜度為O(n),反之的話(huà),就是O(a,b的最小公倍數(shù)),但是這樣還是TLE,我們還是需要進(jìn)一步找規(guī)律:

當(dāng)我們把它展開(kāi)時(shí):
a:0,1,2,3,4,0,1,2,3,4,0,1,2,3,4…
b:0,1,2,0,1,2,0,1,2,0,1,2,0,1,2…
c:0,0,0,3,3,2,1,1,1,4,1,1,2,2,2…

不難發(fā)現(xiàn):當(dāng)a為0或者b為0的時(shí)候是我們的一個(gè)分界線(xiàn),在相鄰的兩個(gè)0之間的差值是相等的,其實(shí)這不難理解,若某一個(gè)為0,那么它再往后一定是遞增的,另一個(gè)數(shù)再往后的時(shí)候只要它沒(méi)有遇到0,那么它也是遞增的…

#include<iostream> #include<cmath> using namespace std;typedef long long ll; const int N = 100000; ll t,n,a,b;ll gcd(ll a,ll b){while(b^=a^=b^=a%=b);return a;} ll min_(ll a,ll b){if (a<b) return a;return b; }int main(){cin>>t;while (t--){cin>>n>>a>>b;if (a==b||(a>=n&&b>=n)){cout<<0<<endl;continue;}ll p=(a*b)/gcd(a,b),r=0;if (n>p){for (int i=0;i<p;){int c=min_(a-i%a,b-i%b);//找到距離最近的一個(gè)零的長(zhǎng)度r+=abs(i%a-i%b)*c;i+=c;}r*=n/p; //循環(huán)出現(xiàn),乘上循環(huán)次數(shù)即可}int q=n%p;for (int i=0;i<q;){int c=min_(min_(a-i%a,b-i%b),q-i);r+=abs(i%a-i%b)*c;i+=c;}cout<<r<<endl;}return 0; }

在TLE了那么多次之后終于A(yíng)C了。

總結(jié)

以上是生活随笔為你收集整理的hdoj4710 规律题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 乱岳| 香蕉视频国产 | 欧美少妇毛茸茸 | 少妇毛片 | 国产精品第12页 | 黑料av在线| 日韩中文在线字幕 | 国产精品成人午夜视频 | 999久久久国产 | 日本美女一区二区三区 | 久久久久国产精品夜夜夜夜夜 | 午夜裸体性播放 | 久久福利视频网 | 精品国产aⅴ | 久久精品天天中文字幕人妻 | 成人亚洲精品 | 天堂在线www| 欧美成人国产精品高潮 | 四虎永久在线精品 | 男女曰逼视频 | 欲涩漫入口免费网站 | 欧美大尺度做爰啪啪床戏明星 | 强公把我次次高潮hd | 欧美一区二区久久久 | 日韩在线视频网站 | 一区在线免费观看 | 综合久久久久综合 | 99黄色| 波多野结衣免费观看视频 | 91精品视频在线看 | 狠狠爱夜夜 | 亚洲天堂男 | 九九热在线视频免费观看 | 麻豆av一区二区三区久久 | 国产女人18毛片水真多18 | 国产精品视频免费观看 | 欧美日韩亚洲国产综合 | 国产在线精品一区二区三区 | 国产人妖一区二区 | 亚洲春色在线观看 | 久久99热这里只有精品 | 日韩av手机在线 | 亚洲欧洲中文 | 欧美日韩片 | 国产精品美女一区二区 | 无码少妇一区二区 | 草逼视频网站 | 三上悠亚在线播放 | 亚洲高清视频一区二区 | 亚洲一二三四区 | 国模吧无码一区二区三区 | 国产精品成人av性教育 | 特黄在线 | 免费看成年人视频 | 黄色免费在线看 | 欧美日韩女优 | 午夜视频 | 久久精品牌麻豆国产大山 | 欧美日比视频 | 欧美大尺度做爰啪啪床戏明星 | 破处视频在线观看 | 乱日视频 | 国产激情影院 | 男人的天堂国产 | 性欧美巨大乳 | 日韩视频一区二区三区四区 | 国产片一区二区 | 嫩草影院在线免费观看 | 一区二区美女 | 青草视频在线免费观看 | 综合爱爱网 | 婷婷色影院 | 久久免费视频一区 | 久热只有精品 | 久久久免费高清视频 | 日韩精品视频一区二区在线观看 | 日狠狠 | 欧美 日韩 国产 一区二区三区 | 国产一区二区三区影院 | 欧洲在线视频 | 香蕉视频99| 日韩一二在线 | 色综合中文 | 色日韩 | 视频一区二区三区四区五区 | 成人免费在线播放视频 | 黑白配高清国语在线观看 | 在线观看免费毛片 | 国产亚洲精品成人 | 国产九九精品视频 | 天天色天天干天天 | 日本少妇一区二区三区 | 国产一区不卡在线 | 国产亚洲女人久久久久毛片 | 日本www在线播放 | 国产91丝袜在线播放0 | 国产网站大全 | 大尺度做爰呻吟舌吻情头 | 一级黄大片 |