03 2024 档案
摘要:这种题边界真的是每次都搞不清楚,我感觉现场估计也写不出来。 #include <bits/stdc++.h> using namespace std; const int N = 1010; int ismirror; int pre[N]; vector<int> post; void dfs(i
阅读全文
摘要:和L2-006是一样的。正常建树,只是在BFS的时候先放右儿子。 L2-006 树的遍历 https://www.cnblogs.com/chengyiyuki/p/18106375 代码: #include <bits/stdc++.h> using namespace std; const in
阅读全文
摘要:先建树,然后遍历数组。 这种方式比较消耗空间,适用于数据量小的情况,如果形成一条链,那将是致命的这个空间。 方法一,数组二叉树 #include <bits/stdc++.h> using namespace std; const int N = 1e5+10; int in[N], post[N]
阅读全文
摘要:首先天梯赛175是基操,在这个基础上,pta达到企业要求相当于就是特招了,也就是他不会占用你这个批次的名额。 将这些特招排除之后,假设175这个线还有x个人,需要s人,那么在就会要s个人(x>s,x<s那就是这个线的人全要了)。 写法一: #include <bits/stdc++.h> using
阅读全文
摘要:注: 某些行or列可能重复删除,所以需要记录那些已经被删除过了。 #include <bits/stdc++.h> using namespace std; int main() { int n, m, q; cin >> n >> m >> q;//行和列数 int ssize = n * m;
阅读全文
摘要:博客合集里面l1的题目纯粹为了每日打卡。 #include <bits/stdc++.h> using namespace std; int main() { string s, s1; getline(cin, s); getline(cin, s1); vector<int> vec, vec1
阅读全文
摘要:捋清楚思路。 #include <bits/stdc++.h> using namespace std; int main() { int low, high, p1, p2; cin >> low >> high >> p1 >> p2; //两个人的年龄都是超过a的 那么都能进去 //一个年龄小
阅读全文
摘要:注: 考虑两个数字乘积是0的情况。 #include <bits/stdc++.h> using namespace std; int res[10000]; int main() { int a, b, c; cin >> a >> b >> c; res[0] = a; res[1] = b;
阅读全文
摘要:继续加油吧。 #include <bits/stdc++.h> using namespace std; int main() { int n, hasdo; cin >> n >> hasdo; cin.get(); string s; for (int i = 0; i < n; i++) {
阅读全文
摘要:这不是内个哈夫曼编码嘛. #include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; cin.get(); while (m--) { string s; getline(cin, s); i
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; int main() { int count =0,huoguo=0; int flag = 0;//第一次出现是第几条 string s; while (getline(cin, s) && s != ".
阅读全文
摘要:easy. #include <bits/stdc++.h> using namespace std; set<pair<int, int>> st; int maxv = 0; int main() { for(int i=1;i<=4;i++){ int t; cin >> t; st.inse
阅读全文
摘要:这题没做出来,查了一些博客,下面是我比较能接受的一种写法。 读完题可以发现这是一个满二叉树,并且可以得到每场比赛失败者的信息(决赛是胜利者和失败者都可以得到) 对于一场比赛,它的胜利者要么是左孩子中的胜利者,要么是右孩子中的胜利者,那我们就可以先假设是左孩子的胜利者,如果不行就交换(是右孩子的胜利者
阅读全文
摘要:喔,太久没敲代码了,有点生疏了。 baozang[i]=1:第i块岛屿有宝藏。 baozang[i]=0: 第i块岛屿没有宝藏。 #include <bits/stdc++.h> using namespace std; vector<vector<int>> area; int row, col;
阅读全文
摘要:和这道题真的有壁,拿起来就做,然后做错了。又看了半天题目,才知道大概啥意思。 每一轮都需要给人数最多的学校分配位置,如果人数大于c,分配一个教室剩下的人还要再放回进行第二轮,而不是一次性给这个学校分配完。 #include <bits/stdc++.h> using namespace std; c
阅读全文
摘要:纯模拟。 #include <bits/stdc++.h> using namespace std; int cnt = 0,maxlen=0; int main() { vector<int> a, b; int n; cin >> n; for (int i = 0; i < n; i++) {
阅读全文
摘要:测试点4一开始没过去,以为是数据范围的问题。 找半天才发现是floyd三层循环k那个写反了,害。 #include <bits/stdc++.h> using namespace std; vector<int> male,female; int dis[510][510]; int main()
阅读全文
摘要:考察的是贪心+记忆化搜索。 最短路=走过的路径*2-从根到小区最深路径长度 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; int p[maxn],dis[maxn],dp[maxn]; int max
阅读全文
摘要:一,重入锁定义 重入锁,顾名思义,就是支持重新进入的锁,表示这个锁能够支持一个线程对资源重复加锁。如果一个线程已经拿到了锁,那么他需要再次获取锁的时候不会被该锁阻塞。 举个例子, public synchronized void test(){ do something... test2(); }
阅读全文
摘要:代码很烂。 #include <bits/stdc++.h> using namespace std; struct node { int start[10]; int end[10]; }s[100000]; bool cmp(node n1,node n2) { for (int i = 0;
阅读全文
摘要:业务场景 接下来要模拟的业务场景: 每当被普通攻击的时候,有千分之三的概率掉落金币,每回合最多爆出两个金币。 1.每个回合只有15秒。 2.每次普通攻击的时间间隔是0.5s 3.这个服务是一个集群(这个要求暂时不实现) 编写接口,实现上述需求。 核心问题 可以想到要解决的主要问题是, 1.如何保证一
阅读全文
摘要:没有想到map的key可以是数组类型,本质是vector模板中运算符的重载。 1.==重载: 判断两个数组是一样的,含义是两个vector大小相同,并且固定位置上的值要相等。 //stl_vector.h template <class T, class Alloc> inline bool ope
阅读全文
摘要:前提必须是完全二叉树,才能有这种转化方式。 后序到层次, #include <bits/stdc++.h> using namespace std; int n,post[40],cx[40],cnt=1; void dfs(int index) {//index是层数数组的下标 if (index
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; vector<int> vec[10010],ans;//矩阵 int vis[10010]; int maxLen = 0; void dfs(int root,vector<int> &v) { if(v
阅读全文
摘要:纯模拟。 #include <bits/stdc++.h> using namespace std; queue<char> qu[200]; int main() { int n, m, cap; cin >> n >> m >> cap;//轨道数量 初始物品数量 cin.get(); stri
阅读全文
摘要:起初是忽略了每个地点只能打卡一次的条件。 错误版本: #include <bits/stdc++.h> using namespace std; int edges[210][210], fangan[2000][2000]; int minspend = INT_MAX; int idx = 0;
阅读全文
摘要:破防了,我自己写的只能得5分,测试点0都过不去,并且至今没有找到错误的原因。 等我找到了再回来。 AC了回来了。 我的思路没问题,单纯是代码写错了。 错误1: 结构体中的id错误地使用了string类型,我真的服了!!!所以4,5过不去,排序就错了。 错误2: 在一天开始之前,限制天数-1.错误的将
阅读全文
摘要:纯模拟,一次就AC了。 #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; vector<int> huoja;//货架 queue<int> order;//发货顺序 int main() {
阅读全文
摘要:费解啊。 "所谓“五代以内无公共祖先”是指两人的公共祖先(如果存在的话)必须比任何一方的曾祖父辈分高。" 也就是这个祖先出现在任意一方的五代中,都认为是近亲。 只有他是A的五代之外并且是B的五代之外,才认为不是近亲。 #include <bits/stdc++.h> using namespace
阅读全文
摘要:看其他大佬的。 10,13这些是幸福数,在开始会设置为特立独行的幸福数,但是他们并不是特立独行而是其他数字变换而来的,所以在设置那个数字的时候10,13会被修正为普通的幸福数。 #include <bits/stdc++.h> using namespace std; int visited[100
阅读全文
摘要:测试点会出现-0这种,直接导致无法使用int类型接收编号,因为无从判断性别,因此只能用string类型。 并且需要使用sex来记录当前是男性还是女性,只有对方是异性的时候,亲密度才有意义。 #include <bits/stdc++.h> using namespace std; int p[101
阅读全文
摘要:很容易就AC了但是真没get到这道题有啥用这个所谓的排名。 #include <bits/stdc++.h> using namespace std; struct node { string s; int zp; int rank; }s[10010]; bool cmp(node n1, nod
阅读全文
摘要:第一眼想到BFS,一次就AC了haha。 我的思路是用level记录当前是多少层,然后到最后一层的时候,将这一层的元素放到set集合里面。 输出的时候注意末尾不要有空格。 #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using n
阅读全文
摘要:如果一个城市未被炸毁,那如果他可达的其他城市也未被炸毁,说明方案不可行。 #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; #define ll long long vector<vector<
阅读全文
摘要:注意merge的时候如果p1和p2相等及时返回否则死循环了,代码有问题而不是算法超时。 #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; #define ll long long int par
阅读全文
摘要:老太太钻被窝,给爷整笑了。 测试点2: 颜色只能是k种,大于小于都过不去。 #include <bits/stdc++.h> using namespace std; int edges[503][503]; int color[503]; int main() { int v, e, k; cin
阅读全文
摘要:这道题真的烦,输出想半天。 反正就是要区分奇偶,才能知道那个结点最后要打印出-1. 我看网上遇到的都是测试点3的问题,不过我有问题的是测试点1,前三个出问题就是节点数奇偶的问题。 #include <bits/stdc++.h> using namespace std; map<int, pair<
阅读全文
摘要:...祖师爷也可能是得道者,这合理吗?(坑) #include <bits/stdc++.h> using namespace std; vector<vector<int>> a; map<int, double> dd; double tota = 0; int n;//人数 double z,
阅读全文
摘要:参考自: http://www.manongjc.com/detail/28-gsdqaxrxcgnqqlv.html 有改动。 个人认为已经是这道题最好的解法了。 注意点为测试点四:(以标点符号打头的时候别忽略掉前面有空格) 输入: 1 ,dac 输出 ,dec AI: ,dec #include
阅读全文
摘要:法一:(23分) 数组。有一个测试点会超时,每次第二层遍历是O(n)。 #include <bits/stdc++.h> using namespace std; int a[100010]; int main(){ int n,t,count=0; cin>>n; for(int i=0;i<n;
阅读全文
摘要:判断图的连通性三种做法,dfs,bfs,并查集。 本题dfs。edges为可达矩阵,若i能够到达j,则edges[i][j]=1且edges[j][i]=0反之为0,因为是无向图,所以两个都要存。 一开始出了点问题,我在删除那个节点之后,将edges[i][j]置为0,但是没将edges[j][i]
阅读全文
摘要:手动建立小根堆。 注意每次输入之前都要把之前缓冲区的内容清理掉getline(),以免影响下一次读取。 #include <bits/stdc++.h> using namespace std; int a[1010],n,m; map<int,int> mp; int main() { cin>>
阅读全文
摘要:后面每个家族最小编号不知道怎么处理,就没做出来。 然后去翻阅blog,发现差不多是两种方案,第一种在融合的时候让编号小的当根节点,那么最终这个家族的祖先就是编号最小的节点。 第二种就是融合的时候没处理,到后面处理(看起来好麻烦)。 下面就是第一种写法(注:结构体中的id没用,可以删了)。 #incl
阅读全文
摘要:法一(暴力超时21分) 纯暴力,最后一个测试点超时。 #include <bits/stdc++.h> using namespace std; vector<set<int>> dataset; int main(){ int n; cin>>n; dataset.resize(n+1); for
阅读全文
摘要:背包。 #include <bits/stdc++.h> using namespace std; struct node{ double kc,sj; double avg; }s[1010]; bool cmp(node n1,node n2){ return n1.avg>n2.avg; }
阅读全文
摘要:版本一: 代码非常烂。 一个元素加入之前,修改集合中(va,vb)最后一个元素的下一个地址为当前元素的地址。 然后我是把(元素地址,下一个地址)和(元素的值)拆开放到两个集合了,放一个里面有点麻烦不太会处理。 #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:这道题就是在dijkstra的基础上增加了一些东西。 代码有参考别人,最后一步的处理很好。 #include <bits/stdc++.h> using namespace std; const int maxv = 0x7fffffff; int edges[510][510];//从i到j的长度
阅读全文
摘要:阿西...只是想用一下stringstream,结果发现坑了。 我发现clear()和str("")单用都会出问题,只有这俩结合才有用。 还有C++字符串处理这块真的太坑了。 https://www.cnblogs.com/smile-programmer/p/17322945.html #incl
阅读全文
摘要:原来想分割,但是确实不太行。 记录下这种看别人的,感觉还行。 #include <bits/stdc++.h> using namespace std; int main() { string s; getline(cin,s); for(int i=0; i<s.size(); i++) { in
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; char cs[110][110],cc[110][110]; int main(){ char zm; int r,c; scanf("%c",&zm); scanf("%d",&r); c=r; getc
阅读全文
摘要:测试点1提交了好多次,都没过去。找网上那些测试点输出结果是一样的,但就是过不去。 然后认真思考了一番,自己可能没理解好这道题。 我的理解错误在于,认为在最大的时候,号码应该是这一队的上一个人号码加上2。 实际上,只有上一个号码和他在同一队的时候,才这么干。如果不是同一队,依旧是加上1。 真是巨大的错
阅读全文
摘要:模拟竖式除法。最好在纸上写一写,111/13,1111/13,1111/13。每次结果的余数后面加一个1就相当于是在被除数后面加了一个1. 还有,a数组要开的足够大。 #include <bits/stdc++.h> using namespace std; int main(){ int n,si
阅读全文
摘要:不知道出题人是不是有那个大病。 应该是测试点1,如果多次借,按照最后一次,多次还,按第一次。 注意四舍五入。还有就是getchar()把空格读了。 还有时间全换成了分钟60*小时+分钟。 #include <bits/stdc++.h> using namespace std; int main()
阅读全文
摘要:线程池 Java中的线程池是运用最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。 线程池的好处/作用: 1.不需要频繁的创建和销毁线程,提高相应速度 2.管理线程,避免无休止的创建线程导致资源枯竭。(不会每来一个任务就创建一个线程,线程不断的取任务执行) 线程池的方法有哪些 五
阅读全文
摘要:set #include <bits/stdc++.h> using namespace std; int main(){ int y,n;//从哪里,多少数字不同 cin >> y >> n; for(int i=y;;i++){ //y中多少数字不同 set<int> st; string s=
阅读全文
摘要:计算出行和列的大小,从最后一列往前填充。 #include <bits/stdc++.h> using namespace std; int main(){ int row; cin >> row; cin.get(); char input[100][100]; string cs; getlin
阅读全文
摘要:没技巧,纯暴力。 #include <bits/stdc++.h> using namespace std; vector<pair<int,string>> vec; int main(){ int n; cin >> n; int c[100]; fill(c,c+100,0); for(int
阅读全文
摘要:注意一下命名冲突的问题,index要么换名字要么写到局部变量。 #include <bits/stdc++.h> using namespace std; int arr[100],index2[100]; int main(){ string s,cy; cin >> s; cy =s; sort
阅读全文
摘要:星期1-7 对应的下标分别为0-6 星期和下标的关系是下标=星期-1 例输入的星期为d,那么后天所对应的下标为(d-1+2)%7,是星期(d-1+2)%7+1 #include <bits/stdc++.h> using namespace std; int main(){ int d; cin >
阅读全文
摘要:坑:输出五位数,注意补足位数。 #include <bits/stdc++.h> using namespace std; const int maxn = 100010; int a[maxn],c[maxn];//c记录是否已经输出过了 int main(){ int n,k,id,m,tmp;
阅读全文
摘要:第一次没AC,对题目有点误解。 我以为如果酒量是1,喝一杯就会倒下,实际上应该喝两杯才倒下,修改了判断条件,就过了。 #include <bits/stdc++.h> using namespace std; int main(){ int at,bt,n,a1,a2,b1,b2,x1=0,x2=0
阅读全文
摘要:注意sscanf的用法。 #include <bits/stdc++.h> using namespace std; int main(){ int xs,fz; string s; cin >> s; sscanf(s.c_str(),"%d:%d",&xs,&fz); if(xs>=0&&(xs
阅读全文
摘要:MD...提交过了好几次才通过。 第三个测试点: 需要使用long long,要求长整型。干脆就把int全部替换成long long。 第五个测试点: 随便试出来的,我输入了2 1/2 -1/2,发现啥都没打印出来。原来是忽略了结果是0的情况,如果整数部分和分子部分都是0,那么就把这个0打印出来,然
阅读全文
摘要:很容易发现,当层数是k的时候,这一层的有2k-1个。 结合数列求和公式,以及上下对称总的数量为(1+2k-1)k/22-1=2k*k-1 所以第一步计算出来多少层,就很好做了,第i层对应的空格数量就是层数-i。 代码: #include <bits/stdc++.h> using namespace
阅读全文
摘要:思路: BFS 这道题思路挺简单的。 每个被感染的设置被感染的时间,然后将其放到队列中。 已经被感染的就不要重复设置值了。 #include <bits/stdc++.h> using namespace std; const int maxn = 505; int n, m, a, b; pair
阅读全文
摘要:1.mysql是数据库,redis是数据库,那么什么时候使用应该使用哪种数据库? redis做缓存是为了缓解mysql的压力,在数据库表数据量上千万,并且访问频繁时,mysql压力增大,在有索引的情况下依旧效果不佳,需要使用redis,比如可将购物网站的热点数据提前放到redis当中。但redis是
阅读全文
摘要:记录一道线段树单点修改题目。 创建线段树的时间复杂度为O(n),每次查找和修改的时间复杂度均为O(logn) 代码: #include <bits/stdc++.h> using namespace std; const int maxn = 1e6 + 10; int arr[maxn], tre
阅读全文
摘要:思路: 记忆化搜索。和洛谷上那道括号匹配的题几乎是一样的。 x是当前剩余50的数量,y是剩余100的数量。 纯暴力三个点超时,所以每次DFS完了,把当前找到的方式数量记录下来,不再重复的去DFS。 代码: #include <bits/stdc++.h> using namespace std; l
阅读全文
摘要:今天记录一道并查集的题目。 思路: 枚举每一条铁路,假设去掉这条铁路,检测图中的n个地点是否还能连通。如果不能连通,说明需要炸掉这条路,如果能连通,说明去掉这条路并不影响连通性,就没必要把这条路炸了。 注意Union方法,如果x和y的根节点是一样的,直接return,否则就成环了。 注:vector
阅读全文
摘要:思路: 拒绝KMP,map+暴力+剪枝。 DFS(pos)表示检索到了s的pos位,枚举下一个位置,len从pos开始能截取的长度。 vis[pos]是否检索过这个位置,如果来过了,那就直接返回就好了,不要再重复的去枚举了。 #include <bits/stdc++.h> using namesp
阅读全文