
pat
lcxdz
这个作者很懒,什么都没留下…
展开
-
悬崖 (阅读
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e3+9;#define int long longsigned main(){ int sum=0; int x,n; cin>>x>>n; if(n>x){ cout<<x<<endl; return 0; } cou原创 2022-03-04 22:19:32 · 68 阅读 · 0 评论 -
山楂 (数论
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long longsigned main(){ int sum=0,t=0; for(int i=1;i<=8;i++){ int x; cin>>x; x+=t; sum+=x*i; if(x%3>x/3){//多余的大于组数 说明多余的要舍弃原创 2022-03-04 22:17:00 · 68 阅读 · 0 评论 -
2020pat冬 7-4 Chemical Equation (30 分) (dfs 图的存储
添加链接描述先存图然后搜索#include<bits/stdc++.h>using namespace std;const int N=1e3+9;int exist[N],product[N];struct node { int pro; vector<int>ne;};unordered_map<int,vector<node>>equ;bool cmp(node a,node b){ return a.ne<原创 2022-03-04 17:30:48 · 129 阅读 · 0 评论 -
2020pat冬 7-3 File Path (25 分) (dfs 注意编号
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e4+9;int vis[N];typedef pair<int,int> pii;vector<int>v[N];vector<int>d[N];vector<int>ans;int book[N];void dfs(int u,int ed){ if(u==ed){ cout&l原创 2022-03-04 17:27:48 · 101 阅读 · 0 评论 -
2020pat冬 7-2 Subsequence in Substring (25 分)(字符串模拟
添加链接描述#include<bits/stdc++.h>using namespace std;int main(){ int mx=0x3f3f3f3f; string s,p,ans; cin>>s>>p; for(int i=0;i<s.size();i++){ if(s[i]==p[0]) { int now=0; string sub;原创 2022-03-04 17:23:53 · 126 阅读 · 0 评论 -
2020pat冬 7-1 The Closest Fibonacci Number (20 分) (模拟 数论
添加链接描述#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int a=0,b=1; int d1=0,d2=0; for(int i=1;;i++){ if(n>=a&&n<=b){ if(abs(a-n)==abs(b-n)){ cout<原创 2022-03-04 17:21:42 · 111 阅读 · 0 评论 -
P1113 杂务 (最优路径
添加链接描述拓扑排序 不断更新最大值#include<bits/stdc++.h>using namespace std;const int N=1e5+9;int in[N];int e[N],ne[N],h[N],idx;void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}int dist[N],te[N];int n;void bfs(){ queue<int>q; fo原创 2022-03-03 21:55:38 · 149 阅读 · 0 评论 -
1107 Social Clusters (30 分) (并查集 看清题意
添加链接描述先模拟一遍 不要想当然#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int fa[N];int find(int x){ if (x == fa[x]) return fa[x]; return fa[x] = find(fa[x]);}void merge(int x,int y){ x=find(x); y=find(y);原创 2022-03-03 17:04:49 · 74 阅读 · 0 评论 -
788. 逆序对的数量 (归并排序
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e5+9;int arr[N],temp[N];long long ans;void merge(int l,int r){ if(l>=r)return; int mid=l+r>>1; merge(l,mid);merge(mid+1,r); int cnt=0,i=l,j=mid+1; while(原创 2022-03-03 13:40:19 · 56 阅读 · 0 评论 -
1089 Insert or Merge (25 分) (排序 思维
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=110;int arr[N],brr[N];int n;int ok;void megr(int k){ ok=1; for(int i=1;i<=n;i++){ if(arr[i]!=brr[i]){ ok=0; } } for(int i=1;i<=n/k;i原创 2022-03-03 11:45:50 · 62 阅读 · 0 评论 -
1097 Deduplication on a Linked List (25 分) (链表模拟
添加链接描述#include<bits/stdc++.h>using namespace std;//!!注意输出5位编号const int N=1e5+9;struct node { int st,data,ed;}arr[N],brr[N],sum[N];int vis[N];int main(){ int st=0,n; cin>>st>>n; int tota=0,totb=0; for(int i=1;i&原创 2022-03-02 22:15:15 · 237 阅读 · 0 评论 -
1098 Insertion or Heap Sort (25 分)(插入排序 堆排序
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=200;int arr[N];int brr[N];void down(int u,int n){ int t=u; if(u*2<=n&&brr[u*2]>brr[u])t=u*2; if(u*2+1<=n&&brr[u*2+1]>brr[t])t=u*2+1; if(t!=原创 2022-03-02 21:53:43 · 114 阅读 · 0 评论 -
1099 Build A Binary Search Tree (30 分) (中序序列 二叉树 层次遍历
添加链接描述可以发现从小到大排序是树的中序序列 先通过链表将树的形状回复,然后的中序填值,最后层次遍历#include<bits/stdc++.h>using namespace std;const int N=500;struct node { int data; int l,r;}t[N];int arr[N];int tot=0;void dfs(int u){ if(t[u].l!=0){ dfs(t[u].l); }原创 2022-03-02 21:42:43 · 370 阅读 · 0 评论 -
1165 Block Reversing (25 分) (模拟链表 翻转分块
添加链接描述#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 9;struct node{ int st; int data, ne;} t[N];vector<vector<node>> res;int main(){ int st, n, k; cin >> st >> n >> k; for (i原创 2022-03-01 21:38:33 · 142 阅读 · 0 评论 -
1166 Summit (25 分) (图的遍历
添加链接描述不是并查集 因为每个人都必须要有之间关系#include<bits/stdc++.h>using namespace std;const int N=210;int dist[N][N];int arr[N];int main(){ memset(dist,0x3f,sizeof dist); int n,m; for(int i=1;i<=n;i++)dist[i][i]=0; cin>>n>>m原创 2022-03-01 21:37:06 · 159 阅读 · 0 评论 -
2021pat春 7-4 Recycling of Shared Bicycles (30 分) (dfs 思维
添加链接描述一条路找最近最小的点#include<bits/stdc++.h>using namespace std;const int N=200+9;int arr[N];int dist[N][N],vis[N];int res=0;vector<int> ans;int n,m;void dfs(int u){ ans.push_back(u); vis[u]=1; int t=-1; for(int i=1;i<=n原创 2022-03-01 20:22:44 · 180 阅读 · 0 评论 -
2021pat 春 7-3 Structure of Max-Heap (25 分) (堆插入 判断结点关系
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e3+9;int arr[N];int n,m;void down(int u){ int t=u; if(u*2<=n&&arr[u]<arr[u*2]){ t=u*2; } if(u*2+1<=n&&arr[t]<arr[u*2+1]){原创 2022-03-01 20:05:01 · 124 阅读 · 0 评论 -
2021pat春 7-2 Lab Access Scheduling (25 分) (贪心
添加链接描述按右区间排序#include<bits/stdc++.h>using namespace std;typedef pair<int,int> pii;const int N=2e3+9;pii arr[N];bool cmp(pii a,pii b){ return a.second<b.second;}int main(){ int n; cin>>n; for(int i=1;i<=n;i++)原创 2022-03-01 20:03:43 · 115 阅读 · 0 评论 -
2021pat春 7-1 Arithmetic Progression of Primes (20 分) (埃式筛 模拟 剪枝
添加链接描述最优性剪枝#include <bits/stdc++.h>using namespace std;vector<int> res;const int N=1e6;int book[N];void init(int n){ memset(book,1,sizeof book); book[1]=0,book[0]=0; for(int i=2;i<=n;i++){ if(book[i]){原创 2022-03-01 19:14:23 · 767 阅读 · 0 评论 -
1167 Cartesian Tree (30 分)中序建堆 二叉树
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=40;int arr[N];typedef struct node { int data; node *l,*r;}*bitnode;node *build(int l,int r){ if(l==r){ node *root=new node (); root->data=arr[l];原创 2022-02-28 22:29:29 · 171 阅读 · 0 评论 -
2021pat秋 7-4 Sorted Cartesian Tree (30 分) 中序建堆 0/30
结点赋值要开辟空间找到中序序列的关键添加链接描述#include<bits/stdc++.h>using namespace std;const int N=40;typedef pair<int,int> pii;#define int long longpii arr[N];typedef struct node { pii data; node *l, *r;}*bitnode;bool cmp(pii a,pii b){ retu原创 2022-02-28 10:25:02 · 198 阅读 · 0 评论 -
2021pat秋 7-3 Playground Exploration (25 分) (dfs 阅读理解
添加链接描述he/she will always choose the next destination with the smallest number, and he/she would never want to visit the same spot twice.下一个最小的数字而不是比当前小,用的最高级~~提示我们要排序标点和dij很像#include<bits/stdc++.h>using namespace std;const int N=1e3+9;vector&l原创 2022-02-28 10:14:34 · 292 阅读 · 0 评论 -
2021pat秋 7-2 Stack of Hats (25 分) (贪心
添加链接描述找到对应顺序的值#include<bits/stdc++.h>using namespace std;const int N=1e4+9;typedef pair<int,int> pii ;pii arr[N];bool cmp(pii a,pii b){ return a.first>b.first;}pii brr[N];int ans[N];int main(){ int n; cin>>n;原创 2022-02-28 10:08:47 · 176 阅读 · 0 评论 -
2021pat秋 7-1 Arrays and Linked Lists (20 分) (模拟 阅读理解
添加链接描述声明的数组最少为1#include<bits/stdc++.h>using namespace std;const int N=1e4+9;#define int long longstruct node { int add,len;}t[N];signed main(){ int n,q; cin>>n>>q; for(int i=1;i<=n;i++){ cin>>t[i]原创 2022-02-28 10:06:57 · 154 阅读 · 0 评论 -
1159 Structure of a Binary Tree (30 分)0/30(中序、后序遍历建树 同时记录树的信息 sscanf
添加链接描述中序、后序遍历建树 同时记录树的父亲,兄弟,高度,满二叉树,左右结点#include<bits/stdc++.h>using namespace std;const int N=40;int post[N],in[N];typedef struct node { int data,h; node *l,*r,*parent;}*treenode;bool full=1;map<int,node*>mp;string s;node *b原创 2022-02-27 19:51:05 · 555 阅读 · 0 评论 -
7-4 Helping the Couriers (30 分) (最短路 细节 26/30
添加链接描述日期要考虑第二天钱要考虑负数//从0开始回到0点//最多报酬 最少时间#include<bits/stdc++.h>using namespace std;const int N=1e3+9;struct node { int h,m; int y,p; int ti;}t[N];int dist[N][N];int main(){ memset(dist,0x3f,sizeof dist); int n,m;原创 2022-02-27 17:57:07 · 168 阅读 · 0 评论 -
7-3 Size of Military Unit (25 分) (记忆化 dfs
添加链接描述图的遍历 ,记忆化不会超时#include<bits/stdc++.h>using namespace std;vector<int>v[100005];int ans=0;const int N=1e5+9;int vis[N];int dist[N];void dfs(int u){ if(dist[u]){ans+=dist[u];return ;} else ans++; for(auto it:v[u]){原创 2022-02-27 17:00:26 · 139 阅读 · 0 评论 -
7-2 Rank a Linked List (25 分) (链表 读清题意 5/20
添加链接描述找到第一个起点 也就是没有入度的点 然后遍历即可 要看清题意注意题目求的是遍历的顺序,而不是编号第一个程序是从尾到头 第二个是结束了写的从头到尾Now let’s number these nodes in order, starting from the first node, by numbers from 1 to n. These numbers are called the ranks of the nodes. Your job is to list their rank原创 2022-02-27 16:56:40 · 1393 阅读 · 0 评论 -
7-1 Fake News (20 分) (排序 hash
添加链接描述注意unordered_map 测试点2 #include<bits/stdc++.h> using namespace std; const int N=1e4+9; int arr[N]; int res[N]; typedef pair<int,int> pii; bool cmp(pii a,pii b){ return a.second>b.second; } int main(){ int n,m; ci原创 2022-02-27 16:52:02 · 156 阅读 · 0 评论 -
1164 Good in C (20 分) (读题 模拟
添加链接描述测试点123都是读取一整行 cin会错误 所以看清题意很重要(扣字眼The sentence is formed by several words (no more than 10 continuous capital English letters each), and the words are separated by any characters other than capital English letters.#include<bits/stdc++.h>u原创 2022-02-27 13:04:58 · 231 阅读 · 0 评论 -
1158 Telefraud Detection (25 分) (并查集 不看note是sb
添加链接描述//输出每一行所有的人在一个团伙 升序//团伙升序//超过k个短电话 但是不超过20%回电 if互相回电话 就是一个团伙//!!不是小于k的电话是短电话 而是小于等于5分钟的电话是短电话 //!!同一个人多次时间累加//!!不同的人才算//!!求集团要用并查集//!!题目给了按人的顺序//!!不看note是sb#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int st[N原创 2022-02-26 21:01:13 · 258 阅读 · 0 评论 -
1157 Anniversary (25 分) (hash
添加链接描述#include<bits/stdc++.h>using namespace std;map<string,int> mp;int main(){ int n; cin>>n; int ok=1; string ans; for(int i=1;i<=n;i++){ string a; cin>>a; mp[a]++; }原创 2022-02-26 18:33:43 · 154 阅读 · 0 评论 -
1155 Heap Paths (30 分) (堆 中右左遍历 dfs模板 0/30
添加链接描述判断堆 输出堆的中右左 递归#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int arr[N];vector<int> ans;int n;void dfs(int root){ if (root * 2 > n) { int ok = 1; cout << ans[0]; for (a原创 2022-02-26 15:16:05 · 100 阅读 · 0 评论 -
1154 Vertex Coloring (25 分) (图的遍历
添加链接描述图的遍历#include<bits/stdc++.h>using namespace std;const int N=1e4+9;vector<int> v[N];int col[N];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ int a,b; cin>>a>>b;原创 2022-02-26 14:26:25 · 71 阅读 · 0 评论 -
1153 Decode Registration Card of PAT (25 分) (模拟 0/25
添加链接描述有puts就不要关闭输入输出//1输出编号和分数 相同分数升序字典序id//2输出考生数 和总分//3输出地点 地点人数降序人数 再是升序地点数字//因为是固定数字的编号 所以用string判断#include<bits/stdc++.h>using namespace std;const int N=1e4+9;struct node { string s; int score;}t[N];typedef pair<string,in原创 2022-02-26 14:11:45 · 111 阅读 · 0 评论 -
1152 Google Recruitment (20 分) (模拟 数论
添加链接描述注意输出前导0取k个数字 到<s.size()-k+1#include<bits/stdc++.h>using namespace std;bool check(int n){ if(n<=1)return 0; for(int i=2;i<=n/i;i++){ if(n%i==0)return 0; } return 1;}int main(){ int l,k; cin>>原创 2022-02-25 19:17:02 · 91 阅读 · 0 评论 -
1151 LCA in a Binary Tree (30 分) (前序中序遍历 0/30
添加链接描述通过map记录下标 进行遍历,可以直接得到pre的根这样就不需要k++,在建树的过程中寻找如果下标都在根两边说明找到了最近的点,否则就往两边找#include<bits/stdc++.h>using namespace std;const int N=1e4+9;int in[N],pre[N];int n,q;int ok=0;unordered_map<int,int>pt;void lca(int inl,int inr,int root,int原创 2022-02-25 16:59:15 · 400 阅读 · 0 评论 -
1150 Travelling Salesman Problem (25 分)(图的遍历连通性
添加链接描述图的遍历连通性用邻接矩阵#include<bits/stdc++.h>using namespace std;const int N=210;int mp[N][N];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ int a,b,c; cin>>a>>b>>c; mp[a]原创 2022-02-25 15:37:01 · 301 阅读 · 0 评论 -
1149 Dangerous Goods Packaging (25 分) (图的遍历
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e2+9,M=1e5+9;int arr[M];vector<int>v[M];int main(){ // cout<<mp[20004]<<endl; int n,q; cin>>n>>q; for(int i=1;i<=n;i++){ int原创 2022-02-25 15:06:00 · 7447 阅读 · 0 评论 -
1148 Werewolf - Simple Version (20 分) (注意初始化1 模拟 思维 0/20
添加链接描述题意是说有两个狼人,但是只有一个狼人说谎,先将i和j初始化为狼人,其余为1,注意初始化为1不能用memset然后根据给的信息来判断是不是说假话,如果说的是假话,就加入ansifans为2,判断这两个说谎的人是不是一人一狼也就是说如果有一个人或者一个狼人说谎那么说明这个i和j为狼人符合条件#include<bits/stdc++.h>using namespace std;const int N=110;int arr[N];int main(){ int原创 2022-02-25 10:27:49 · 217 阅读 · 0 评论