hihoCoder太阁最新面经算法竞赛15

Link: http://hihocoder.com/contest/hihointerview24

题目1 : Boarding Passes

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

 

描述

Long long ago you took a crazy trip around the world. You can not remember which cities did you start and finish the trip.  Luckily you have all the boarding passes. Can you find out the starting city and ending city?

输入

The first line contains a number N denoting the number of boarding passes.  (1 <= N <= 100)

The following N lines each contain a pair of cities (the city name consists of no more than 10 capital letters)

It is guaranteed that there is always a valid solution.

输出

The starting and ending cities separated by a space.

样例输入

4

SFO HKG

PVG BOS

HKG ABC

ABC PVG

样例输出

SFO BOS

简单的题目, 根据一组车票的起终点,来判断整个行程的起始点。

“类似哈密顿图”, 不过一个点可以通过多次。

#include <iostream>
#include <cstdio>
#include <map>
using namespace std; int main(){
freopen("in.txt", "r", stdin); int n; string st1, st2;
map<string, int> startmp, endmp;
cin>>n;
for(int i=0; i<n; ++i){
cin >> st1 >> st2;
if(startmp.find(st1) == startmp.end() ){
startmp[st1] = 1;
}else{
++startmp[st1];
}
if( endmp.find(st2) == endmp.end() ){
endmp[st2] = 1;
}else{
++endmp[st2];
}
}
for(auto i= startmp.begin(); i != startmp.end(); ++i){
if( endmp.find(i->first) == endmp.end() || endmp[i->first] +1 == startmp[i->first] ){
cout << i->first << " ";
break;
}
}
for(auto i= endmp.begin(); i != endmp.end(); ++i){
if(startmp.find(i->first) == startmp.end() || startmp[i->first] + 1 == endmp[i->first] ){
cout << i->first << " ";
}
}
cout << endl;
return 0;
}

  

题目2 : Sorting Photo Files

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

 

描述

You have a lot of photos whose file names are like:

beijing1

beijing10

beijing8

shanghai233

As you can see, all names have exactly two parts: the string part and the number part. If you sort the files in lexicographical order "beijing10" will go before "beijing8". You do not like that. You want to sort the files first in lexicographical order of the string part then in ascending order of the number part. Can you write a program to work it out?

输入

The first line contains an integer N denoting the number of files. (1 <= N <= 100)

The following N lines each contain a file name as described above.

It is guaranteed that the number part has no leading zeroes and is no more than 1000000.

输出

The sorted files one per line.

样例输入

4

beijing1

beijing10

beijing8

b233

样例输出

b233

beijing1

beijing8

beijing10

简单的题目, 划分string和num, 对其条件sort。

#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
const int maxn = 100+5; struct Node{
string st;
int num;
}nd[maxn]; bool MyCmp(Node a, Node b){
if(a.st == b.st){
return a.num < b.num;
}
return a.st < b.st;
} int main(){
int n, tmp, j;
string s, s2;
cin >> n;
for(int i=0; i<n; ++i){
cin >> s;
for(j=0; j<s.length(); ++j){
if(s[j]>='0' && s[j]<='9'){
break;
}
}
nd[i].st = s.substr(0, j);
s2 = s.substr(j); tmp = 0;
for(int k=0; k<s2.length(); ++k){
tmp = 10*tmp + s2[k]-'0';
}
nd[i].num = tmp;
}
sort(nd, nd+n, MyCmp);
for(int i=0; i<n; ++i){
cout << nd[i].st << nd[i].num << endl;
}
return 0;
}

  

第三题:

题目3 : Circle Detect

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

 

描述

You are given a directed graph G which has N nodes and M directed edges. Your task is to detect whether it contains any circle.

输入

The first line contains an integer T denoting the number of test cases. (1 <= T <= 5)

For each test case the first line contains two integers N and M. (1 <= N, M <= 100000)

Then follows M lines. Each contains two integers u and v denoting there is an edge from u to v. (1 <= u, v <= N)

输出

For each test case output "YES" or "NO" denoting whether there is a circle in the graph.

样例输入

2

5 5

1 2

2 3

4 5

5 4

4 2

3 2

1 2

2 3

样例输出

YES

NO

简单的题目, 重点在于如何使用dfs检测环。

使用dfsCheck 来检测是否有环!!!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = 100000 + 5;
int n, m, flag, vis[maxn];
vector<int> mp[maxn]; bool dfsCheck(int cur){
if(vis[cur]){
return true;
}
vis[cur] = 1;
for(int i=0; i<mp[cur].size(); ++i){
if(dfsCheck(mp[cur][i])){
return true;
}
}
vis[cur] = 0;
return false;
}
int main(){
freopen("in.txt", "r", stdin); int test, x, y;
scanf("%d", &test);
while(test--){
scanf("%d %d", &n, &m);
for(int i=1; i<=n; ++i){
mp[i].clear();
vis[i] = 0;
}
for(int i=0; i<m; ++i){
scanf("%d %d", &x, &y);
mp[x].push_back(y);
}
flag = 0;
for(int i=1; i<=n; ++i){
if(dfsCheck(i)){
flag = 1;
break;
}
}
if(flag){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}

  

hihoCoder太阁最新面经算法竞赛15的更多相关文章

  1. Hihocoder 太阁最新面经算法竞赛18

    Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...

  2. hihocoder Round #c1(hihoCoder太阁最新面经算法竞赛1 )

    Test链接:https://cn.vjudge.net/contest/231849 选自hihoCoder太阁最新面经算法竞赛1 更多Test:传送门 A:区间求差 给一组区间集合A和区间集合B, ...

  3. hihoCoder太阁最新面经算法竞赛19

    比赛链接:http://hihocoder.com/contest/hihointerview28/problems A. 固定一个方向,两两相邻的点顺时针或逆时针构造三个向量,判断这个点在这个向量的 ...

  4. hihoCoder太阁最新面经算法竞赛18

    比赛链接:http://hihocoder.com/contest/hihointerview27/problems A.Big Plus 模拟水 #include <bits/stdc++.h ...

  5. hihoCoder太阁最新面经算法竞赛17

    比赛链接:http://hihocoder.com/contest/hihointerview26 A.排序后枚举两个点,确定一个矩形后二分剩下两个点. #include <bits/stdc+ ...

  6. [HIHO]hihoCoder太阁最新面经算法竞赛7

    题目链接:http://hihocoder.com/contest/hihointerview12 期末完事了,终于有时间成套刷题了.这套题比较简单,难度上感觉和上一套差不多.除了最后一个题是看了讨论 ...

  7. zz 圣诞丨太阁所有的免费算法视频资料整理

    首发于 太阁实验室 关注专栏   写文章     圣诞丨太阁所有的免费算法视频资料整理 Ray Cao· 12 小时前 感谢大家一年以来对太阁实验室的支持,我们特地整理了在过去一年中我们所有的原创算法 ...

  8. [刷题]算法竞赛入门经典 3-12/UVa11809

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa11809:Floating-Point Numbers 代码: //UVa11 ...

  9. [刷题]算法竞赛入门经典 3-1/UVa1585 3-2/UVa1586 3-3/UVa1225

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO(我也是在网上找到的pdf,但不记得是从哪里搜刮到的了,就重新上传了一遍) PS:第一次写博客分享我的代码,不知道我对c ...

随机推荐

  1. ASP.NET Core WebListener 服务器

    原文地址:WebListener server for ASP.NET Core By Tom Dykstra, Chris Ross WebListener是一个只能运行在Windows上的ASP. ...

  2. 项目编码规范(Ali)

    一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...

  3. [连载]《C#通讯(串口和网络)框架的设计与实现》- 13.中英文版本切换设计

    目       录 第十三章     中英文版本切换设计... 2 13.1        不用自带的资源文件的理由... 2 13.2        配置文件... 2 13.3        语言 ...

  4. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  5. Centos6.2设置静态ip和dns

    参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-stat ...

  6. CartO

    Carto documentation The following is a list of properties provided in CartoCSS that you can apply to ...

  7. 阶段一:通过网络请求,获得并解析JSON数据(天气应用)

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...

  8. IOS 网络-深入浅出(一 )-> 三方SDWebImage

    首要我们以最为常用的UIImageView为例介绍实现原理: 1)UIImageView+WebCache:  setImageWithURL:placeholderImage:options: 先显 ...

  9. QService 服务容器

    原理 服务容器 服务主体,反射执行业务类 管理器 对服务容器进行控制 测试服务 向一个文件写入内容 启用一个HTTP服务 以下为日志: 2015-06-15 11:50:47.5313 Info QS ...

  10. Redis五种基本数据结构

    1.字符串 示例: 2.列表 示例: 3.集合 示例: 4.散列 示例: 5.有序集合 待续...