UVa 814 - The Letter Carrier's Rounds
题意
模拟mta发送邮件
模拟的我头皮发麻
记录
有个挺骚的操作记下来了, 有点意思
string text;
while(getline(cin, s) && s[0] != '*')text += " " + s + "\n";
AC代码
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <set>
#include <map>using namespace std;set<string> email, wait;
vector<string> vec;
map<string,vector<string> > countnum;void findmta( string &name, string &mta, string s ){int mrk = s.find('@');name = s.substr(0,mrk);mta = s.substr(mrk+1);//cout << name << endl << mta << endl;
}int main()
{string s, s1, s2, ss, name1, mta1, name2, mta2;vector<string>::iterator it;int n;size_t i, j;while( cin >> s ){if( s == "*" ) break;if( s == "MTA" ){cin >> s1;cin >> n;while(n--){s2 = "";cin >> s2;email.insert(s2+"@"+s1);}}}while( cin >> s && s != "*" ){findmta(name1,mta1,s);while( cin >> ss && ss != "*" ){findmta(name2, mta2, ss);if(wait.count(ss)) continue;wait.insert(ss);if( !countnum.count(mta2) ){vec.push_back(mta2);countnum[mta2] = vector<string>();}countnum[mta2].push_back(ss);//countnum[mta2]++;}getchar();string text;while(getline(cin, s) && s[0] != '*')text += " " + s + "\n";for( i = 0; i < vec.size(); i++ ){vector<string> adds = countnum[vec[i]];cout << "Connection between " << mta1 << " and " << vec[i] << endl;cout << " HELO " << mta1 << endl << " 250" << endl;cout << " MAIL FROM:<" << name1 << "@" << mta1 << ">" << endl << " 250" << endl;bool flag = false;for( j = 0; j < adds.size(); j++){cout << " RCPT TO:<" << adds[j] << ">" << endl;if( email.count(adds[j]) ){flag = true;cout << " 250" << endl;}else cout << " 550" << endl;}if( flag )cout << " DATA" << endl << " 354" << endl << text << " ." << endl << " 250" << endl;cout << " QUIT" << endl << " 221" << endl;}if( !wait.empty() ) wait.clear();if( !countnum.empty() ) countnum.clear();if( !vec.empty() ) vec.clear();}return 0;
}
转载于:https://www.cnblogs.com/JinxiSui/p/9740620.html
UVa 814 - The Letter Carrier's Rounds相关推荐
- 814:The Letter Carrier's Rounds
The Letter Carrier's Rounds 注意可能有重复的收件人. version 1(20ms): #include<cstdio> #include<iostrea ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- 算法竞赛入门经典(第2版)—第五章(C++与STL入门)
文章目录 零碎知识点整理 题目 10474 - Where is the Marble? 101 - The Blocks Problem 10815 - Andy's First Dictionar ...
- 《算法竞赛入门经典(第2版)》——学习记录
前言: 这里主要记录本人在学习紫书过程中充分理解过的题目的AC代码,便于以后回顾时查找代码和思路,毕竟看别人的真的有点难懂.此外,本书甚至是本书之外的相关知识学习也可能在此留下记录. 作为一只 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- RabbitMQ与PHP应用
RabbitMQ与PHP应用 简介 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连 ...
- java求公式例题_JAVA经典算法40题
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
- java java算法题目_java常见算法题目
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
最新文章
- jQuery 通用表单方法
- Hive将查询结果保存到另一张表中
- 来腾讯云开发者实验室 学习.NET Core 2.0
- Linux PCI网卡驱动分析
- 第六十一期: 从7600万个5G连接中,我们发现了7种最有前景的5G物联网应用
- android 存储方式以及路径简介
- 孕妇能长期在计算机屏幕前工作吗,怀孕了在电脑前工作怎么办
- 排序 -> 选择排序
- 学生社团管理系统PHP源码,学生社团管理系统 附带源码
- 2008评估过期 server sql_SQLServer2008R2数据库评估版已经过期解决办法.doc
- 网页导出的excel无法计算机,网页上不能导出excel表格数据-如何将网页表格导出到excel...
- java查看jar包依赖_java项目开发中如何查找到项目依赖的jar包?
- 解读微信团队的七个价值观
- c语言算术转换例子,关于C语言算术表达式中“寻常算术转换”的问题
- N个苹果分给M个人,有多少种分法
- ubuntu安装qv2ray问题?
- 解决农产品滞销难题,农村淘宝有何绝招?
- c语言:已知斐波那契数列定义:f(0) = 0; f(1) = 1;f(n) = f(n-1) + f(n-2);请计算并输出数列的前n(n<=30)项。
- ceph---luminous版的安装
- 使用Mosquitto软件测试mqtt功能