bestcoder 92

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/xirang_fff/article/details/57143291

hdu 6015

sort之後每個相同的字符串加最大的兩個到ans上

hdu 6016

枚舉每一箇中間的邊 

因爲一條符合要求的鏈要三條邊 

所以每一條中間的邊的兩個端點的度減去一再乘

就是以這一條邊爲中間的邊的鏈數了

也沒有重複的問題

hdu 6015

#include<bits/stdc++.h>
using namespace std;
typedef pair<string,int> l;
pair<string,int>lesson[1010];
bool cmp(const l &a, const l &b)
{
    if (a.first < b.first)
        return true;
    else if(a.first==b.first)
    {
        if(a.second>b.second)
            return true;
        else return false;
    }
    else return false;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>lesson[i].first>>lesson[i].second;
        }
        sort(lesson,lesson+n,cmp);
        int ans=0;


        int judge=0;
        for(int i=0;i<n;i++)
        {
             if(i==0)
             {
                 ans+=lesson[i].second;judge++;
             }
             else
             {
                 if(lesson[i].first==lesson[i-1].first)
                 {
                     if(judge<2)
                     {
                         ans+=lesson[i].second;
                         judge++;
                     }
                     else continue;
                 }
                 else
                 {
                     judge=1;
                     ans+=lesson[i].second;
                 }
             }
        }
        cout<<ans<<endl;


    }
    return 0;
}


hdu 6016

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章