zoukankan      html  css  js  c++  java
  • Codeforces Gym101572 B.Best Relay Team (2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017))

    2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017)

    今日份的训练,题目难度4颗星,心态被打崩了,会的算法太少了,知道要用什么写,但是写不出来啊(抱头痛哭)
    和猪队友一共写出来3道题,本来I题应该可以写出来的,有向图求最小环输出路径就可以,But,没有板子啊!!!(。•́︿•̀。)

    赛后补题,补一下I(单独写),D题和E题表示读不懂题,不知道要干嘛,D题是bfs+位运算 ,E题是bfs+优先队列,题意都读不懂,题解肯定更看不懂啊(痛哭)

    算了算了,先占个坑,今晚脑袋有点乱,先看会书,明天来冒泡(ಥ_ಥ)(脑子已经成猪了)

    思想斗争一番,还是继续写题解(;´д`)ゞ

    Problem B Best Relay Team

    这个题就是选运动员,因为运动员爆发和慢慢加速的速度是不一样的(很现实,突然开始跑和慢慢加速跑,同样的路程跑的时间肯定不一样,除了第一棒,其他的几棒都可以先助跑一小段,不了解游戏规则的自己去跑一跑就懂了。。。),这个题就是选4个人去跑接力,总用时最少。就让你选,选吧。我一开始写的时候想的是按第二个时间排序,但是写挫了(;´д`)ゞ,还好队友给力,把这道题给a了(我的队友无敌的),按照队友的思路,自己敲了一份代码,就是枚举每一个人,让这个人当第一棒,然后再找除了这个人的其他人中第二棒跑的最快的3个人,然后所有情况中选总用时最少的就是答案。

    代码:

     1 //B-不好玩
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<cstdlib>
     7 #include<string.h>
     8 #include<set>
     9 #include<vector>
    10 #include<queue>
    11 #include<stack>
    12 #include<map>
    13 #include<cmath>
    14 using namespace std;
    15 typedef long long ll;
    16 const int INF=0x3f3f3f3f;
    17 const int maxn=1e5+10;
    18 double PI=acos(-1.0);
    19 struct node{
    20     string s;
    21     double fir,sec;
    22 }a[maxn];
    23 bool cmp(node a,node b){
    24     return a.sec<b.sec;
    25 }
    26 int main(){
    27     int n;
    28     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    29     while(cin>>n){
    30         for(int i=0;i<n;i++)
    31             cin>>a[i].s>>a[i].fir>>a[i].sec;
    32         sort(a,a+n,cmp);
    33         double ans=INF;
    34         string name[5];
    35         for(int i=0;i<n;i++){
    36             double temp=0;
    37             int h=0;
    38             string ret[5];
    39             temp+=a[i].fir;
    40             ret[h++]=a[i].s;
    41             int j=0;
    42             while(h!=4&&j<n){
    43                 if(i==j)j++;
    44                 else{
    45                     temp+=a[j].sec;
    46                     ret[h++]=a[j].s;
    47                     j++;
    48                 }
    49             }
    50             if(temp<ans){
    51                 ans=temp;
    52                 for(int k=0;k<4;k++)
    53                     name[k]=ret[k];
    54             }
    55         }
    56         cout<<ans<<endl;
    57         for(int i=0;i<4;i++)
    58             cout<<name[i]<<endl;
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    关于clipboard插件的使用问题
    js复制内容到剪切板,兼容pc和手机端,支持Safari浏览器
    CSS选择器复习
    关于ajaxFileUpload图片上传,success和error都触发的情况
    百度地图API,定位您的当前位置
    开发移动端web页面click事件失效问题
    开发移动端web应用, 使用手机自带键盘的搜索按钮
    原生JS实现一个简单的前端路由(原理)
    计算机网络 —— 网络层
    计算机网络 —— 数据链路层
  • 原文地址:https://www.cnblogs.com/ZERO-/p/8362048.html
Copyright © 2011-2022 走看看