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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

浙大PAT 1033

發(fā)布時(shí)間:2024/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浙大PAT 1033 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
分析:貪心算法; 從起點(diǎn)選擇 最近的比起點(diǎn)小的;如果沒有選擇范圍內(nèi)最小的;其次看距離終點(diǎn)是否在范圍內(nèi); 過程:調(diào)試了很多次,最后只是兩個(gè)浮點(diǎn)數(shù)的問題; 下面是ac 代碼; #include <stdio.h> #include <algorithm> #include <vector> #include <iostream> using namespace std; struct zhandian{double gas;float dis; }sta[501]; int n; int carry,maxd; int dvag; bool cmp(const zhandian &a,const zhandian &b) {return a.dis<b.dis; }int findmin(int chushi,int maxlength) {int i=chushi+1;int next=-1;float maxgas=1<<30;if(maxd-sta[chushi].dis<=maxlength){while(sta[i].dis-sta[chushi].dis<=maxlength&&i<n){if(sta[i].gas<=sta[chushi].gas){next=i;break;}i++;} }elsewhile(sta[i].dis-sta[chushi].dis<=maxlength&&i<n){if(sta[i].gas<=sta[chushi].gas){next=i;break;}if(sta[i].gas<=maxgas){next=i;maxgas=sta[i].gas;}i++;}if(next!=-1)return next;else return -1; } int main() {int tankload=0;float maxlength;while(scanf("%d%d%d%d",&carry,&maxd,&dvag,&n)!=EOF){for(int i=0;i<n;i++){cin>>sta[i].gas;cin>>sta[i].dis;}sort(sta,sta+n,cmp);maxlength=carry*dvag;int i=0;float length=0;float count=0;int flag=0;int chushi=0;float youxiang=0;if(sta[0].dis!=0){printf("The maximum travel distance = 0.00\n");continue;}while(1){int kk=maxd-sta[chushi].dis; if(kk<=maxlength){int k=findmin(chushi,maxlength);if(k==-1){ length=maxd;count+=(kk-youxiang*dvag)*sta[chushi].gas/dvag;break;}else{float kount=sta[k].dis-sta[chushi].dis-youxiang*dvag;if(kount>=0){count+=kount*sta[chushi].gas/dvag;youxiang=0;}else {youxiang=-kount/dvag;}length+=sta[k].dis-sta[chushi].dis; chushi=k;} }else {int k=findmin(chushi,maxlength);if(k==-1){length+=maxlength;flag=1;break;}else{if(sta[k].gas<=sta[chushi].gas){float kount=sta[k].dis-sta[chushi].dis-youxiang*dvag;if(kount>=0){count+=kount*sta[chushi].gas/dvag;youxiang=0;}else {youxiang=-1.0*kount/dvag;}}else {count+=(carry-youxiang)*sta[chushi].gas;youxiang=carry-(sta[k].dis-sta[chushi].dis)/dvag;}length+=sta[k].dis-sta[chushi].dis; chushi=k;}}}if(flag==0) printf("%.2f\n",count);else printf("The maximum travel distance = %.2f\n",length); }return 0; }

總結(jié)

以上是生活随笔為你收集整理的浙大PAT 1033的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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