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. GridView的使用(高度封装,不怎么灵活,repeat可替代)

    GridView的使用 首先,gridview是封装好的,直接在设计界面使用,基本不需要写代码: 一.绑定数据源 GridView最好与LinQDatasourse配合使用,相匹配绑定数据: 二.样式 ...

  2. Redis命令拾遗二(散列类型)

    本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明原文地址 :博客园蜗牛NoSql系列地址  http://www.cnblogs.com/tdws/tag/NoSql/ Redis命令拾 ...

  3. C# - Networkcomms

    来自英国的用C#语言编写的开源的TCP/UDP网络通信框架,简单方便,性能稳定. 参考: NetworkComms官网:  NetworkComms通信框架中文网: 介绍开源的.net通信框架: Ne ...

  4. 基于CkEditor实现.net在线开发之路(7)列表页面开发动作介绍

    一个列表页面不止是查询,它也包含了很多业务上功能的实现,这些业务功能的实现的逻辑我称之为动作.如触发单击按钮删除数据,更改业务表数据,调用webService,调用WCF接口,弹出新窗体新增.修改.查 ...

  5. 【C#进阶系列】27 I/O限制的异步操作

    上一章讲到了用线程池,任务,并行类的函数,PLINQ等各种方式进行基于线程池的计算限制异步操作. 而本章讲的是如何异步执行I/O限制操作,允许将任务交给硬件设备来处理,期间完全不占用线程和CPU资源. ...

  6. php中实现的一个curl批处理的实例

    curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...

  7. 记录一次bug解决过程:eclipse集成lombok插件

    一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...

  8. HTML5 数据集属性dataset

    有时候在HTML元素上绑定一些额外信息,特别是JS选取操作这些元素时特别有帮助.通常我们会使用getAttribute()和setAttribute()来读和写非标题属性的值.但为此付出的代价是文档将 ...

  9. javascript实现键盘自动打字效果

    最近在网上看到一个字符逐个出现的打字效果,觉得挺有趣的,想一想基本实现思路就是设置一个定时器逐然后逐个向容器中添加字符,于是就基于jQuery写了一个简单版的. <!DOCTYPE html&g ...

  10. 错误:当你使用id作为sharepoint的自定义页面的查询参数时,总会提示项目不存在!

    No item exists at http://SERVER/SITE/mypage.aspx?ID=1. It may have been deleted or renamed by anothe ...