Google 2013 campus test-R1
Reading Phone Number
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
#include<sstream>
#define _USE_MATH_DEFINES
#include<math.h> using namespace std;
string Sub(char val,int count){
if(count==)return "";
string pre,after;
bool sep=false;
switch(count){
case :
pre="";
break;
case :
pre="double";
break;
case :
pre="triple";
break;
case :
pre="quadruple";
break;
case :
pre="quintuple";
break;
case :
pre="sextuple";
break;
case :
pre="septuple";
break;
case :
pre="octuple";
break;
case :
pre="nonuple";
break;
case :
pre="decuple";
break;
default:
sep=true;
break;
}
switch(val){
case '':
after="zero";
break;
case '':
after="one";
break;
case '':
after="two";
break;
case '':
after="three";
break;
case '':
after="four";
break;
case '':
after="five";
break;
case '':
after="six";
break;
case '':
after="seven";
break;
case '':
after="eight";
break;
case '':
after="nine";
break;
}
if(sep){
pre=after;
for(int i=;i<count;i++){
pre+=" "+after;
}
return pre;
}
if(pre=="")return after;
else return pre+" "+after;
}
int main(){ ifstream ifs("H:/Test/A-large-practice.in");
ofstream ofs("H:/Test/A-large-practice.out");
int t;
ifs>>t;
string N,F,O;
stringstream ss;
for(int iii=;iii<t;iii++){
ifs>>N>>F;
vector<string> len;
int start=;
for(int i=;i<F.length();i++)
{
if(F[i]=='-'){
len.push_back(F.substr(start,i-start));
start=i+;
}
}
len.push_back(F.substr(start,F.length()-start));
O.clear();
int index=;
for(int i=;i<len.size();i++){
char current=N[index];
int count=;
int leni;
ss.clear();
ss<<len[i];
ss>>leni;
for(int j=;j<leni;j++)
{
index++;
if(N[index]!=current){
if(O=="")O+=Sub(current,count);
else O+=" "+Sub(current,count);
current=N[index];
count=;
}
else{
count++;
}
}
if(O=="")O+=Sub(current,count);
else O+=" "+Sub(current,count);
index++;
}
ofs<<"Case #"<<iii+<<": "<<O<<endl;
}
ifs.close();
ofs.close();
}
Rational Number Tree
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
#include<sstream>
#include<queue>
#include<sstream>
//#define _USE_MATH_DEFINES
#include<math.h>
using namespace std;
void GetAt(vector<unsigned long long>& vec,unsigned long long n){
if(n==){
vec[]=;
vec[]=;
return;
}
GetAt(vec,n/);
if(n%==){
vec[]=vec[]+vec[];
}
else{
vec[]=vec[]+vec[];
}
}
unsigned long long GetPos(unsigned long long p,unsigned long long q){
if(p>q)return GetPos(p-q,q)*+;
else if(p<q)return GetPos(p,q-p)*;
else return ;
}
int main(){
ifstream ifs("H:/Test/B-large-practice.in");
ofstream ofs("H:/Test/B-large-practice.out");
stringstream ss;
int t;
ifs>>t;
int id;
string s;
unsigned long long n,p,q;
for(int iii=;iii<t;iii++){
ifs>>id;
ofs<<"Case #"<<iii+<<": ";
if(id==){
ifs>>s;
ss.clear();
ss<<s;
ss>>n;
vector<unsigned long long> vec;
vec.resize();
GetAt(vec,n);
ofs<<vec[]<<" "<<vec[]<<endl;
}
else{
ifs>>p>>q;
ofs<<GetPos(p,q)<<endl;
}
}
ifs.close();
ofs.close();
}
Sorting
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
#include<sstream>
//#define _USE_MATH_DEFINES
#include<math.h>
using namespace std; int main(){ ifstream ifs("H:/Test/C-large-practice.in");
ofstream ofs("H:/Test/C-large-practice.out");
int t;
ifs>>t;
int N,val;
vector<int>v1,i1;
vector<int>v2,i2;
for(int iii=;iii<t;iii++){
ifs>>N;
v1.clear();
v2.clear();
i1.clear();
i2.clear();
for(int i=;i<N;i++){
ifs>>val;
int valv;
if(val>)valv=val;
else valv=-val;
if(valv%==){
v1.push_back(val);
i1.push_back(i);
}
else{
v2.push_back(val);
i2.push_back(i);
}
}
if(v1.size()!=)sort(v1.begin(),v1.end());
if(v2.size()!=){
sort(v2.begin(),v2.end());
for(int i=;i<v2.size()/;i++){
int temp=v2[i];
v2[i]=v2[v2.size()-i-];
v2[v2.size()-i-]=temp;
}
}
ofs<<"Case #"<<iii+<<": ";
if(v1.size()==){
ofs<<v2[];
for(int i=;i<v2.size();i++){
ofs<<" "<<v2[i];
}
ofs<<endl;
}
else if(v2.size()==){
ofs<<v1[];
for(int i=;i<v1.size();i++){
ofs<<" "<<v1[i];
}
ofs<<endl;
}
else{
int ii1=,ii2=;
if(i1[ii1]<i2[ii2]){
ofs<<v1[ii1];
ii1++;
}
else{
ofs<<v2[ii2];
ii2++;
}
while(ii1<i1.size()&&ii2<i2.size()){
if(i1[ii1]<i2[ii2]){
ofs<<" "<<v1[ii1];
ii1++;
}
else{
ofs<<" "<<v2[ii2];
ii2++;
}
}
while(ii1<i1.size()){
ofs<<" "<<v1[ii1];
ii1++;
}
while(ii2<i2.size()){
ofs<<" "<<v2[ii2];
ii2++;
}
ofs<<endl;
}
}
ifs.close();
ofs.close();
}
Cross the maze
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
#include<sstream>
#include<queue>
#include<sstream>
//#define _USE_MATH_DEFINES
#include<math.h>
using namespace std;
char GetChar(int t){
switch(t){
case :
return 'N';
break;
case :
return 'E';
break;
case :
return 'S';
break;
case :
return 'W';
break;
default:
break;
}
return ;
}
bool GetAt(vector<string>&mat,int cx,int cy){
if(cx<||cx>=mat.size()||cy<||cy>=mat[].length()){
return false;
}
else return mat[cy][cx]=='.';
}
bool GetAt(vector<string>&mat,int cx,int cy,int t){
switch(t){
case :
return GetAt(mat,cx,cy-);
break;
case :
return GetAt(mat,cx+,cy);
break;
case :
return GetAt(mat,cx,cy+);
break;
case :
return GetAt(mat,cx-,cy);
break;
default:
break;
}
}
void Update(int& cx,int& cy,int t){
switch(t){
case :
cy--;
break;
case :
cx++;
break;
case :
cy++;
break;
case :
cx--;
break;
default:
break;
}
}
void Update2(int& t,int& left, bool clockwise){
if(clockwise){
left=t;
t=(t+)%;
}
else{
t=left;
left=left-;
if(left<)left+=;
}
}
int main(){
ifstream ifs("H:/Test/D-large-practice.in");
ofstream ofs("H:/Test/D-large-practice.out");
stringstream ss;
int t,N,sx,sy,ex,ey;
vector<string> mat;
vector<char> Path;
ifs>>t;
for(int iii=;iii<t;iii++){
ifs>>N;
mat.resize(N);
for(int i=;i<N;i++){
ifs>>mat[i];
}
Path.clear();
ifs>>sy>>sx>>ey>>ex;
sx--;
sy--;
ex--;
ey--;
ofs<<"Case #"<<iii+<<": ";
int cx=sx,cy=sy;
bool find=true;
Path.clear();
int t;
if(cx==){
if(cy==)t=;
else t=;
}
else{
if(cy==)t=;
else t=;
}
int left=t-;
if(left<)left+=;
while(cx!=ex||cy!=ey){
if(Path.size()>=){
find=false;
break;
}
if(GetAt(mat,cx,cy,left)){
Update2(t,left,false);
Update(cx,cy,t);
Path.push_back(GetChar(t));
}
else{
Update2(t,left,true);
if(GetAt(mat,cx,cy,left)){
Update2(t,left,false);
Update(cx,cy,t);
Path.push_back(GetChar(t));
}
else{
Update2(t,left,true);
if(GetAt(mat,cx,cy,left)){
Update2(t,left,false);
Update(cx,cy,t);
Path.push_back(GetChar(t));
}
else{
Update2(t,left,true);
if(GetAt(mat,cx,cy,left)){
Update2(t,left,false);
Update(cx,cy,t);
Path.push_back(GetChar(t));
}
else{
find=false;
break;
}
}
}
}
}
if(find){
ofs<<Path.size()<<endl;
for(int i=;i<Path.size();i++){
ofs<<Path[i];
}
ofs<<endl;
}
else{
ofs<<"Edison ran out of energy."<<endl;
}
}
ifs.close();
ofs.close();
}
Spaceship Defence
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
#include<sstream>
#include<queue>
//#define _USE_MATH_DEFINES
#include<math.h>
using namespace std;
#define SIZE 1332
int cost[SIZE];
bool visited[SIZE];
vector<vector<pair<int,int>> >edges[SIZE];
int StringToInt(string& a){
if(a.length()==){
if(a[]>=''&&a[]<='')return a[]-'';
else return a[]-'a'+;
}
else{
int a1,a2;
if(a[]>=''&&a[]<='')a1=a[]-'';
else a1=a[]-'a'+;
if(a[]>=''&&a[]<='')a2=a[]-'';
else a2=a[]-'a'+;
return (a1+)*+a2;
} }
int FindMin(){
int cm=-;
int ret;
for(int i=;i<SIZE;i++){
if(!visited[i]){
if(cm==-){
cm=cost[i];
ret=i;
}
else{
if(cost[i]!=-&&cost[i]<cm){
cm=cost[i];
ret=i;
}
}
}
}
if(cm==-)return-;
return ret;
}
int main(){ ifstream ifs("H:/Test/E-large-practice.in");
ofstream ofs("H:/Test/E-large-practice.out");
int t;
ifs>>t;
int N,M,S;
vector<string>color;
for(int iii=;iii<t;iii++){ ofs<<"Case #"<<iii+<<": "<<endl;
ifs>>N;
color.resize(N);
for(int i=;i<SIZE;i++){
edges[i].clear();
}
for(int i=;i<N;i++)
{
ifs>>color[i];
}
ifs>>M;
int ai,bi,ti;
for(int i=;i<M;i++){
ifs>>ai>>bi>>ti;
ai--;
bi--;
int i1=StringToInt(color[ai]);
int i2=StringToInt(color[bi]);
edges[i1].push_back(pair<int,int>(i2,ti));
}
ifs>>S;
cout<<iii<<endl;
for(int ii=;ii<S;ii++){
for(int i=;i<SIZE;i++){
cost[i]=-;
visited[i]=false;
}
int p,q;
ifs>>p>>q;
p--;
q--;
int mi=StringToInt(color[p]);
cost[mi]=;
while(mi!=-){
vector<pair<int,int>>& vec=edges[mi];
for(int i=;i<vec.size();i++){
if(cost[vec[i].first]==-||cost[vec[i].first]>cost[mi]+vec[i].second){
cost[vec[i].first]=cost[mi]+vec[i].second;
}
}
visited[mi]=true;
mi=FindMin();
}
ofs<<cost[StringToInt(color[q])]<<endl;
}
}
ifs.close();
ofs.close();
}
Google 2013 campus test-R1的更多相关文章
- Google 2013笔试题一
2.1 给定三个整数a,b,c,实现 int median(int a, int b, int c),返回三个数的中位数,不可使用sort,要求整数操作(比较,位运算,加减乘除等)次数尽量少,并分析说 ...
- Google为何这么屌
概述: 在移动市场上,从来没有一个公司像Google一样的玩法,以后可能也不会有.因为这根本就不是一个商业模式.它可以调动极大的资源而几乎没有盈利压力,它力逾千钧又身段灵活.它从来不尊重这个市场原有的 ...
- 2014 I/O归来:Google连接一切
6月,WWDC 2014与Google I/O (大部分演讲视频都公开.Youtube须要FQ,很值得一看)相继召开.今年是我第三年參加Google I/O大会. 三年间.Google积累了非常多技 ...
- 2014 I/O返回:Google连接一切
文/蒋涛 6月.WWDC 2014与Google I/O (大部分演讲视频都公开.Youtube须要FQ.很值得一看)相继召开. 今年是我第三年參加Google I/O大会.三年间,Google积累 ...
- Google maps api demo 2
demo /** * @fileoverview Sample showing capturing a KML file click * and displaying the contents in ...
- Android Volley 具体解释 Google公布的一套用于网络通信的工具库
下载地址:git clone https://android.googlesource.com/platform/frameworks/volley 或 : https://github.com/mc ...
- [Google] Help employee find the nearest gbike
You are given a campus map with the Google buildings, roads and Google bikes. You have to help the e ...
- 分布式系统(Distributed System)资料
这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
随机推荐
- 线程、委托、lambda运算符的简单示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- [Android]如何创建一个View的分割线
如何创建一个View的分割线,如上图 我们见介绍三种可以创建看起来很不错的view的分割线,如在button之间添加分割线. 这个例子是将为LinearLayout内的三个Button间添加分割线. ...
- 关于Daydream VR的最直白的介绍
虚拟现实(Virtual Reality),简称虚拟技术,也称虚拟环境,是利用电脑模拟产生一个三度空间的虚拟世界,提供用户关于视觉等感官的模拟,让用户如同身历其境一般,电脑可以立即进行复杂的运算,将精 ...
- BestCoder冠军赛 - 1009 Exploration 【Tarjan+并查集缩点】
[题意] 给一个图,这个图中既有有向边,又有无向边,每条边只能走一次,问图中是否存在环. 最多10^6个点,10^6个无向边,10^6个有向边 [题解] 因为既有有向边又有无向边,所以不能单纯的用ta ...
- 【开源java游戏框架libgdx专题】-12-开发工具-图片合成
TexturePackerGui工具: 1.工具使用: 首先看到texturepacker的界面 界面介绍: New pack:创建项目按钮,单击后输入文件名称,创建文件. Input directo ...
- require.js的使用的坑!
require.js的使用心德: 都是自我的理解所得: first:为什么使用? 1,web开发js的占用比例越来越大,引入的插件也越来越多,维护困难,一个一个的script的写要废 2,模块开发的需 ...
- java.lang.UnsupportedClassVersionError: Bad version number in .class file
java.lang.UnsupportedClassVersionError: Bad version number in .class file造成这种过错是ni的支撑Tomcat运行的JDK版本与 ...
- Python 文件的IO
对文件的操作 #coding=utf-8 #!user/bin/python import os #基本操作和写入文件 fo = open("test2.py",'wb') pri ...
- Asp.Net中的session配置
一.InProc模式(缺省模式) <sessionState mode="InProc" timeout="20"></sessionStat ...
- Linux sed命令删除指定行
一.删除包含匹配字符串的行## 删除包含baidu.com的所有行sed -i '/baidu.com/d' domain.file 二.删除匹配行及后所有行## 删除匹配20160229的行及后面所 ...