2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017)(蒟蒻解題版)
阿新 • • 發佈:2018-12-24
http://codeforces.com/gym/101669/attachments
蒟蒻只討論四個題。(蒟蒻也覺得這樣不好,但是現在蒟蒻實力有限並且暫時沒有經歷更加深入的研究這種東西,等蒟蒻有時間了一定把部落格好好整整,)
G:給定一個質點,和各個不同運動階段的 加速度和加速度執行時間,問你如何設定各個時間段的前後順序,能夠使他走過的路程比初始時間段順序最多?
貪心,每次把加速度大的時間段放在前面(不考慮時間)
開始考慮使 a*t 貪心,但是考慮一個a特別小,但是t特別大的,對後面速度的影響,肯定使很小的(這個注意看V-T影象qwq)
假說:走過路程和初始最接近的,那就是a遞減唄。
這道題還有一個考點,那就是default, 作名詞動詞有 未履行的意思,在電腦科學中,有預設的意思(我能說我沒猜出來麼)
#include <bits/stdc++.h>
using namespace std;
vector<pair<double,double> >q;
bool cmp2(pair<double,double>a,pair<double,double>b){
return a.first>b.first;
}
int main()
{ int m;
double a,b;
cin>>m;
for(int i=0;i<m;i++){
cin>>a>>b;
q.push_back(make_pair(a,b));
}
// sort(q.begin(),q.end(),cmp2);
double v=0;
double s=0;
for(int i=0;i<q.size();i++){
s+=v*q[i].second+0.5*q[i].first*q[i].second*q[i].second;
v=v+q[i].first*q[i].second;
}
v=0;
double ss=0;
v=0;
sort(q.begin(),q.end(),cmp2);
for(int i=0;i<q.size();i++){
ss+=v*q[i].second+0.5 *q[i].first*q[i].second*q[i].second;
v=v+q[i].first*q[i].second;
}
printf("%.1lf\n",abs(ss-s));
return 0;
}
其他三道題都口頭ac好幾天了。馬上更。