Airport Announcements URAL - 1889
2017-05-23 17:47
253 查看
题目描述:这哥们在机场听公告,假设机场说的公告每种语言含有的短语数是相同的,他有的词能听出什么语言,有的词听不出就是“unknown”,问一共有多少种语言,多种满足情况按照从大到下的顺序输出。
解题分析:简单模拟就好,没什么难度。
代码如下:
#include <cstdio>
#include <string>
#include <iostream>
//这是当初彬佬所写,为了省时间给每个字符串编了个号,但实际上这题数据很少,不耗时间,下面是不编号的代码,和上面的时间相同。
解题分析:简单模拟就好,没什么难度。
代码如下:
#include <cstdio>
#include <string>
#include <iostream>
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <set> #include <map> using namespace std; vector <string> phrase; int n; set <int> ans; bool solve(int m) { set <string> lang; for(int i=0; i<n; i+=m) { string cur; for(int j=0; j<m; j++) { if(phrase[i+j]!="unknown") { if(cur.empty()) { cur=phrase[i+j]; } else { if(cur!=phrase[i+j]) return false; } } } if(!cur.empty()) { if(!lang.count(cur)) { lang.insert(cur); } else { return false; } } } return true; } int main() { string str; scanf("%d",&n); for(int i=0; i<n; i++) { cin >> str; phrase.push_back(str); } for(int i=1; i<=n; i++) { if(n%i==0) if(solve(i)) ans.insert(n/i); } if(ans.empty()) cout << "Igor is wrong." << endl; else { set <int >::iterator it; for(it=ans.begin();it!=ans.end();it++) { if(it==ans.begin()) cout << *it; else cout << " " << *it ; } cout << endl; } return 0; }
//这是当初彬佬所写,为了省时间给每个字符串编了个号,但实际上这题数据很少,不耗时间,下面是不编号的代码,和上面的时间相同。
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <set> #include <map> using namespace std; vector <string> phrase; int n; set <int> ans; bool solve(int m) { set <string> lang; for(int i=0; i<n; i+=m) { string cur; for(int j=0; j<m; j++) { if(phrase[i+j]!="unknown") { if(cur.empty()) { cur=phrase[i+j]; } else { if(cur!=phrase[i+j]) return false; } } } if(!cur.empty()) { if(!lang.count(cur)) { 4000 lang.insert(cur); } else { return false; } } } return true; } int main() { string str; scanf("%d",&n); for(int i=0; i<n; i++) { cin >> str; phrase.push_back(str); } for(int i=1; i<=n; i++) { if(n%i==0) if(solve(i)) ans.insert(n/i); } if(ans.empty()) cout << "Igor is wrong." << endl; else { set <int >::iterator it; for(it=ans.begin();it!=ans.end();it++) { if(it==ans.begin()) cout << *it; else cout << " " << *it ; } cout << endl; } return 0; }
相关文章推荐
- URAL 1600 Airport
- URAL - 1889 E - Airport Announcements (好好读题!!!)
- ural 1889 Airport Announcements (暴力模拟)
- URAL 1889. Airport Announcements 模拟题
- URAL - 2072 Kirill the Gardener 3 dp
- URAL-1584-Pharaohs’ Secrets【二分图最佳匹配】【好题】
- Ural Amount of Degrees(数位dp)
- URAL 2018 The Debut Album (DP)
- ural 2017 Best of a bad lot
- URAL 2021. Scarily interesting!(*贪心? set整理)
- 湖北民族学院oj 1889之 鹦鹉学舌
- URAL 2031. Overturned Numbers (枚举)
- URAL - 1932
- ural 1044. Lucky Tickets. Easy! dfs
- ural 1224. Spiral dfs
- URAL 1005
- HDU 5046 Airport (DLX可重复覆盖+二分)
- URAL - 1004 Sightseeing Trip(最小环)
- URAL 2025. Line Fighting 简单数学推理
- ural1223 鹰蛋(dp优化)