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