hdu 6015 Skip the Class
Posted Newdawn_ALM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 6015 Skip the Class相关的知识,希望对你有一定的参考价值。
题目链接:HDU 6015
一开始读题有点懵,不知道是什么意思,不过后来想到既然是 BestCoder 的题,那么就用它的思维去理解,大胆 yy 题意即可。
题意大概就是说有 n 们课程,Luras 每逃一门都能得到相应的 value,但同一们课程(前面的字符串完全相同)最多只能逃两次,逃两次后就必须去上这们课了,也就不能再获得这们课的后续的 value 了,问 Luras 最多能获得多少 value。所以对于每们课程,只取它最大的两个值即可,然后累加就是答案了,用一个精巧的 map<string, pair<int, int>> 作为数据结构来处理即可。
#include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <map> using namespace std; typedef pair<int, int> pii; int main() { int t,n,v; char ss[20]; map<string, pii> msii; scanf("%d", &t); while(t--) { scanf("%d", &n); msii.clear(); while(n--) { scanf("%s %d", ss, &v); if(msii.find(ss) == msii.end()) { msii[ss] = make_pair(v,0); } else { pii &p = msii[ss]; if(p.second == 0) { if(v > p.first) { p.second = p.first; p.first = v; } else { p.second = v; } } else { if(v > p.first) { p.second = p.first; p.first = v; } else if(v > p.second) { p.second = v; } } } } int sum = 0; for(map<string, pii>::const_iterator it = msii.begin(); it != msii.end(); ++it) { sum += it->second.first + it->second.second; } printf("%d\n", sum); } return 0; }
以上是关于hdu 6015 Skip the Class的主要内容,如果未能解决你的问题,请参考以下文章
hdu 2019多校 Just Skip The Problem
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe