曾格的github

深信服--厨师造饭

主要是输入很烦,是将回车键做为分隔符。

 1 #include<iostream>
 2 #include<vector>
 3 #include<map>
 4 #include<stdio.h>
 5 using namespace std;
 6 
 7 int getRes(vector<int> init) {
 8     // 用一个map吧
 9     map<int, int> mord;
10     int i = 0;
11     int res = 0;
12     while (init[i] != 7) {
13         if (mord.size() < 3) {   // 灶台还没有三个 0,1,2,数字越大越久
14             mord.insert(make_pair(init[i], 2 - mord.size()));
15         }
16         else {
17             if (mord.count(init[i]) > 0) { // 如果灶台有这个锅
18                 // 比它小的加1,自己置为0
19                 map<int, int>::iterator it = mord.begin();
20                 for (; it != mord.end(); ++it) {
21                     if (it->second < mord[init[i]]) {
22                         it->second++;
23                     }
24                 }
25                 mord[init[i]] = 0;
26             }
27             else {    // 如果没有这个锅
28                 // 删除数字最大的,其他的加1,最后插入新元素并为0
29                 map<int, int>::iterator it = mord.begin();
30                 for (; it != mord.end(); ++it) {
31                     if (it->second == 2) {
32                         mord.erase(it);
33                         break;
34                     }
35                 }
36                 for (it = mord.begin(); it != mord.end(); ++it) {
37                     it->second++;
38                 }
39                 mord.insert(make_pair(init[i], 0));
40                 res += 6;
41             }
42         }
43         ++i;
44         res += 15;
45     }
46     return res;
47 }
48 
49 int main() {
50     vector<int> init;
51     char c;
52    while((c=getchar())) {
53        if (c != '\n') {
54            init.push_back(static_cast<int>(c - '0'));
55        }
56        if (c == '7') break;
57    }
58    int a = getRes(init);
59    cout << a;
60 }

 

posted @ 2021-10-18 22:48  曾格  阅读(40)  评论(0编辑  收藏  举报
Live2D