国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CF 782D. Innokenty and a Football League 貪心,思維,模擬

2019-11-06 06:38:19
字體:
來源:轉載
供稿:網友

題目鏈接:見這里 題意:每個隊名有兩種選擇,然后第一個選擇隊名相同的那些隊只能選第二種,讓你安排隊名,使得最后每個隊名都不一樣。 分析: 首先全都選成第一種隊名,然后第一種隊名相同的隊,它們只能全都變成選第二種隊名的了,這個時候如果第一種隊名相同的那些隊里面,變成第二種隊名后有重復的,直接輸出無解,這個時候先不管第一種隊名,之后再處理第一種隊名,看看第一種隊名有沒有和第二種隊名重的,如果有重的話就讓他變到第二種隊名,以此法貪心就好。代碼能力太差,debug好久好久。

#include <bits/stdc++.h>using namespace std;const int maxn = 1100;int n;string s1, s2;string name1[maxn], name2[maxn]; //A, Bint pos[maxn]; //記錄哪些需要變成第2種map <string, vector <int> > mp1, mp2;map <string, int> m1, m2;map <string, bool> vis; //標記哪些第1種名字被處理int main(){ //input cin >> n; for(int i = 1; i <= n; i++){ cin >> s1 >> s2; name1[i] = "", name2[i] = ""; name1[i] += s1.substr(0, 3); name2[i] += s1.substr(0, 2); name2[i] += s2[0]; mp1[name1[i]].push_back(i); m1[name1[i]]++; } // for(int i = 1; i <= n; i++){ if(!vis[name1[i]]){ int len = mp1[name1[i]].size(); if(len > 1){ for(int j = 0; j <= len - 1; j++){ m1[name1[i]]--; int id = mp1[name1[i]][j]; pos[id] = 1; m2[name2[id]]++; if(m2[name2[id]] > 1){ puts("NO"); return 0; } } } vis[name1[i]] = 1; } } // while(1){ bool flag = 1; for(int i = 1; i <= n; i++){ if(pos[i] == 0){ if(m2[name1[i]]){ flag = 0; if(m2[name2[i]]){ puts("NO"); return 0; } else{ pos[i] = 1; m2[name2[i]] = 1; } } } } if(flag) break; } puts("YES"); for(int i = 1; i <= n; i++){ if(pos[i] == 0) cout << name1[i] << endl; else cout << name2[i] << endl; } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武邑县| 长岛县| 藁城市| 砀山县| 黄石市| 武陟县| 沁水县| 广宗县| 阳江市| 崇阳县| 长丰县| 招远市| 叙永县| 曲周县| 萝北县| 潞城市| 镇平县| 施秉县| 灵山县| 义马市| 景泰县| 阳曲县| 文昌市| 娄烦县| 合水县| 城固县| 乐业县| 花莲市| 涪陵区| 龙海市| 陵川县| 常州市| 华宁县| 疏附县| 法库县| 民和| 洱源县| 山西省| 宾川县| 灌南县| 宝丰县|