Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
891
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
946
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
936
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1723
0
период по дням
25th October, 10:44
3954
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4379
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4394
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4001
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2597
0
Решение задачи Игра с переворачиванием с Codeforces
Без пояснения   Просмотров: 2328
Яхубу стало скучно и он придумал игру, в которую надо играть на бумаге.
Яхуб выписывает n целых чисел a1, a2, ..., an. Каждое из этих целых чисел может быть равно 0 или 1. Ему разрешено выполнить ровно одно действие: выбрать два индекса i и j (1 ≤ i ≤ j ≤ n) и перевернуть все значения ak, позиции которых находятся на отрезке [i, j] (то есть i ≤ k ≤ j). Перевернуть значение x, значит выполнить операцию x = 1 - x.
Цель игры — получить максимальное количество единиц после ровно одного хода. Напишите программу, которая решает маленькую игру Яхуба.
Яхуб выписывает n целых чисел a1, a2, ..., an. Каждое из этих целых чисел может быть равно 0 или 1. Ему разрешено выполнить ровно одно действие: выбрать два индекса i и j (1 ≤ i ≤ j ≤ n) и перевернуть все значения ak, позиции которых находятся на отрезке [i, j] (то есть i ≤ k ≤ j). Перевернуть значение x, значит выполнить операцию x = 1 - x.
Цель игры — получить максимальное количество единиц после ровно одного хода. Напишите программу, которая решает маленькую игру Яхуба.
Код
#include using namespace std; int sum(string s) { int k = 0; for(int i = 0;i < s.size(); ++i){ if(s[i] - 48) ++k; } return k; } int main() { int n, tt; string s; cin >> n; for(int i = 0; i < n; ++i){ cin >> tt; s+=tt+48; } int k = sum(s); if(k == s.size()){ cout << k - 1; return 0; } int ii, jj; for(int i = 0; i < s.size(); ++i){ if(s[i] == '0'){ ii = i; break; } } for(int i = s.size() - 1; i >= 0; --i){ if(s[i] == '0'){ jj = i; break; } } // cout << ii << " " << jj << endl; string s1 = s.substr(ii, jj - ii + 1); s1+="10"; vector v0; vector v1; vector arr; int pos = 0; for(int i = 0; i < s1.size(); ++i){ if(s1[i] == '0' && s1[i + 1] == '1') for(int j = i + 1; j < s1.size(); ++j) if(s1[j] == '0'){ arr.push_back(s1.substr(pos, j - pos)); pos = j; break; } } string ss = arr[arr.size() - 1]; while(ss[ss.size() - 1] == '1'){ ss.pop_back(); } arr[arr.size() - 1] = ss; //cout << endl; // for(auto i: arr) // cout << i << endl; // cout << endl; for(auto i: arr){ int kk = sum(i); v1.push_back(kk); v0.push_back(i.size() - kk); } // cout << endl; // for(auto i: v1) // cout << i << " "; // cout << endl; // for(auto i: v0) // cout << i << " "; int res = 0; // cout << endl; for(int i = 0; i < arr.size(); ++i){ for(int j = i; j < arr.size(); ++j){ string temp; int q1 = 0, q0 = 0; for(int h = i; h < j; ++h){ temp+=arr[h]; q1 += v1[h]; q0 += v0[h]; } q0+=v0[j]; res = max(k + q0 - q1, res); } } cout << res; return 0; } /* код на питон n=int(input()) a=list(map(int,input().split())) print(max(sum(a)-2*sum(a[i:j])+j-i for i in range(n)for j in range(i+1,n+1))) */
 
 
 
 
 
Автор: Администратор
Автор: Администратор
Комментарии
info@mycod.net  
Карта сайта  
Правообладателям
Заявка на расчет
×
или напишите нам прямо сейчас: