Round A - Kick Start 2019
a.鏈接:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6
題意:有n個(gè)學(xué)生,要從里面選出p個(gè)來。每一個(gè)學(xué)生都有一個(gè)能力值。
要求你選出來的一組學(xué)生能力是相同的,有的學(xué)生能力比較低,所以需要花費(fèi)你的時(shí)間來提升學(xué)生能力,一個(gè)學(xué)生提升1個(gè)能力值需要1小時(shí)。
求最低花費(fèi)。
方法:因?yàn)橹荒芴岣邔W(xué)生的能力值,不能降低,所以一定是選擇能力值挨著的那些。將數(shù)組排序,然后計(jì)算前p個(gè)花費(fèi),再將窗口往后移動(dòng)...分別計(jì)算。
#include <iostream> #include <climits> #include <algorithm> #include <vector>using namespace std;static auto x = [](){std::ios::sync_with_stdio(false);std::cin.tie(NULL);std::cout.tie(NULL); };int main(){int t,n,p;cin>>t;int tmp=0;int ii=0;while(ii<t){cin>>n>>p;vector<int> si;for(int i=0;i<n;i++){cin>>tmp;si.push_back(tmp);}if(p==1){cout<<"Case #"<<++ii<<": "<<0<<endl;continue;}sort(si.begin(),si.end());int last=0;int minn=INT_MAX;for(int i=0;(i+p-1)<n;i++){if(i==0){for(int j=0;j<p;j++){last += si[p-1]-si[j];}}else{last-=si[i+p-2]-si[i-1];last+=(si[i+p-1]-si[i+p-2])*(p-1);}minn=min(minn,last);}cout<<"Case #"<<++ii<<": "<<minn<<endl;}return 0; } View Code?
b.?https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/000000000006987d
沒做出來啊,真是菜的不行....連題解都看不懂!!!
題意:r*c的方格,其中1表示郵局,0表示空地。每個(gè)空地都有個(gè)最短運(yùn)輸時(shí)間x(是所有的1到這個(gè)點(diǎn)的曼哈頓距離中最小的),總運(yùn)輸時(shí)間是每個(gè)空地最短運(yùn)輸時(shí)間最大的那個(gè)。讓你添加一個(gè)郵局,求最小的總運(yùn)輸時(shí)間。(應(yīng)該是這個(gè)意思吧。。。)
代碼錯(cuò)誤,只是暫時(shí)記錄。
#include <iostream> #include <climits> #include <algorithm> #include <vector>using namespace std;static auto x = [](){std::ios::sync_with_stdio(false);std::cin.tie(NULL);std::cout.tie(NULL); };typedef struct locaa{int x,y; } loca;int main(){int t,r,c;cin>>t;int ii=0;char charr='0';while(ii<t){vector<loca> yi,ling;vector<int> lingdis;cin>>r>>c;for(int i=0;i<r;i++){for(int j=0;j<c;j++){cin>>charr;if(charr=='0'){ling.push_back({i,j});lingdis.push_back(INT_MAX);}else{yi.push_back({i,j});}}}if(ling.size()==0){cout<<"Case #"<<++ii<<": "<<0<<endl;continue;}if(ling.size()==r*c){int midx,midy;if(r%2==1){midx=(r+1)/2;}else{midx=r/2;}if(c%2==1){midy=(c+1)/2;}else{midy=c/2;}int mhd=r-midx+c-midy;cout<<"Case #"<<++ii<<": "<<mhd<<endl;continue;}int maxx=INT_MIN;int x,y;for(int i=0;i<ling.size();i++){int minn=INT_MAX;for(int j=0;j<yi.size();j++){int dis=abs(ling[i].x-yi[j].x)+abs(ling[i].y-yi[j].y);minn=min(dis,minn);}lingdis[i]=minn;if(minn>maxx){maxx=minn;x=ling[i].x;y=ling[i].y;}}yi.push_back({x,y});int res=INT_MIN;for(int i=0;i<ling.size();i++){lingdis[i]=min(lingdis[i],abs(ling[i].x-x)+abs(ling[i].y-y));res=max(res,lingdis[i]);}cout<<"Case #"<<++ii<<": "<<res<<endl;}return 0; } /* 3 3 3 101 000 101 1 2 11 5 5 10001 00000 00000 00000 10001*/ View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/TWS-YIFEI/p/10590073.html
總結(jié)
以上是生活随笔為你收集整理的Round A - Kick Start 2019的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 版本控制器 初学习,工作中的问题
- 下一篇: 康熙环球