PAT(甲级)2018年冬季考试
1152 Google Recruitment
思路:判断素数
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1100;
int a[maxn];
int n,k;
long long getNum(int pos){
long long x = 0;
for(int i=pos;i<=pos+k-1;i++){
x = x*10 + a[i];
}
return x;
}
bool prime(long long x){
if(x < 2) return false;
if(x == 2) return true;
int endss = sqrt(x);
for(int i=2;i<=endss;i++){
if(x%i == 0) return false;
}
return true;
}
void print(long long x){
int len = 0;
long long temp = x;
while(temp){
temp/=10;
len++;
}
if(len == k) {
printf("%lld",x);
return;
}
int t = k - len;
while(t--)printf("0");
printf("%lld",x);
}
int main(){
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%1d",&a[i]);
bool flag = false;
for(int i=1;i+k-1<=n;i++){
long long x = getNum(i);
if(prime(x)){
flag = true;
print(x);
break;
}
}
if(flag == false) puts("404");
return 0;
}
1153 Decode Registration Card of PAT
思路:结构体排序,map计数,string.c_str()把字符串转成字符数组后可以使用print输出
注意:使用太多cin、cout太慢了会超时
#include<bits/stdc++.h>
//#include<unordered_map>
using namespace std;
/*
Cin和Cout不能用太多啦
除了string 和 char类型的输入 最好把Cin替换成scanf
Cout全部换成printf 对于string类型的printf 需要将string转换成字符数组
string.c_str();
*/
const int maxn = 1e4+10;
int n,m;
struct node{
char type;
int site;
string date;
int num;
int score;
string all;
};
struct node stu[maxn];
vector<node> ans;
bool cmp1(node s1,node s2){
if(s1.score == s2.score) {
s1.all < s2.all;
}
return s1.score > s2.score;
}
bool cmp2(node s1,node s2){
if(s1.score > s2.score) return true;
else if(s1.score < s2.score) return false;
return s1.all < s2.all;
}
int mm[1001];
struct nod{
int site;
int num;
nod(int sss,int nnn){
site = sss;
num = nnn;
}
};
vector<nod> ans3;
bool cmp3(nod s1,nod s2){
if(s1.num == s2.num) return s1.site < s2.site;
return s1.num > s2.num;
}
int main(){
// cin>>n>>m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
string str;
int score;
// cin>>str>>score;
cin>>str;
// scanf("%s",&str);
scanf("%d",&score);
stu[i].all = str;
stu[i].score = score;
stu[i].type = str[0];
stu[i].site = (str[1] - '0') * 100 + (str[2] - '0') * 10 + (str[3] - '0');
stu[i].date = str.substr(4,6);
stu[i].num = (str[10] - '0') * 100 + (str[11] - '0') * 10 + (str[12] - '0');
}
for(int Case=1;Case<=m;Case++){
int Type;
// cin>>Type;
scanf("%d",&Type);
int cnt = 0;
ans.clear();
ans3.clear();
if(Type == 1){
char type;
cin>>type;
printf("Case %d: 1 %c\n",Case,type);
for(int i=1;i<=n;i++){
if(stu[i].type == type){
ans.push_back(stu[i]);
}
}
cnt = ans.size();
if(cnt == 0){
puts("NA");
}else{
sort(ans.begin(),ans.end(),cmp2);
for(int i=0;i<=cnt-1;i++){
// cout<<ans[i].all<<" "<<ans[i].score<<endl;
printf("%s ",ans[i].all.c_str());
printf("%d\n",ans[i].score);
}
}
}else if(Type == 2){
int site;
// cin>>site;
scanf("%d",&site);
printf("Case %d: 2 %d\n",Case,site);
int tot = 0;
for(int i=1;i<=n;i++){
if(stu[i].site == site){
tot += stu[i].score;
cnt++;
}
}
if(cnt == 0){
puts("NA");
}else{
printf("%d %d\n",cnt,tot);
}
}else if(Type == 3){
string date;
cin>>date;
printf("Case %d: 3 ",Case);
// cout<<date<<endl;
printf("%s\n",date.c_str());
for(int i=100;i<=999;i++) mm[i] = 0;
for(int i=1;i<=n;i++){
if(stu[i].date == date){
mm[stu[i].site]++;
}
}
for(int i=100;i<=999;i++){
if(mm[i] != 0){
ans3.push_back(nod(i,mm[i]));
}
}
// map<int, int> mp;
// for(int i=1;i<=n;i++){
// if(stu[i].date == date) mp[stu[i].site]++;
// }
// map<int, int>::iterator it = mp.begin();
// while(it!=mp.end()){
// ans3.push_back(nod(it->first,it->second));
// it++;
// cnt++;
// }
cnt = ans3.size();
if(cnt == 0){
puts("NA");
}else{
sort(ans3.begin(),ans3.end(),cmp3);
for(int i=0;i<=cnt-1;i++){
// cout<<ans3[i].site<<" "<<ans3[i].num<<endl;
printf("%d %d\n",ans3[i].site,ans3[i].num);
}
}
}
}
return 0;
}
1154 Vertex Coloring
思路:图论,dfs遍历检查相邻结点的颜色
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10010;
int n,m,k;
vector<int> g[maxn];
int col[maxn];
int vis[maxn];
set<int> se;
bool flag = false;
void dfs(int x){
if(flag == false) return;
vis[x] = 1;
for(int i=0;i<g[x].size();i++){
int v = g[x][i];
if(col[x] == col[v]) flag = false;
if(!vis[v]) dfs(v);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
cin>>k;
while(k--){
se.clear();
for(int i=0;i<n;i++){
cin>>col[i];
se.insert(col[i]);
vis[i] = 0;
}
flag = true;
for(int i=0;i<n;i++){
if(flag == false) break;
if(vis[i]) continue;
dfs(i);
}
if(flag) cout<<se.size()<<"-coloring"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
1155 Heap Paths
思路:给定序列,判断是否大根堆、小根堆(特殊二叉树)
#include<bits/stdc++.h>
using namespace std;
const int maxn = 50010;
int n;
int g[maxn];
vector<int> v;
bool flagMin = false;
bool flagMax = false;
bool flag = true;
void dfs(int x){
v.push_back(g[x]);
if(x * 2 + 1 <= n){
dfs(x * 2 + 1);
}
if(x * 2 <= n){
dfs(x * 2);
}
if(x * 2 + 1 > n && x * 2 > n){
int temp = v[0];
if(flag){
int cnt = 0;
for(int i=0;i<v.size();i++){
if(i > 0 && v[i] >= v[i-1]) cnt++;
}
if(cnt == v.size() - 1) flagMax = true;
else if(cnt == 0) flagMin = true;
else flag = false;
}
for(int i=0;i<v.size();i++){
if(i == 0) cout<<v[i];
else cout<<" "<<v[i];
}
if(v.size() != 0) cout<<endl;
}
v.erase(v.end()-1);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>g[i];
dfs(1);
if(flag == false){
cout<<"Not Heap"<<endl;
}else if(flagMin == true && flagMax == false){
cout<<"Max Heap"<<endl;
}else if(flagMin == false && flagMax == true){
cout<<"Min Heap"<<endl;
}else{
cout<<"Not Heap"<<endl;
}
return 0;
}
PAT(甲级)2018年冬季考试的更多相关文章
- PAT甲级满分攻略|记一次考试经历
一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...
- 2021.9.12周六PAT甲级考试复盘与总结
周六PAT甲级考试复盘与总结 先说结论:仍未步入"高手"行列:现在的学习节奏与方法是对的,有十万分的必要坚持下去. 题目 知识点 分数 T1 前缀和.二分 11 / 20 T2 排 ...
- pat甲级考试+pat1051+1056
同上一篇博客: 贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里 pat的题也刷了点,acwing 的题也刷了点,基本都攒下了.以后也会慢慢补过 ...
- PAT甲级满分有感
时间轴: 2017年,数据结构加入了我的课程清单. 2018年12月,我从网易云课堂下载了数据结构的所有课程视频(学校里没有网,只能离线看),开始一刷.一刷只看了视频,基本没有做题,看到AVL树的时候 ...
- PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblog ...
- PAT甲级考前整理(2019年3月备考)之一
转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...
- 2019秋季PAT甲级_备考总结
2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...
- PAT甲级题分类汇编——计算
本文为PAT甲级分类汇编系列文章. 计算类,指以数学运算为主或为背景的题. 题号 标题 分数 大意 1058 A+B in Hogwarts 20 特殊进制加法 1059 Prime Factors ...
- PAT甲级题解(慢慢刷中)
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6102219.html特别不喜欢那些随便转载别人的原创文章又不给 ...
随机推荐
- [考试反思]1008csp-s模拟测试64:契机
暴力没打满...有点垃圾... 考得稍绝望,啥也不会啊??? T3的测试点分治还写挂了... 其实就是没有沉下心好好的思考,在三道题上来回切换结果一个成型思路都没有 T2既然已经想到那一步了居然没有继 ...
- P2893 [USACO08FEB]修路
直入主题. 农夫约翰想改造一条路,原来的路的每一段海拔是Ai,修理后是Bi花费|A_i–B_i|.我们要求修好的路是单调不升或者单调不降的.求最小花费. 数据范围:n<=2000,0≤ Ai ≤ ...
- unittest使用总结
unittest简介 Unittest是python内置的一个单元测试框架,主要用于自动化测试用例的开发与执行 简单的使用如下 import unittest class TestStringMeth ...
- python:正则0
Python3 正则表达式特殊符号及用法(详细列表) 正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合.子组匹配.模式重复次数.正是这些特殊符号使得一个正则表达式可以匹配字符串集合而不只 ...
- ZeroC ICE源代码中的那些事 - 嵌套类和局部类
使用嵌套类(类中定义的类,c++没有静态类)或局部类(在函数或成员方法中定义的类),进行行为模式的委托(委托请求)或异步 . java中嵌套类和局部类隐式完成了你对外部对象(实例)访问的私有堆栈的初始 ...
- 更换JDK
1.更换JDK 1).卸载原有jdk 检查一下系统中的jdk版本 java -version 显示 java version "1.6.0_24" OpenJDK Runtime ...
- .NET做人脸识别并分类
.NET做人脸识别并分类 在游乐场.玻璃天桥.滑雪场等娱乐场所,经常能看到有摄影师在拍照片,令这些经营者发愁的一件事就是照片太多了,客户在成千上万张照片中找到自己可不是件容易的事.在一次游玩等活动或家 ...
- 装饰者模式学习:模拟咖啡馆的点单系统来剖析装饰者模式的使用 + 装饰者模式在java I/O 中的应用
通过模拟咖啡馆的点单系统来剖析装饰者模式的使用 参考:https://blog.csdn.net/gududedabai/article/details/81989196 一).传统的点单系统构建,每 ...
- vim常用插件使用方法整理【持续更】
nerdtree 和编辑文件一样,通过h j k l移动光标定位切换工作台和目录 ctr+w+h 光标focus左侧树形目录,ctrl+w+l 光标focus右侧文件显示窗口. ctrl+w+w,光标 ...
- .NET高级特性-Emit(2.1)字段
在上篇blog写完的几天后,有读者反映写的过于复杂,导致无法有效的进行实践:博主在考虑到园子里程序员水平高低不一致的情况,所以打算放慢脚步,对类的一些内容进行详细的讲解,顺带的会写一些笔者所遇到过的E ...