随笔分类 - 算法
随手写的
摘要:https://www.acwing.com/problem/content/description/4871/似乎没什么好办法,只能暴搜了,bfs对于那么多状态的搜索容易tle(bfs会把所有状态都彻底搜索一遍,相比dfs不方便剪枝,但是硬剪也可以)但是单纯的用dfs也应该会tle,但是可以用剪枝
阅读全文
摘要:https://www.acwing.com/problem/content/4870/ 简单签到题求大于n的被k整除的最小数1e9要求O(logN)或者O(1)那么就是从数学角度上想了数学角度可以画个数轴要让x>n且是k的倍数,只要看n是k的多少倍就行,n/k下取整就是n有多少个k,又因为x只能取
阅读全文
摘要:https://www.acwing.com/problem/content/1248/求最短的序列,我们知道整个序列的其中几个数数列不确定,公差不确定,需要确定参数总项数为(数列末端-数列首端)/d 求出中间有多少个d, 然后再加1就得到总项数了要使这个公式最小,那么数列末端要尽可能小,数列首端要
阅读全文
摘要:https://www.acwing.com/problem/content/3732/一维差分,要点是题目给的v数组一开始为空的,可以认为v数组一开始全为0,有n个0(因为加入了n个数),要满足题意得用循环模拟不断往v数组中加入数在加入数的途中不断的构造差分数组,每次加入一个数都去判断是否满足有a
阅读全文
摘要:https://www.acwing.com/problem/content/846/经典bfs虽然是bfs但是我还是要走一遍dfs啊(剑魔音)?还是老老实实走bfs吧 #include<iostream> #include<queue> #define x first #define y seco
阅读全文
摘要:https://www.acwing.com/problem/content/3505/dfs搜索,要点就是要判重,我首先用的数组模拟判重,但是数据量一大就会SE,后面就用哈希表了 #include<iostream> #include<unordered_set> using namespace
阅读全文
摘要:https://www.acwing.com/problem/content/1237/均值不等式贪心 #include<iostream> #include<algorithm> #include<cmath> using namespace std; const int N = 5e5+10;
阅读全文
摘要:https://www.acwing.com/problem/content/845/ 经典暴搜题,有多种写法,这里用dfs按行搜索用col,dg,udg确定此位置是否可以放棋子,对于dg,udg,有斜率为1,-1的直线方程,根据截距的不同可以确定不同的直线按行搜索,可以不用row,因为每行只会放一
阅读全文
摘要:https://www.acwing.com/problem/content/114/典型区间贪心题目要求寻找最少雷达摆放数,范围覆盖所有岛读题后一开始想的是雷达放在x轴何处,但是这样直接想太难了,而且有关于圆的操作,不利于判断于是转换角度(改变主体),从岛的角度看,雷达可以摆在x轴的那些地方,这样
阅读全文
摘要:https://www.acwing.com/problem/content/description/124/求最小代价,且数据范围为1e6,大概是O(N)或O(NlogN),大概就是排个序,贪心一般都是排序设定每个小朋友给出的为xi,有如图 最后判断式子最小,只需要排序后ci都确定在数轴的位置上,
阅读全文
摘要:二维差分模板题https://www.acwing.com/problem/content/800/同一维差分一样的思想,重要的也是时刻保证a[i]=b[0]+b[1]+...+b[i]在二维则是:a[i][j]=b[0][0]+b[0][1]+...b[0][n]+b[1][0]+b[1][2]+
阅读全文
摘要:https://www.acwing.com/problem/content/799/ 差分模板题差分就是前缀和的逆运算,重要的是时刻确保a[i]=b[0]+b[1]+.....+b[i],这是差分的规定关键是构造b数组,可以在输入数据的时候b[i]=a[i]-a[i-1]这样构造要使得一个区间的所
阅读全文
摘要:https://www.acwing.com/problem/content/1232 一眼前缀和,但是似乎只能优化到O(N^2),1e5的数据会超时,如果在比赛中到是可以抢一些分枚举左端点和右端点找出所有的i,j组合,判断组合是否满足%k==0 #include<bits/stdc++.h> us
阅读全文
摘要:好久没写算法题了,先写个语法题练练手https://www.acwing.com/problem/content/description/758/ 思路就是模拟,由于需要按照题目要求的顺序(蛇形)去递增这个num就不能简单用两个for,那样的顺序是流式的,一层一层刷过去的可以用个i和j指针来表示当前
阅读全文
摘要:这js是真的难写啊!!!!!!https://www.acwing.com/problem/content/729/ let fs = require('fs'); let buf = ''; process.stdin.on('readable', function() { let chunk =
阅读全文
摘要:最近数据结构课设写完了,答辩的时候老师问到了,为什么INF要设置为0x3f?我这直接不假思索地回答,0x3f3f3f3f超过了int范围,基本上可以视为无穷 可真的是这样吗?答辩完后我仔细想了想,用计算器算了一下0x3f3f3f3f没超过int范围啊!而且如果超了int范围那就溢出了!那为什么要用0
阅读全文
摘要:https://www.acwing.com/problem/content/106/ 这一眼看过去是个数学题,解方程即可设个x为仓库地址,然后x-a[i]进行求和,枚举每个位置求最小总距离,复杂度有点高,过不了,但是可以试试 #include<iostream> #include<algorith
阅读全文
摘要:贪心模板题思考这题之前,首先需要明确一点:对于任何买卖操作,即便跨了n天也是一样,都可以拆分成如图的形式{(at,at+1),(at2,at2+1)....,(atk,atk+1)},这样的集合,即可以拆分成跨度都为1天的小买卖这样的集合中每项元素可正可负,值即为a(i+1)-a(i)的数值,后一天
阅读全文
摘要:https://www.acwing.com/problem/content/1209/ #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; const int
阅读全文
摘要:https://www.acwing.com/problem/content/3420/ 一眼dp,但是还是先走个暴搜看看,开始的时候我这样想,由于天平两边都可以称,需要减的操作,数组无法存储负数下标,于是我这里加了个偏移量100000,于是只过了一半的数据233(但是实际上小于0的下标不需要计算,
阅读全文

浙公网安备 33010602011771号