Опубликовал решение на PasteBin и тут, поскольку суда криво копируются символы таба, и потом нельзя нормально скопировать код. https://pastebin.com/kWSChLsh
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct State {
vector<pair<string, int>> candidates; // кандидаты в этом штате
string state; // название штата
int weight; // "вес" штата
State(string state = " ", int weight = 0) : state(state), weight(weight) {
}
void vote(string candidate) { // принимаем голос избирателя
if (candidates.size() == 0) {
candidates.push_back({ candidate, 1 });
return;
}
for (int i = 0; i < candidates.size(); ++i) {
if (candidates[i].first == candidate) {
++candidates[i].second;
break;
}
else if (i == candidates.size() - 1) {
candidates.push_back({ candidate, 0 });
}
}
}
string getResultOfElections() {
if (candidates.size() == 1) {
return candidates[0].first;
}
sort(candidates.begin(), candidates.end(), // сортировка по голосам
[](pair<string, int>& a, pair<string, int>& b) {
return (a.second > b.second);
});
int last = -1;
for (int i = 1; i < candidates.size(); ++i) { // убираем проигравших
if (candidates[i].second != candidates[0].second) {
last = i;
break;
}
}
if (last != -1)
candidates.erase(candidates.begin() + last);
sort(candidates.begin(), candidates.end(), // лексографическая сортировка
[](pair<string, int>& a, pair<string, int>& b) {
return strcmp(a.first.c_str(), b.first.c_str()) < 0;
});
return candidates[0].first; // победитель
}
};
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите количество штатов: ";
vector<State> states;
int nOfStates = 0;
cin >> nOfStates;
cin.ignore();
cout << "Введите данные о состоянии штатов в формате Название_штата Значимость_Штата: ";
for (int i = 1; i <= nOfStates; ++i) {
string input, buffer, name, weight;
getline(cin, input);
name = input.substr(0, input.find(' '));
weight = input.substr(input.find(' '));
states.push_back(State(name, stoi(weight)));
}
cout << "Количество голосов: ";
int nOfVotes = 0;
cin >> nOfVotes;
cin.ignore();
cout << "Данные о голосах в формате Штат Кандидат: ";
for (int i = 0; i < nOfVotes; ++i) {
string input, state, candidate;
getline(cin, input);
state = input.substr(0, input.find(' '));
candidate = input.substr(input.find(' ') + 1);
for (int j = 0; j < nOfStates; ++j) {
if (states[j].state == state) {
states[j].vote(candidate);
}
}
}
vector<pair<string, int>> winners;
for (int i = 0; i < states.size(); ++i) {
string result = states[i].getResultOfElections();
if (winners.size() == 0) {
winners.push_back({ result, states[i].weight });
continue;
}
for (int j = 0; j < winners.size(); ++j) {
if (winners[j].first == result) {
winners[j].second += states[i].weight;
break;
}
else if (j == winners.size() - 1) {
winners.push_back({ result, 0 });
}
}
}
cout << endl;
for (int i = 0; i < winners.size(); ++i) {
cout << winners[i].first << " " << winners[i].second << endl;
}
}
Согласно результатам международного исследования Microsoft, 94% руководителей считают, что технологии искусственного интеллекта важны для решения стратегических задач их организаций. При этом 27% о уже внедрили соответствующие технологии в ключевые бизнес-процессы, еще 46% ведут пилотные проекты.
Россия, благодаря традиционно сильной математической школе не отстает от мировых тенденций. И если судить по докладам на конференции «Технологии машинного обучения. Искусственный интеллект и нейросети: инструменты и опыт реальных проектов», организованной издательством «Открытые системы», применение средств ИИ в нашей стране уже стало если не обыденностью, то достаточно распространенным не только оптимизировать, но и радикально поменять бизнес-процессы.
Поскольку разнообразие методов и обучения искусственного интеллекта не меньше, чем у интеллекта естественного, то, прежде чем начинать проект в этой области, стоит ознакомиться с методами и машинного обучения, их возможностями, сферами применения и ограничениями. Это эффективнее распорядиться отпущенными на проект ресурсами и не пасть жертвой нынешнего ажиотажа вокруг машинного обучения и искусственного интеллекта.
машинного обучения
Обучение с учителем (Supervised learning)
Этот оптимален, если вы знаете, чему хотите научить машину. Вы можете познакомить компьютер с огромной обучающей выборкой данных и варьировать параметры до тех пор, пока не получите на выходе ожидаемые результаты. Затем можно уточнить, чему научилась машина, заставив ее спрогнозировать результат для контрольных данных, с которыми компьютер еще не сталкивался.
Чаще всего обучение с учителем применяется для задач классификации и прогнозирования. Обучение с учителем можно использовать при определении финансового риска частных лиц и организаций на основе имеющихся сведений о финансовой активности, можно неплохо прогнозировать покупательское поведение с учетом прежних закономерностей.
cin>>n;
int m;
int i = 0;
cin>> m;
while(m/3 != n){
m++;
i++;
}
return i;