PAT 2014 秋
A 1084 Broken Keyboard
注意大小写即可。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string> using namespace std; int main()
{
string inStr, outStr;
cin >> inStr >> outStr;
int inIndex = , outIndex = ;
bool charFlag[]={false};
while(inIndex < inStr.size())
{
if(inStr[inIndex] == outStr[outIndex])
{
inIndex++;
outIndex < outStr.size()- ? outIndex++ : outStr[outIndex] = ' ';
}
else
{
int tmpNum = (int)inStr[inIndex++];
tmpNum = tmpNum >= 'a' ? tmpNum-'a'+'A' : tmpNum;
if(!charFlag[tmpNum])
{
charFlag[tmpNum] = ;
printf("%c", tmpNum);
}
}
}
return ;
}
A 1085 Perfect Sequence
1.二分查找,不然会超时
2.注意数值的范围,有些地方需要使用long long
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector> using namespace std;
typedef long long LL;
vector<int> inputNumVec;
int N, P;
int getMaxCnt(int lIndex)
{
int rIndex = inputNumVec.size()-, midIndex;
LL tmpNum = (LL)inputNumVec[lIndex]*P;
while(lIndex <= rIndex)
{
midIndex = (lIndex + rIndex) >> ;
if(inputNumVec[midIndex] > tmpNum)
rIndex = midIndex - ;
else
lIndex = midIndex + ;
}
return rIndex;
}
int main()
{
cin >> N >> P;
inputNumVec.resize(N);
for(int i = ; i < N; ++ i)
cin >> inputNumVec[i];
sort(inputNumVec.begin(), inputNumVec.end());
int maxCnt = , tmpNum;
for(int i = ; i <= inputNumVec.size()-maxCnt; ++ i)
{
tmpNum = getMaxCnt(i)-i+;
if(tmpNum > maxCnt)
maxCnt = tmpNum;
}
cout << maxCnt;
return ;
}
A 1086 Tree Traversals Again
自己想个办法建树之后进行后续遍历即可
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack> using namespace std;
typedef long long LL;
#define NoAddr -1
typedef struct NODE
{
int val, lChild, rChild;
NODE(int v):val(v),lChild(NoAddr),rChild(NoAddr){}
}node;
vector<node> nodeVec;
stack<int> valVec;
bool coutFlag = false;
void postOrder(int tmpRoot)
{
if(tmpRoot >= nodeVec.size())
return;
if(nodeVec[tmpRoot].lChild > )
postOrder(nodeVec[tmpRoot].lChild);
if(nodeVec[tmpRoot].rChild > )
postOrder(nodeVec[tmpRoot].rChild);
coutFlag ? printf(" ") :coutFlag = true;
cout << nodeVec[tmpRoot].val;
}
int main()
{
int N, tmpNum, lastIndex = ;
string tmpStr;
bool pushFlag = true;
cin >> N;
while(N > )
{
cin >> tmpStr;
if(tmpStr == "Push")
{
cin >> tmpNum;
valVec.push(nodeVec.size());
nodeVec.push_back(NODE(tmpNum));
pushFlag ? nodeVec[lastIndex].lChild = nodeVec.size()- :
nodeVec[lastIndex].rChild = nodeVec.size()- ;
lastIndex = nodeVec.size()-;
pushFlag = true;
}
else
{
lastIndex = valVec.top();
valVec.pop();
pushFlag = false;
N--;
}
}
postOrder();
return ;
}
A 1087 All Roads Lead to Rome
1.城市名string 和 序号index的转换
2.Dijkstra找最短距离
3.DFS根据题目中给出的优先级找到所需的条件
#include <cstdio>
#include <stdlib.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <unordered_map>
using namespace std;
#define NoAddr -1
#define MAX_CITY 210
#define CLR(a,b) memset(a,b,sizeof(a))
typedef long long LL;
const int INF = 0x7f7f7f7f;
int N, K;
string citySt;
int route[MAX_CITY][MAX_CITY]={};
vector<int> preVec[MAX_CITY];
vector<int> tmpPath;
vector<int> outPath;
vector<int> disVec;
vector<int> cityHappyValVec;
int minCityCnt = MAX_CITY, maxHappy = -, minPathCnt = , tmpMaxHappy = ;
unordered_map<string, int> cityToIndexMap;
unordered_map<int, string> indexToCityMap;
void Dijkstra(int u)
{
vector<bool> visitFlagVec(N, false);
disVec.resize(N, INF);
disVec[u] = ;
for(int i = ; i < N; ++ i)
{
int minDis = INF, v = -;
for(int j = ; j < N; ++ j)
if(!visitFlagVec[j] && disVec[j] < minDis)
{
minDis = disVec[j];
v = j;
}
if(v == -)
return;
visitFlagVec[v] = true;
for(int j = ; j < N; ++ j)
{
if(!visitFlagVec[j] && disVec[v] + route[v][j] < disVec[j])
{
disVec[j] = disVec[v] + route[v][j];
preVec[j].clear();
preVec[j].push_back(v);
}
else if(!visitFlagVec[j] && disVec[v] + route[v][j] == disVec[j])
{
preVec[j].push_back(v);
}
}
}
}
void dfs(int u)
{
if(u == )
{
minPathCnt ++;
tmpPath.push_back();
if(tmpMaxHappy > maxHappy)
{
maxHappy = tmpMaxHappy;
outPath = tmpPath;
minCityCnt = tmpPath.size();
}
else if(tmpMaxHappy == maxHappy && tmpPath.size() < minCityCnt)
{
outPath = tmpPath;
}
tmpPath.pop_back();
}
tmpPath.push_back(u);
tmpMaxHappy += cityHappyValVec[u];
for(int i = ; i < preVec[u].size(); ++ i)
dfs(preVec[u][i]);
tmpMaxHappy -= cityHappyValVec[u];
tmpPath.pop_back();
}
int main()
{
cin >> N >> K >> citySt;
cityHappyValVec.resize(N, );
string tmpCity, tmpSt, tmpEnd;
int tmpHappy, tmpDis, stIndex, endIndex, endCityIndex;
cityToIndexMap[citySt] = ;
indexToCityMap[] = citySt;
for(int i = ; i < N; ++ i)
{
cin >> tmpCity >> tmpHappy;
cityHappyValVec[i] = tmpHappy;
cityToIndexMap[tmpCity] = i;
indexToCityMap[i] = tmpCity;
if(tmpCity == "ROM")
endCityIndex = i;
}
CLR(route,0x7f);
while(K--)
{
cin >> tmpSt >> tmpEnd >> tmpDis;
stIndex = cityToIndexMap[tmpSt];
endIndex = cityToIndexMap[tmpEnd];
route[stIndex][endIndex] = tmpDis;
route[endIndex][stIndex] = tmpDis;
}
Dijkstra();
dfs(endCityIndex);
cout << minPathCnt << " " << disVec[endCityIndex] << " " << maxHappy << " " << (int)maxHappy/(outPath.size()-) << endl;
bool symbolFlag = false;
for(int i = outPath.size()-; i >= ; -- i)
{
symbolFlag ? printf("->") : symbolFlag = true;
cout << indexToCityMap[outPath[i]];
}
return ;
}
PAT 2014 秋的更多相关文章
- 2014秋C++ 第8周项目 分支程序设计
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- PAT 2019 秋
考试的还行.不过略微有点遗憾,但是没想到第一题会直接上排序和dfs,感觉这次的题目难度好像是倒着的一样.哈哈哈哈. 第一题实在是搞崩心态,这道题给我的感觉是,可以做,但事实上总是差点啥. 第二题,第三 ...
- 2014秋C++ 第9周项目 循环程序设计
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- 2014秋C++第5周项目1參考-见识刚開始学习的人常见错误
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/a ...
- 2014秋C++ 第7周项目 数据类型和表达式
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- PAT 2018 秋
A 1148 Werewolf - Simple Version 思路比较直接:模拟就行.因为需要序列号最小的两个狼人,所以以狼人为因变量进行模拟. #include <cstdio> # ...
- PAT 2011 秋
A : World Cup Betting #include <cstdio> #include <iostream> #include <algorithm> u ...
- 【2014】【】辛星【php】【秋】【1】php构建开发环境
**************************什么是开发环境*********************** 1.我们学习PHP,是使用它来做web用的,通俗理解,就是做站点. 2.站点的执行须要 ...
- 浙大PAT考试1077~1080(2014上机复试题目)
题目地址:点击打开链接 还是太弱. . 英文太差.,, 预计要等待被虐了.. 1077 找最长的公共后缀,暴力就能够写: #include<iostream> #include<cs ...
随机推荐
- javaBean、EJB、POJO
1.JavaBean 最初是由 Sun 公司提出的一种规范,主要包含以下要求: ----类是 public 的,并且有一个无参数的构造函数 ----属性修饰符为:private,并通过 get 和 s ...
- 机器学习中 为何要使用 独热编码 one-hot
背景 接触tensorflow时,学习到mnist,发现处理数据的时候采取one-hot编码,想起以前搞FPGA状态机遇到过格雷码与独热码. 解析: 将离散型特征使用one-hot编码,确实会让特征之 ...
- P1066 图像过滤
P1066 图像过滤 转跳点:
- Emergency
题意:有N个点,M条边,每个点有权值,问从起点到终点最短路的个数以及权值最大的最短路的权值. 分析:修改Dijstra模板. #include<bits/stdc++.h> using n ...
- 1.HDFS分布式文件系统
HDFS概述及设计目标 如果让我们自己设计一个分布式文件存储系统,怎么做? HDFS设计目标 非常巨大的分布式文件系统 运行在普通廉价的硬件上 易扩展,为用户提供性能不错的文件存储系统 HDFS架构 ...
- pig安装配置及实例
一.前提 1. hadoop集群环境配置好(本人hadoop版本:hadoop-2.7.3) 2. windows基础环境准备: jdk环境配置.esclipse环境配置 二.搭建pig环境 1.下载 ...
- 十九、React UI框架Antd(Ant Design)的使用——及react Antd的使用 button组件 Icon组件 Layout组件 DatePicker日期组件
一.Antd(Ant Design)的使用:引入全部Css样式 1.1 antd官网: https://ant.design/docs/react/introduce-cn 1.2 React中使用A ...
- python基础数据类型--列表(list)
python基础数据类型--列表(list) 列表是我们在后面经常用到的数据类型之一,通过列表可以对数据类型进行增.删.改.查等操作 一列表的增.删.改.查 1增: 1.1增加到最后 append ...
- 从0开始自己配置一个vps虚拟服务器(1)
我前几年买的虚拟机都被我荒废了,我已经配置过很多遍了,但是从来没有真的用过.因为我前几个月之前又新买了一个便宜的服务,准备写新的东西.供应商pacificrack,真的很烂,一直断,控制面板还打不开, ...
- asp.net数据库增删改查demo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...