codeforces 600C(貪心)
題意:給你一個字串,你可以改變它的任意字元,且可以任意調換字元順序,輸出字元改變次數最少的字典序序最小的字串。(改變順序次數不計)。
思路:記錄所有字元出現的次數,從小到大,當出現次數為奇數時,找到最右邊一個出現次數為奇數的字元,左邊字元數+1,右邊字元數-1。處理到最後一定會是最多隻存在一個出現次數為奇數的字元。然後從a到z輸出一下就是,注意aabbbcc輸出abcbcba。
/* ┏┓ ┏┓ ┏┛┻━━━┻┗┓ ┃ ┃ ┃ ━ ┃ ┃ ┳┛ ┗┳ ┃ ┃ ┃ ┃ ┻ ┃ ┗━┓ ┏━┛ ┃ 一 ┃ ┃ 發 ┃ ┃ A ┃ ┃ C ┃ ┏━━━━┛ ┃ ┏┫ ┃ ┗┓ *** ┃ ┗┓┏┳━━┓┏┏┛ ┣┣┃ ┣┣┃ ┗┻┛ ┗┻┛ */ #include <iostream> #include <stdio.h> #include <string.h> #include <string> #include <algorithm> #include <math.h> #include <vector> #include <map> #define LL long long #define maxn 200005 using namespace std; map<char,int>m; int main() { string s; cin>>s; for(int i=0;i<s.length();i++) m[s[i]]++; char tmp='0'; for(int i=0;i<26;i++) { if(m[i+'a']%2==1) { int j=25; while(m[j+'a']%2==0&&i<j)j--; // if(i!=j&&m[j+'a']%2==1) // { // m[i+'a']++; // m[j+'a']--; // } if(i==j) { m[i+'a']--; tmp='a'+i; } else { m[i+'a']++; m[j+'a']--; } } } string ans; for(int i=0;i<26;i++) { if(m[i+'a']%2==0) { int cnt=m[i+'a']/2; for(int j=0;j<cnt;j++) ans.push_back(i+'a'); } } if(tmp!='0') ans.push_back(tmp); for(int i=25;i>=0;i--) { if(m[i+'a']%2==0) { int cnt=m[i+'a']/2; for(int j=0;j<cnt;j++) ans.push_back(i+'a'); } } cout<<ans<<endl; }
相關推薦
codeforces 600C(貪心)
題意:給你一個字串,你可以改變它的任意字元,且可以任意調換字元順序,輸出字元改變次數最少的字典序序最小的字串。(改變順序次數不計)。 思路:記錄所有字元出現的次數,從小到大,當出現次數為奇數時,找到最右邊一個出現次數為奇數的字元,左邊字元數+1,右邊字元數-1。處理到最
CodeForces 508C (貪心)
Description Anya loves to watch horror movies. In the best traditions of horror, she will be visited by m ghosts tonight. Anya has
Codeforces 1119E(貪心)
() lan 貪心 target 題目 n) return else href 題目傳送 貪心方法 按邊從小到大掃,先湊3個,沒湊足的記錄一下數量,後面大的優先跟這些湊,倆帶走一個,多余的再湊3個,再……就這樣走到最後即可。 const int maxn = 3e5 + 5
Codeforces Round #513 D - Social Circles(貪心)
std typedef ORC using codeforce names nbsp 代碼 code 題目大意:有n(n≤105)個人排成一圈,第i個人要求自己左邊空出li個座位,右邊空出ri(li,ri≤109)個座位。問最少需要安排多少個座位。思路:一開始先假設每
【CodeForces - 140C】New Year Snowmen (貪心)
題幹: As meticulous Gerald sets the table and caring Alexander sends the postcards, Sergey makes snowmen. Each showman should consist of three snowb
[Codeforces 1070F]Debate(貪心)
Address 洛谷 RemoteJudge Codeforces 1070F Meaning Alice 和 Bob 參加選舉 有 n
Codeforces 1041C(貪心+set)
傳送門 題面: C. Coffee Break time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard o
CodeForces-1040B Shashlik Cooking(貪心)
題目大意: n個節點,選擇一個節點的時候翻轉這個節點與兩側k個節點(夠的話),求最少幾次全部翻到反面。 ps:同一個節點翻兩次會翻回正面。 思路: 貪心,儘量多的選能翻翻2k+1個節點的節點,即在中間儘量多的劃分長度為2k+1的區間。為使中間節點數恰好為(2k+1)的
codeforces -63B(貪心,求做後達標需要的天數)
題面: In a strategic computer game "Settlers II" one has to build defense structures to expand and protect the territory. Let's take one of
Educational Codeforces Round 49 (Rated for Div. 2)-D-Mouse Hunt(貪心)
D. Mouse Hunt time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Medic
Educational Codeforces Round 49 (Rated for Div. 2)-C-Minimum Value Rectangle(貪心)
C. Minimum Value Rectangle time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard
CodeForces 437C (貪心,拓撲排序)
題意: 給出一個n個點m條邊的圖,每個點有一個權值。每次分割出一個點,代價是該點相鄰點的權值和,問分割所有的點最小的代價是多少。 思路: 建成有向圖,方向從權值大的點指向權值小的點,邊權為兩個點權中小的那個。 然後從入度最小的點開始分割,邊分割邊修改入度,一直取入度最小的
CodeForces 455C (貪心,並查集)
題意: 給出一個n個點m條邊的森林,q次詢問,第一種詢問要求輸出一個點所在樹的直徑,第二種詢問要求合併兩個點所在的樹。 思路: 先將初始的森林中各個樹的直徑求出來,然後用並查集維護。兩樹合併時,設直徑分別為len1,len2,新樹直徑為max(len1,len2,(len
Codeforces 777E(貪心+單調棧)
Codeforces 777E Hanoi Factory 題目: Hanoi Factory time limit per test1 second memory limit per test256 megabytes inputstandard input
Mike and distribution CodeForces - 798D (貪心+思維)
題目連結 TAG: 這是我近期做過最棒的一道貪心思維題,不容易想到,想到就出乎意料。 題意:給定兩個含有N個正整數的陣列a和b,讓你輸出一個數字k ,要求k不大於n/2+1,並且輸出k個整數,範圍為1~n的不重複數字, 要求這k個數字為下標的對應a和b中的數的和乘以2的值 分別大於a和b 的
Find Amir CodeForces - 805C (貪心+思維)
A few years ago Sajjad left his school and register to another one due to security reasons. Now he wishes to find Amir, one of his schoolma
Balanced Ternary String CodeForces - 1102D (貪心+思維)
You are given a string ss consisting of exactly nn characters, and each character is either '0', '1' or '2'. Such strings are called&nb
Codeforces Round #277 (Div. 2) A (水題)B(水題) C(貪心)
A. Calculating Function For a positive integer n let's define a function f: f(n) = - 1 + 2 - 3 + .. + ( - 1)nn Your task is to calcul
Codeforces Round #501 (Div. 3) C(貪心)
C. Songs Compression time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output
!CodeForces 287B--(貪心、二分)
題意:有2到k個出水管的k-1個水管,有n個房子,求用最少的水管把水送到每一家 分析:貪心思想從最大的開始用,只要求出等差數列的和大於等於n的最小的即為所求。暴力列舉會超時,所以用二分法找每次計算的等差數列和的最左值(注意:不用管實際結果是不是真的用等差數列,如:n=9,k