
好题
。
karshey
平平无奇打工人。
展开
-
2021GDCPC广东省大学生程序设计竞赛 A An Easy Problem 堆优化
题参考堆优化的做法太妙了。#include<bits/stdc++.h>using namespace std;#define fir(i,a,n) for(int i=a;i<=n;i++)#define pii pair<ll,ll>#define fi first#define se secondtypedef long long ll;const int N=1e6+10;ll n,m,k;priority_queue<pii>q原创 2022-03-22 20:48:16 · 340 阅读 · 0 评论 -
ABC200 C - Ringo‘s Favorite Numbers 2 思维+map计数
原题参考:live4m大佬的题解注意中途可能会爆int。能组成<a,b>使得b-a是200的倍数的,都满足a%200=b%200;#include<bits/stdc++.h>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define fir(i,a,n) for(int i=a;i<=n;i++)#define se secondconst int N=1e5+10;int原创 2022-03-21 19:28:10 · 329 阅读 · 0 评论 -
AcWing 1471. 牛奶工厂 树的性质:记录出度
AcWing 1471. 牛奶工厂天秀题解:AcWing 1471. 牛奶工厂,优秀的O(n)解法,真的很简洁!一开始自己做的时候傻傻DFS。后来发现可以这样:(引用和图都来自“天秀题解”)要用这种方法,我们先看到题目中的一句话:农夫约翰的牛奶加工厂内有N个加工站,编号为1…N,以及 N−1条通道,每条连接某两个加工站。关键是N-1条通道!那么要求出符合题意的点,这些有向边就一定会组成一棵树,而树根出度为0。接下来就简单了,对于每个点,我们都记录一下它的出度,然后循环一次。因为这是一棵树,所以原创 2022-03-17 19:50:45 · 526 阅读 · 0 评论 -
AcWing 3745. 牛的学术圈 I 理解题意+枚举答案(妙)
AcWing 3745. 牛的学术圈 I 原题参考题解:封禁用户大佬的题解:AcWing 3745. 牛的学术圈 I两种方法——1.二分;2.只要一个for和一个数组我的打卡枚举答案,找出第一个不符合题意的i,于是i-1就是答案。#include<bits/stdc++.h>using namespace std;#define fir(i,a,n) for(int i=a;i<=n;i++)const int N=1e5+10;int n,l;int a[N];//引原创 2022-03-17 16:38:42 · 428 阅读 · 0 评论 -
求整数n的最小质因子出现次数 打表
打表原创 2022-03-16 16:56:42 · 1394 阅读 · 0 评论 -
AcWing 1738. 蹄球 拓扑排序
AcWing 1738. 蹄球打卡参考竟然是拓扑排序,没想到哇。有入度的点不会做起点。#include<bits/stdc++.h>using namespace std;#define fir(i,a,n) for(int i=a;i<=n;i++)const int N=1e2+10;int n,ans;int a[N],b[N],rd[N];//入度 int v[N];void dfs(int u){ v[u]=1; if(!v[b[u]]) dfs(b原创 2022-03-14 15:32:31 · 175 阅读 · 0 评论 -
AcWing 1875. 贝茜的报复 枚举+dfs
AcWing 1875. 贝茜的报复 打卡这题的dfs太妙了。#include<bits/stdc++.h>using namespace std;#define fir(i,a,n) for(int i=a;i<=n;i++)typedef long long ll;const int N=1e5+10;map<char,int>ji,ou,mp;//存某个字母变量的奇偶个数//mp存枚举的是奇数还是偶数 1代表奇数 2代表偶数 int n;strin原创 2022-03-10 19:43:27 · 183 阅读 · 0 评论 -
AcWing 1884. COW 经典dp
AcWing 1884. COW打卡#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+10;ll ans;int n;string a;int c,o,w;//o代表前面有几个co int main(){ cin>>n>>a; for(int i=0;a[i];i++) { if(a[i]=='C') c++; else if(原创 2022-03-10 17:59:44 · 144 阅读 · 0 评论 -
AcWing 1929. 镜子田地 dfs+异或+反证
AcWing 1929. 镜子田地打卡参考和讲解:AcWing 1929. 镜子田地 -> 图示方向改变AcWing 1929. 镜子田地 简洁代码 + 证明#include<bits/stdc++.h>using namespace std;#define fir(i,a,n) for(int i=a;i<=n;i++)#define mem(a,x) memset(a,x,sizeof(a));#define pb push_back#define INF 0原创 2022-03-10 15:38:27 · 189 阅读 · 0 评论 -
AcWing 2014. 岛 差分+map离散化
题目链接参考:AcWing 2014. 岛(离散化+差分)c++最短代码,同4007题(含对差分算法的深入探究)AcWing 2014. 岛深入剖析差分的本质探究差分解法的由来 AcWing 101. 最高的牛本题要求最大的岛的数量。思路:对于每一对a[i-1],a[i],如果有a[i-1]<a[i],那么当水<a[i-1]时,是一个岛;当水>a[i-1]&&水<a[i]时,还是一个岛;当水>a[i]时,是0个岛。也就是说,当水>=a[-原创 2022-03-07 15:00:24 · 445 阅读 · 0 评论 -
【PTA】L2-014 列车调度 set的巧妙应用
题目地址输入:98 4 2 5 3 9 1 6 7输出:4参考:柳神的代码set的函数思路:显然每一个数字要加在刚好大于它的数字之后,若无这样的数字,则再开一条路。且一条路中的数字必须前大后小,而每次加入数字看的是它最后的一个数字,也就是它最小的数字(来判断此数字是否能加入),则我们可以用这条路的最后一个数字来代表这条路。因此,我们可以用set来表示所有路,set中的每一个元素代表这条路的最后一个元素。每次加入新元素时,若能加在已有的队伍后,则要删除第一个大于此数的元素,因为新加原创 2022-02-26 21:20:32 · 215 阅读 · 0 评论 -
AcWing 2019. 拖拉机 双端队列+最短路
题要求需要移除的干草捆的最小数量,我们把有障碍的地方当作权值是1,没有的地方是0,则此题可以转化为求最短路。地图中只有0和1的最短路可以用双端队列deque做,其中到的点权值为0就放入队头,为1就放入队尾。则每次取出的队头都是权值最小的情况。用st表示这个点的最短路是否已经确定。若没确定,当它第一次从队列中取出(front),它的最短路就确定了注意边界:(0,0)是终点,而障碍只会出现在[1,1000]范围内,则我们把bfs的范围取到[0,1001]。((0,0)是一定要在范围内的,不然无法遍历,原创 2022-01-27 17:58:33 · 664 阅读 · 0 评论 -
【PTA】 储水问题 模拟
给定一系列非负整数,将这些数据看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。(数组以外的区域高度视为0)数据范围:0≤n≤106 ,数组中每个值满足 0 <val≤10 9输入格式:第一行是n值,第二行是n个非负数输出格式:输出能接的雨水单位数输入:63 1 2 5 2 4输出:5数据范围1e6,所以一定要O(n)显然这是一个对最大值进行操作的题:我们要找到每一个“凹”两侧的最大值,对答案的贡献是min(最大值1,最大值2)-每一个a[i].由于要O(原创 2022-01-26 17:27:35 · 839 阅读 · 0 评论 -
【PTA】直直直径 暴搜+剪枝
Keven现在有一棵树,现在Keven想知道在这颗树上任取两点,他们的距离的最大值是多少,Keven不会做这个题目,于是请教聪明的你,如果你帮助他解决这个问题,他将会让你的排名上升。树中两点之间的距离定义为连接两点的路径边权之和。并且每条路径经过的次数不能超过1次。输入格式:第一行给出一个数字N,表示树的节点个数。(树的节点为1-N)接下来N-1行,每行给出三个数字U,V,W,表示点U与点V之间有一条权值为W的路径。(N<200000,W<100000000)输出格式:在一行中输出原创 2022-01-26 15:24:29 · 530 阅读 · 0 评论 -
【PTA】最长的括号子串 模拟
给出一个长度为 n 的,仅包含字符 ‘(’ 和 ‘)’ 的字符串,计算最长的格式正确的括号子串的长度。例1: 对于字符串 “(()” 来说,最长的格式正确的子串是 “()” ,长度为 2 . 例2:对于字符串 “)()())” , 来说, 最长的格式正确的子串是 “()()” ,长度为 4 .字符串长度:0≤n≤5∗105输入格式:只由’(’ 和 ‘)’ 组成的字符串。输出格式:输出最长的合法括号子串的长度。输入样例:)()())输出样例:4一个精巧的模拟,技巧是:下标入栈,而不原创 2022-01-26 14:50:58 · 747 阅读 · 0 评论 -
AcWing 2058. 笨拙的手指 枚举+哈希表+秦九韶算法
题代码关键:枚举。用unordered_set哈希表来表示某个数字是否出现过。insert插入,count返回集合内某个数字出现的次数。将b进制的string a转化为十进制的方式:秦九韶算法。二进制的转换:0变1,1变0,对应到ASCII码就是48->49,49->48,就是亦或操作^。三进制的转换:见代码,很巧妙。代码:#include <iostream>#include <cstring>#include <algorithm>原创 2022-01-25 16:56:22 · 420 阅读 · 0 评论 -
【好题】第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 F-第二大数 思维
题求各个范围的第二大数。举个例子:49 6 4 5 6 4 4 6 5 6第二大数分别是:6 4 4 6 5 6 我们的做法就是按照题目顺序,i从1开始,j从i+1开始,每次记录当前最大数和第二大数,对于每次新出现的数a[j],如果它大于第二大数,那它就是第二大数;如果它大于最大数,那第二大数就变成原先的最大数,当前最大数就是a[j]。(如果它不满足以上条件就不管了)(j=i+1时最大数就是max(a[i],a[j]),第二大数就是min(a[i],a[j])其实还有另一原创 2022-01-17 15:22:40 · 290 阅读 · 0 评论 -
【好题】第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 H-特征值 前缀和+高精度模拟
题比赛的时候,一看题:害!高精度模拟!冲!然后就T了。做题之前要算一下时间复杂度,来判断自己的方法是否合理,不然会浪费大量的时间。这题的数据范围:500000如果要高精度加法,数字长度是500000,所以要加500000次,每次加是按位数加,还要乘以500000,总的时间复杂度是500000*500000=2.5x1011 绝对会TLE所以要思考一下别的方法。经过@满满满V 的提醒,我们可以这样看这道题的加法:1225 122 12+ 1————1360很容易可以看出,每原创 2022-01-17 13:54:15 · 320 阅读 · 0 评论 -
【好题】第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 G-Num 思维+推公式
题推公式:a*b+a+b=a*(b+1)+b=a*(b+1)+b+1-1=(a+1)*(b+1)-1因此,令n++,若n为质数,说明没有一个(a+1)*(b+1)可以组成它,就输出No。代码:#include<bits/stdc++.h>using namespace std;#define fir(i,a,n) for(int i=a;i<=n;i++)#define mem(a,x) memset(a,x,sizeof(a));typedef long long原创 2022-01-17 13:34:52 · 403 阅读 · 0 评论 -
B-Build the Permutation
#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;#define pb push_back#define fi first#define se second#define mem(a,x) memset(a,x,sizeof(a));#define db double #..原创 2021-12-11 20:01:26 · 854 阅读 · 3 评论 -
AcWing 172. 立体推箱子 BFS+状态表示
题代码参考了书上的。判断是否合法的函数写的好精简!状态表示的理解://lie==0 立着 lie==1 横着躺着 lie==2 竖着躺着//j:0123分别表示左右上下//nextx[i][j]代表lie==i时x往j方向走的变化const int nextx[3][4]={{0,0,-2,1},{0,0,-1,1},{0,0,-1,2}};const int nexty[3][4]={{-2,1,0,0},{-1,2,0,0},{-1,1,0,0}};const int nextlie[原创 2021-10-23 01:00:51 · 146 阅读 · 0 评论 -
AcWing 198. [HAOI2007] 反素数 约数个数+dfs
题参考约数个数:每个质因数的次数+1的乘积。2e9<2x3x5x7x11x13x17x19x23;2e9<pow(2,31);last其实是最多扫30次。#include<bits/stdc++.h>using namespace std;typedef long long ll;//求出第一个约数个数最大的数======================const int N=2e5+10;int n;int maxn,number; int pri[9]=原创 2021-10-26 20:50:23 · 149 阅读 · 0 评论