Coder-Strike 2014 - Round 1 E. E-mail Addresses
此题题意就是匹配邮箱,提交时一直在test 14上WA,看了测试用例之后才发现计数用的int溢出,要用long long还是做题经验不够,导致此题未能通过,以后一定要考虑数据量大小
题意是找出邮件地址的数量,永许出现相同的地址
此题最重要的部分是要注意邮件地址的构成规则
1、邮件开始部分必须是字母串,数字和‘_’,但必须以字母开头
2、必须有字符‘@’
3、接着是非空的字母或数字
4、接着是必须有‘.’
5、地址必须以非空的字母串结束,不能含有数字,'_',和'.'
本题的想法是先按照@对字符串进行分割,存入到vector<string>
然后第i个字符串作为邮件的开头,第i+1个字符串作为邮件结尾 ( 邮件=开头@结尾)
然后统计构成邮件开头的数量(注意邮件开头是以字母开头)
1、遇到‘.’,计数规0
2、遇到字母计数加1
3、遇到数字和‘_’计数不变
然后统计构成邮件结尾的数量
1、在未遇到‘.’之前遇到非数字和字母则为不合法邮件
2、遇到'.'开始计数
3、在开始计数后,遇到‘.’,分为两种情况
1、开始计数后马上就遇到'.',如a@b..cc,则为不合法邮件停止计数
2、之后才遇到,如a@b.adc.com 则停止计数
4、开始计数后遇到非字母字符停止计数
然后将邮件开头的数量乘以邮件结尾的数量即为合法邮件的数量
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <cctype>
#include <sstream>
using namespace std; std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while (std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
} std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
split(s, delim, elems);
return elems;
} long long countHeadAddress(string& str){
long long cnt = ;
for(int i = ; i < str.length(); ++ i){
if(str[i] == '.') cnt = ;
else if(islower(str[i])){
cnt++;
}
}
return cnt;
} long long countTailAddress(string& str){
long long cnt = ;
bool flag = false;
for(int i = ; i < str.length(); ++ i){
if(!flag){
if(i == && str[i] == '.') break;
if(str[i]=='.') flag=true;
else if(islower(str[i]) || (str[i]>=''&&str[i] <='')){ }
else break;
}else{
if(islower(str[i])){
cnt++;
}else break;
}
}
return cnt;
} int main(){
string saveStr;
cin >> saveStr;
vector<string> letter= split(saveStr,'@');
long long cnt = ;
for(int i = ; i < letter.size()-; ++ i){
cnt+=countHeadAddress(letter[i])*countTailAddress(letter[i+]);
}
cout<<cnt<<endl;
}
Coder-Strike 2014 - Round 1 E. E-mail Addresses的更多相关文章
- 模拟 Coder-Strike 2014 - Round 1 A. Poster
题目地址:http://codeforces.com/problemset/problem/412/A /* 模拟:题目没看懂,但操作很简单,从最近的一头(如果不在一端要先移动到一端)往另一头移动,顺 ...
- Coder-Strike 2014 - Round 2
t题目链接:Coder-Strike 2014 - Round 2 A题:简单水题,注意能加入反复的数字.因此仅仅要推断是否能把Min和Max加入好.就能够了 B题:开一个sum计算每一个聊天总和,和 ...
- TCO 2014 Round 1C 概率DP
TCO round 1C的 250 和500 的题目都太脑残了,不说了. TCO round 1C 950 一个棋子,每次等概率的向左向右移动,然后走n步之后,期望cover的区域大小?求cover, ...
- Coder-Strike 2014 - Round 1(A~E)
题目链接 A. Poster time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputou ...
- Coder-Strike 2014 - Round 1 D. Giving Awards
题目的意思是 老板给n个人发工资,x欠y的工资,the joy of person x from his brand new money reward will be much less, 老板想避免 ...
- Coder-Strike 2014 - Round 1 C. Pattern
题目的意思是给出n个长度相同的字符串然后找出与他们匹配的字符串 将字符串存入类似二维数组的里面,每一行代表一个字符串,遍历每列,判断每列是否有公共的匹配字符,如果有输出任意一个 如果没有输出'?' # ...
- Coder-Strike 2014 - Round 1 B. Network Configuration
题目的意思就是给每台电脑的最大传输速度,可以限制每台电脑的最大速度,然后选择k台电脑,使这k台电脑有相同的速度,且这个速度最大 典型的贪心算法,电脑的速度排个序,选择第k大速度即可 #include ...
- Coder-Strike 2014 - Round 1 A. Poster
主要就是先将梯子移动到最左边或者最右边 k>n/2时移动到最右边 k<=n/2时移动到最左边 然后遍历一遍 #include <iostream> #include <v ...
- Google Code Jam 2014 Round 1B Problem B
二进制数位DP,涉及到数字的按位与操作. 查看官方解题报告 #include <cstdio> #include <cstdlib> #include <cstring& ...
随机推荐
- MVC学习笔记---MVC框架执行顺序
一.把路由添加到路由表, 二.注册ControllerBuilder(老板)和默认工厂(DefaultControllerFactory) 2.1默认工厂获取可以创建的Controller. 三.由于 ...
- JS中级 - 02:表单、表格
getElementsByTagName() getElementsByTagName() 方法可返回带有指定标签名的对象的集合. getElementsByClassName() 返回文档中所有指定 ...
- HTML5 – 4.canvas
1.绘制矩形 2.绘制圆形 3.绘制文字 4.保存文件 什么是 Canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. < ...
- Java并发编程中的阻塞和中断
>>线程的状态转换 线程的状态转换是线程控制的基础,下面这张图片非常直观的展示了线程的状态转换: 线程间的状态转换: 1. 新建(new):新创建了一个线程对象.2. 可运行(runnab ...
- Pyqt QDockWidget 停靠窗体
网上的一个关于QDockWidget 停靠窗体的教程 代码: # -*- coding: utf-8 -*- from PyQt4.QtGui import * from PyQt4.QtCore i ...
- hdu 1251:统计难题(字典树,经典题)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- C#在excel中添加超链接
1.新建一个项目 2.给项目添加引用:Microsoft Excel 12.0 Object Library (2007版本) using Excel = Microsoft.Office.Inter ...
- AOJ673 聪明的输入法(字典树)
#include<cstdio> #include <cstdlib> #include <cstring> #include <iostream> # ...
- IBM AppScan 安全扫描:加密会话(SSL)Cookie 中缺少 Secure 属性 处理办法 分类: 数据安全 2014-06-28 11:35 2805人阅读 评论(0) 收藏
问题描述: 原因分析: 服务器开启了Https时,cookie的Secure属性应设为true: 解决办法: 1.服务器配置Https SSL方式,参考:https://support.micro ...
- mysql无法远程连接的解决方法
在阿里云服务器上安装好MySQL后,首先想到的就是安装一款工具来管理数据库,一开始选择了phpMyAdmin,这个工具安装很简单,只要解压到能访问的目录下就行了.在浏览器中访问phpMyAdm ...