自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 收藏
  • 关注

原创 PAT 2021年秋季 满分记录(含题目和题解)

记录总之就是非常爽。(爽是暂时的,不能抵扣浙大机试就开始哭了呜呜呜呜呜呜呜。)写算法写代码真是快乐,后面可以自由自在地看竞赛书了,慢慢修炼,打到 codeforces 1900 分。从去年十二月开始学 C++,一个半月看完了《C++ Primer》前七章,然后做了五十多道乙级、十多道乙级,去考了2021年春季甲级。53分,当时心里还是五味杂陈。春天那个学期一边修环境的专业课(课还是比较多的),一边看《算法笔记》(胡凡大大的),一边刷《 算法笔记上机训练实战指南》,零零散散,到昨天差不多把 PAT 甲级的

2021-09-11 21:41:36 1097 5

原创 PAT 2018年浙大复试机试

1 PAT 甲级 1144 The Missing Number#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;int vec[N];int main() { int n; cin>>n; for(int i=0; i<n; ++i) { cin>>vec[i]; } for(int i=0; i<n; ++i) {

2022-03-30 16:43:39 576

原创 PAT 2017年浙大复试机试

PAT 2017 年浙大复试机试1 PAT 甲级 1128 N Queens Puzzle#include<bits/stdc++.h>using namespace std;bool col[1010],d1[2010],d2[2010];int main() { int k; cin>>k; while(k--) { int n; cin>>n; memset(col,false,sizeof(col));

2022-03-10 00:13:19 397

原创 PAT 2016年浙大复试机试

1 PAT 甲级 1112 Stucked Keyboard#include <bits/stdc++.h>using namespace std;int num[256];bool broken[256];int main() { fill(broken,broken+256,true); int n;cin>>n; string s;cin>>s; char old,now; for(size_t i=0;i<s

2021-09-14 15:48:40 326

原创 PAT 甲级 2016年春季

1 PAT 甲级 1108 Finding Average#include <bits/stdc++.h>using namespace std;bool IsValid(string s,double &ans){ int c1=0,c2=0,pos_p; for(size_t i=0;i<s.size();++i){ if(s[i]=='-') ++c1; else if(s[i]=='.') {++c2; pos_p=i;

2021-09-09 21:34:21 75

原创 PAT 甲级 2016年秋季

1 PAT 甲级 1116 Come on! Let’s C#include <bits/stdc++.h>using namespace std;map<int,string> mp; bool is_prime[10010];void Init(){ fill(is_prime,is_prime+10010,true); is_prime[0]=is_prime[1]=false; for(int i=2;i<10010;++i){

2021-09-09 18:53:55 97

原创 PAT 甲级 2016年冬季

1 PAT 甲级 1120 Friend Numbers#include <bits/stdc++.h>using namespace std;int main() { int n;cin>>n; set<int> ans; while(n--){ string tmp;cin>>tmp; int sum=0; for(auto i:tmp) sum+=i-'0';

2021-09-09 17:12:06 80

原创 PAT 甲级 2017年春季

1 PAT 甲级 1124 Raffle for Weibo Followers#include <bits/stdc++.h>using namespace std;string id[1010];set<string> st;int main() { int m,n,s;cin>>m>>n>>s; for(int i=0;i<m;++i) cin>>id[i]; if(s>m) cout

2021-09-08 21:21:22 66

原创 PAT 甲级 2017年秋季

1 PAT 甲级 1132 Cut Integer#include <bits/stdc++.h>using namespace std;string num;void Solve(){ string s1=num.substr(0,num.size()/2); string s2=num.substr(num.size()/2,num.size()/2); int a,b,c; a=atoi(num.c_str()); b=atoi(s1.c_s

2021-09-08 17:34:56 96

原创 PAT 甲级 2017年冬季

1 PAT 甲级 1136 A Delayed Palindrome#include <bits/stdc++.h>using namespace std;string a,b,c;bool IsPali(string &s){ int sz=s.size(); for(int i=0;i<=sz/2;++i){ if(s[i]!=s[sz-1-i]) return false; } return true;}string

2021-09-02 16:48:50 156

原创 PAT 甲级 2018年冬季

1 PAT 甲级 1152 Google Recruitment#include <bits/stdc++.h>using namespace std;int l,k;string s;long long p=1;bool IsPrime(long long n){ if(n<2) return false; for(long long i=2;i<=sqrt(n);++i) if(n%i==0) return false; retu

2021-09-02 15:20:20 101

原创 PAT 甲级 2018年春季

1 PAT 甲级 1140 Look-and-say Sequence#include <bits/stdc++.h>using namespace std;const int MAXN=210;set<int> graph[MAXN];int main(){ int nv,ne;cin>>nv>>ne; for(int i=0;i<ne;++i){ int a,b;cin>>a>>b;

2021-09-01 16:38:16 118

原创 PAT 甲级 2018年秋季

1 PAT 甲级 1148 Werewolf - Simple Version#include <bits/stdc++.h>using namespace std;struct Msg{ int type,id;};int n;Msg msg[110];int is_wolf[110];bool IsValid(int l1,int l2,int w){ // l1 是狼,l2 是村民,w 是没说谎的狼 if(l2==w) return false;

2021-08-31 20:24:51 90

原创 PAT 甲级 1065 A+B and C (64bit)

PAT 甲级 1065 A+B and C (64bit)这道题数据范围可能有问题,不能用 cin。按道理说如果是在 (−263,263)(-2^{63},2^{63})(−263,263) 即 [−263+1,263−1][-2^{63}+1,2^{63}-1][−263+1,263−1] 范围内,都是可以 cin 的。如果超出了范围,cin 会把结果限制到对应的上界和下界。#include <bits/stdc++.h>using namespace std;long long a,

2021-08-27 14:38:51 64

原创 PAT 甲级 1026 Table Tennis 2021最新测试点

PAT 甲级 1026 Table Tennis感谢这篇文章,思路非常棒,终于满分了。#include <bits/stdc++.h>using namespace std;struct Table{ int ctr{0},is_vip{0},use{-1},end_time{0};};struct Player{ int arrive,beg,cost,end,is_vip; Player(int _arrive,int _cost,int _is_

2021-08-25 10:18:14 314

原创 PAT 甲级 1014 Waiting in Line

PAT 甲级 1014 Waiting in Line#include <bits/stdc++.h>using namespace std;struct Msg{ int end,cost; Msg(int _cost):cost(_cost){}};vector<Msg> msg;int main(){ int n,m,k,q,cost; cin>>n>>m>>k>>q; for(

2021-08-24 20:17:52 158

原创 PAT 甲级 1017 Queueing at Bank

PAT 甲级 1017 Queueing at Bank#include <bits/stdc++.h>using namespace std;int n,k;struct Msg{ int arrive,cost,beg,leave; // 到达、花费、开始、离开,单位:秒。 Msg(int _arrive=0,int _cost=0):arrive(_arrive),cost(_cost){} bool operator< (const Msg &amp

2021-08-24 11:14:01 112

原创 PAT 甲级 1105 Spiral Matrix

PAT 甲级 1105 Spiral Matrix#include <bits/stdc++.h>using namespace std;int ans[110][110],n,nums[10010];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; // 右下左上int row,column,pos; // 行坐标、列坐标、朝向 bool IsValid(int i,int j){ if(i<0||j<0||i>=row

2021-08-24 10:18:08 76

原创 PAT 甲级 1057 Stack 分块和树状数组

分块思想每次查询复杂度为 O(N)O(\sqrt N )O(N​)#include <bits/stdc++.h>using namespace std;const int N=1e5+10,BK=326; // 每个块 sqrt(1e5)=326 个数字int num[N],arr[N],blocks[N];int sz=0; // arr 大小 void Push(){ cin>>arr[sz]; num[arr[sz]]++,blocks[arr

2021-08-24 09:16:34 99

原创 PAT 甲级 1068 Find More Coins

PAT 甲级 1068 Find More Coins输出字典序最小的选择策略,对于物品下标范围 [0,n][0,n][0,n],子问题是[1,n][1,n][1,n]。物品价值从小到大排序进行dp时,物品下标范围 [0,n][0,n][0,n] 的子问题是 [0,n−1][0,n-1][0,n−1],两者是冲突的。所以需要重新设计 dp 的方式。可以将物品价值从大到小排序,正常 dp,此时输出字典序最小问题,对于物品下标范围 [0,n][0,n][0,n],子问题就变成了[0,n−1][0,n-1][

2021-08-22 08:42:48 92

原创 PAT 甲级 1040 Longest Symmetric String DP和字符Hash

PAT 甲级 1040 Longest Symmetric String#include<bits/stdc++.h>using namespace std;int dp[1010][1010];int main(){ string s;getline(cin,s); for(size_t len=0;len<s.size();++len){ for(size_t i=0,j;i+len<s.size();++i){

2021-08-22 05:42:46 132

原创 PAT 甲级 1045 Favorite Color Stripe

PAT 甲级 1045 Favorite Color Stripes 串中不喜欢的颜色直接不管,剩下的颜色按照喜好优先级转换为 int,于是转换为LIS问题。ans[i] 表示以 i 为长度的所有最长子序列中,尾元素最小的那个子序列的尾元素。这个角度(贪心的思想)来理解LIS问题,可以让复杂度降到 O(nlogn)O(nlogn)O(nlogn)(直接dp的复杂度是 O(n2)O(n^2)O(n2))。#include <bits/stdc++.h>using namespace std;

2021-08-21 21:19:13 108

原创 拓扑排序、关键路径和DAG最长路两个问题

拓扑排序算法:判断图是否为DAG#include <bits/stdc++.h>using namespace std;const int MAXN=110;int n;vector<int> graph[MAXN];// 可以判断是否是 DAGint in_d[MAXN]; // 入度bool TopoLogicalSort(){ int num=0; queue<int> q; for(int i=0;i<n;++i)

2021-08-21 20:09:14 174

原创 Acwing 1138 城市公交网建设问题 最小生成树

裸的最小生成树 题目链接Prim算法(Dijkstra中的源点变成集合)Kruskal算法(并查集)今天想到,去查了文档,priority_queue 也有 emplace 方法,速度biubiubiu~#include <bits/stdc++.h>using namespace std;const int MAXN=110;int father[MAXN];int Find(int s){ if(s!=father[s]) father[s]=Find(father[

2021-08-21 19:58:11 314

原创 PAT 甲级 1087 All Roads Lead to Rome

PAT 甲级 1087 All Roads Lead to RomeSTL和SPFA+DFS。#include <bits/stdc++.h>using namespace std;const int MAXN=210;const int INF=0x3f3f3f3f;int n,k;string s;unordered_map<string,int> v_w;unordered_map<string,unordered_map<string,int&g

2021-08-19 21:44:55 49 2

原创 PAT 甲级 1072 Gas Station SPFA

PAT 甲级 1072 Gas Station结点 string 转成 int 建图,对每个可能点SPFA。#include <bits/stdc++.h>using namespace std;const int INF=0x3f3f3f3f;const int MAXN=1020;int n,m,k,ds;int to_num(string s){ int ret=0;size_t idx=0; if(s[0]=='G') ++idx; for(;i

2021-08-19 20:03:07 114

原创 PAT 甲级 1030 Travel Plan

PAT 甲级 1030 Travel Plan简单写一个BellmanFord+DFS#include <bits/stdc++.h>using namespace std;int n,m,s,d;const int MAXN=510;const int INF=0x3f3f3f3f;unordered_map<int,int> dis_graph[MAXN];unordered_map<int,int> cost_graph[MAXN];set&l

2021-08-19 18:36:38 62

原创 PAT 甲级 1018 Public Bike Management

PAT 甲级 1018 Public Bike Managementpriority_queue 单词要拼对,哈哈。#include <bits/stdc++.h>using namespace std;const int MAXN=510;const int INF=0x3f3f3f3f;int c,n,sp,m;int v_w[MAXN];struct Edge{ int to,cost; Edge(int _to=0,int _cost=0):to(_to)

2021-08-19 17:25:16 63

原创 PAT 甲级 1007 Maximum Subsequence Sum

PAT 甲级 1007 Maximum Subsequence Sum#include <bits/stdc++.h>using namespace std;int num[10010],dp[10010];int bg,ed=0;int main() { int k;cin>>k; for(int i=0;i<k;++i){ cin>>num[i]; if(i==0) dp[i]=num[i];

2021-08-15 04:14:10 160

原创 PAT 甲级 1003 Emergency 七种方法

PAT 甲级 1003 Emergency目录PAT 甲级 1003 Emergency方法一:Dijkstra+堆优化+DFS方法一:Dijkstra+堆优化+DFS#include <bits/stdc++.h>using namespace std;const int MAXN=510;const int INF=0x3f3f3f3f;unordered_map<int,int> graph[MAXN];int v_w[MAXN]; // 点权int di

2021-08-13 19:45:03 136

原创 PAT 甲级 1021 Deepest Root

PAT 甲级 1021 Deepest Root(1)N 个节点,N-1 条边,且连通分支数为 1,则是一棵树。(2)从这颗树上任意一点开始 BFS,最远的点一定是所求目标点。(3)还剩下一部分目标点,从上一步得到的点中任意一个开始 BFS,最远的点也一定是目标点。两次目标点集合求并即可。#include <bits/stdc++.h>using namespace std;int n,a,b;vector<int> graph[10010];bool in_q[1

2021-08-09 20:33:57 112

原创 PAT 甲级 1013 Battle Over Cities

PAT 甲级 1013 Battle Over Cities每次查询统计删除被占领节点之后剩下的图的连通分支数,再减一即可。这道题 K 不是特别大,不用特殊处理。#include <bits/stdc++.h>using namespace std;int n,m,k,ocuppied;vector<int> graph[1010];bool in_q[1010];void BFS(int root){ queue<int> q; q.p

2021-08-09 16:05:55 125

原创 PAT 甲级 1076 Forwards on Weibo

PAT 甲级 1076 Forwards on Weibo#include <bits/stdc++.h>using namespace std;int n,l;vector<int> graph[1010];bool in_q[1010];struct Node{ int id,layer;};void BFS(int root){ memset(in_q,0,sizeof(in_q)); queue<Node> q;

2021-08-09 15:48:16 63

原创 PAT 甲级 1034 Head of a Gang (DFS和并查集)

PAT 甲级 1034 Head of a Gang第一版,名字转换成 int,用邻接表建图。给的是边权,全部变成点权,于是联通分支的总边权就是分支里面所有点权的一半。#include <bits/stdc++.h>using namespace std;map<string, int> name_to_id;int idx = 1;map<int, int> graph[2010];int point_weight[2010];bool vis[2010

2021-08-06 20:19:29 164

原创 PAT 甲级 1098 Insertion or Heap Sort

PAT 甲级 1098 Insertion or Heap Sort堆排序和插入排序的模拟。#include<bits/stdc++.h>using namespace std;int n, origin[110], interval[110];void NextInsertion(){ int i; for(i=1;i<n&&interval[i]>=interval[i-1];++i); if(i!=n) sort(interv

2021-08-05 18:13:35 77

原创 PAT 甲级 1107 Social Clusters

PAT 甲级 1107 Social Clusters并查集。#include <bits/stdc++.h>using namespace std;int father[1010];int last_man_has_hobby[1010];int Find(int x){ int root=x; while(father[root]!=root) root=father[root]; while(father[x]!=root){

2021-08-05 17:01:06 48

原创 PAT 甲级 1066 Root of AVL Tree

PAT 甲级 1066 Root of AVL TreeAVL树。#include <bits/stdc++.h>using namespace std;struct Node{ int val,height{1}; Node *lchild{NULL},*rchild{NULL};};int GetHeight(Node *root){ return root==NULL?0:root->height;}int GetBalanceFacto

2021-08-04 21:59:52 72

原创 PAT 甲级 1099 Build A Binary Search Tree

PAT 甲级 1099 Build A Binary Search Tree#include <bits/stdc++.h>using namespace std;const int kMAXN=110;int n,key[kMAXN],lchild[kMAXN],rchild[kMAXN];int nums[kMAXN],idx=0;void InOrderBuild(int root){ if(root==-1) return; if(lchild[root]

2021-08-04 15:22:09 78

原创 PAT 甲级 1064 Complete Binary Search Tree

1064 Complete Binary Search Tree#include <bits/stdc++.h>using namespace std;int n, cbt[1010]; // 完全二叉树int idx=0, nums[1010]; // 存放输入void PreOrderBuild(int root){ if(root*2<=n) PreOrderBuild(root*2); if(root<=n) cbt[root]=nums[idx

2021-08-04 14:54:42 84

原创 PAT 甲级 1043 Is It a Binary Search Tree

PAT 甲级 1043 Is It a Binary Search Tree这道题,想了好久…开始没有理解给出的序列是BST的插入序列,思路朝着前序遍历和中序遍历构造二叉树的方向跑了,以为BST的前序遍历能够直接构造出树,结果越想越不对劲,卡了很久。第一次写二叉树的静态实现,感觉还没用链表方便…把 node[1010] 看成内存,位置 0 就相当于 nunllptr ,自己实现一个 new 就行了,这道题也不用delete。如果要动态删除的话还得把没有用到的节点串起来(可以用 node[0].lchi

2021-08-02 00:42:30 96

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除