附数据两组:
ABCC
abc
ae
AAA
abc
AAAA
abc
A
a
B
a
C
a
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<math.h>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b))
const int maxn = 105;
const int maxm = 1005;
const int inf = 0x7fffffff;
const double pi=acos(-1.0);
const double eps = 1e-8;
struct Node{
string name;
int cnt;
}project[ maxn ];
map<string,int>mp;
map<string,int>special;
void init(){
mp.clear();
special.clear();
}
int cmp( Node a,Node b ){
if( a.cnt!=b.cnt )
return a.cnt>b.cnt;
else
return a.name<b.name;
}
int main(){
string temp;
while( getline( cin,temp ) ){
//cout<<"temp = "<<temp<<endl;
if( '0'==temp[0] )
break;
if( '1'==temp[0] )
continue;
init();
int Num = 1;
while( 1 ){
project[ Num ].name = temp;
project[ Num ].cnt = 0;
while( 1 ){
getline( cin,temp );
//cout<<"temp = "<<temp<<endl;
if( temp.size()==1&&temp[0]=='1' ) break;
if( ( temp[0]>='a'&&temp[0]<='z' )||( temp[0]>='0'&&temp[0]<='9' ) ){
if( mp[ temp ]==0 ){
mp[ temp ] = Num;
project[ Num ].cnt ++ ;
}
else {
if( mp[ temp ]==Num ){}
else if( special[ temp ]==0 ){
special[ temp ] = 1;
if( project[ mp[temp] ].cnt>0 )
project[ mp[ temp ] ].cnt --;
}
}
}
else
break;
}
Num ++ ;
if( '1'==temp[0] ) break;
}
//cout<<"ok"<<endl;
sort( project+1,project+Num,cmp );
for( int i=1;i<Num;i++ ){
cout<<project[i].name<<" "<<project[i].cnt<<endl;
}
}
return 0;
}
分享到:
相关推荐
《北京大学POJ3096:令人惊奇的字符串——解题报告与代码解析》 北京大学的在线编程平台POJ上有一道题目名为“Surprising Strings”(POJ 3096),这是一道考察算法思维和编程能力的题目。在本篇解题报告中,我们将...
【标题】"poj_1002_487.rar_poj 1002"指的是北京大学在线编程平台上的第1002道题目,这道题目涉及到计算机科学中的算法设计与实现,特别是字符串处理和哈希映射。在这个问题中,我们需要编写一个程序,该程序能够...
这些题目涵盖了各种难度和类型的算法问题,包括但不限于排序、搜索、图论、动态规划、字符串处理等。通过学习这些源码,开发者可以了解如何用C++高效地解决实际问题,同时也能深入理解C++语言的特性和用法。 以下是...
题目poj3187和poj3669涉及的具体内容无法直接得知,但根据ACM竞赛的特点,它们可能涉及经典的算法问题,如动态规划、贪心算法、图论、字符串处理、排序算法等。 描述中提到“已经测试过可以通过oj”,这意味着提供...
- **包含库**:这段代码包含了多种C++标准库,如输入输出流、字符串处理、向量容器等。 - **宏定义**:定义了一系列宏用于简化输入输出操作以及循环控制等。 - **常量定义**:定义了一个常量`Inf`用于表示一个较大的...
本题目属于电话号码处理问题,主要考查字符串处理、哈希表应用以及排序等相关算法知识。题目描述了一个有趣的场景:为了方便记忆,企业往往希望自己的电话号码能够拼写出有意义的单词或短语。比如,“TUT-GLOP”对应...
3. **数组与字符串**:数组是存储相同类型数据的集合,字符串则是在C++中被特殊处理的字符数组。在解题时,数组常用于存储和处理数据,字符串则在处理文本问题时发挥重要作用。 4. **指针与引用**:指针是C++中的...
这道题同样可以使用哈希函数或者Trie字典树解决,通过在原始字符串上直接处理,减少额外的空间消耗。 4. HDU 2648【基础】 商店价格排名问题可以通过哈希表来快速查找特定商店的价格变化,同时通过排序和二分查找来...
- 创建一个新字符串`afterchange`来存储标准化后的电话号码。 - 遍历电话号码中的每个字符,进行标准化处理: - 跳过短横线。 - 将字母替换为对应的数字。 - 保持数字不变。 - 在第三个和第四个位置插入短横线...
字符串是字符数组的一种特例,C++中常用`string`类型来处理字符串。 5. **算法基础**:信息奥赛的核心是解决问题,这通常涉及到排序(如冒泡排序、快速排序)、搜索(如线性搜索、二分搜索)、图论、动态规划等经典...
这个题目可能涉及排序、搜索、字符串处理、数学计算等常见算法问题。解题者通常会根据题目需求,选择合适的数据结构和算法,编写代码并进行调试,直至代码能够在所有测试用例上正确运行。 通过分析和学习这些成功的...
- **字符串算法**:KMP、Trie、后缀树、后缀数组等。 在学习这些算法时,建议通过实际编程练习来加深理解,可以尝试解决POJ等在线编程平台上的题目,如poj3096、poj3007等。同时,理解并熟练应用C++标准模板库,这...
4. **字符串算法**:KMP、Trie树等,对于文本检索、模式匹配等任务极其有效。 5. **数论**:欧几里得算法、扩展欧几里得算法、中国剩余定理、费马小定理等,是解决数论问题的基础。 #### 三、数据结构 1. **栈与...