难点在审题, 每张牌不放回的取出, 用ump+set来存放有序的同色牌, 然后拷贝到vector中比较
#include <bits/stdc++.h>
#include <regex>
using namespace std;
using pii=pair<int,int>;
int main() {
int T;
unordered_map<char,set<pii>> groups;
cin>>T;
while(T--)
{
int num,count;
char kind;
cin>>num>>count>>kind;
groups[kind].insert({num,count});
}
long long result=0;
for(auto& st:groups)
{
vector<pii> nums(st.second.begin(),st.second.end());
int n=nums.size();
for(int i=0;i<n-4;++i)
{
// int minCount=nums[i].second;
if(nums[i].first+4==nums[i+4].first)
{
// for(int j=1;j<=4;++j)
// minCount=min(minCount,nums[j].second);
int minCount=min_element(nums.begin()+i,nums.begin()+i+5,[](auto& pii1,auto& pii2){return pii1.second<pii2.second;})->second;
for_each(nums.begin()+i,nums.begin()+i+5,[&](auto& p){p.second-=minCount;});
result+=minCount;
}
}
// for(auto &itr:st.second)cout<<itr<<endl;
}
cout<<result<<endl;
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号