一、本周小結
1.手速賽dayday,難度有點大啊....
2.百度之星+1
3.兩場周賽,尊邸,很多啊!!!!
4.收穫++:
- 区间的数字中包含x的个数,先暴力求每个数字是否符合条件 ---> 前缀和计算区间个数
- 小数的除法计算=含小数的分数化简---->几位小数x*1ek化成整数,再分子分母求gcd,a/gcd(a,b) / b/gcd(a,b)
- 并查集,归属集合AorB,不可归属A的归属到n+1,不可归属B的,归属到0,若p[0]==p[n+1]说明有数字不归属A显示归属到n+1,且不归属B,n+1归属到0。
- tips:下标来进行归属的单位,而不是父亲结点--->子找父,父认祖归宗!
- 矩阵求abs(derx+dery)的可以计算行和列的总值再计算----> 数学式子的合并与拆分
- 下午cf也遇到了一个a1-a2>=b1-b2 ---> 可以拆成a1-b1>=a2-b2 ----> 只需要竖着减就可以了---->原味也是同样的道理
- 排列组合的题目:c(m-1,n-1)*m!
- 长度为n的数列能否分成两组,使得两组的奇偶性一致:1.有奇有偶 ----> 奇数个奇数不行;2、全奇--->奇数个奇数不行 ;3.全偶 ---> 都可以
- cnt1,cnt2,判断数量 / 和为奇数,不行! 其他可以
- 四舍五入,遇到>=5的数字,前一位+1,后面归0:从后往前遍历,前面的能五入就尽量五入,前面的值尽可能增到最大,如果不能五入就不用管
- 预处理s,使s是原来数字进行四舍五入后的结果,再用ans来存储答案,从前往后遍历,若数字五入使前一个数值增加,且退出,若没有则原数字存入。
- 每一对cp比较挑出较小值存入数组b中,那么较小值从小到大排序,它的个数就是贡献的数量,有t个,数组往前移动t个点,再更新数字
- 数学式子的交换律+入度为0的点,也就是值最大的点的个数
- a1+a2<=k ------>转换为求最短路,虚点连接所有点,2指向1,求最短路!
5.下周計劃:刷爆ccf真題!
6.預告周一收穫++:
1.思考問題不是從算法推思路,而是看著題目要求什麽來想最簡單最暴力的辦法是什麽,然後再想可以怎麽優化這個寫法。比如:
- AcWing 3192. 出现次数最多的数 878人打卡
題目:
给定 n个正整数,找出它们中出现次数最多的数。
如果这样的数有多个,请输出其中最小的一个。
數據範圍:
1≤n≤1000,
1≤si≤10000;数据范围很小,O(N)一遍也就10000。用最简单的存数字来遍历个数。
- AcWing 3193. ISBN号码 769人打卡
马蜂的改变--->重复次数>=2次的变量存一下好用---->在原始字符串上改变一个字符然后输出
- AcWing 3194. 最大的矩形 705人打卡
数据范围
1≤n≤1000,
1≤hi≤10000O(N^2)也才1e6---->大可从点为中间开始往左,往右遍历寻找边界
tips:优化:一开始的思路的思路很乱,想着第i点的左边如果比它高可行,比它矮,不可行,遇到矮的点死翘翘,甚至说思路很歪,但是如果稍微拐一拐,我们也能成的,怎么说。已经想到了要从第i点的左右两边开始找,且我们也知道了就像水桶问题一样,每一次我们都把第i个高度当成短板,也就是左边的数值只能>=hi,遇到<hi的数值【我要当菜鸡,休想争!】就停止。右边同理。这类问题由于变化多样性,我们要从多样中找一个固定的可以涵盖所有情况的数据,那么就是遍历一遍每一个点的高度的最大面积是多少【目前学到的简单dp也是这样子,用一个状态来遍历使得涵盖所有的情况,再从所有情况里面取最优解】那么,每次为了满足短板而舍弃长板的行为,难道不就是!!!单调栈!让原本凹凸不平的数据,我栈内的数据一定要单调递增,如果无法让即将进入的元素与前面的形成递增,含泪舍去!
用vector<int>q来实现单调栈要注意:是q.back()而不是front!!!!!
用stack<int>q来实现单调栈要注意:是while不是if!!!!!
- AcWing 3195. 有趣的数 482人打卡
数据范围:4≤n≤1000 可以O(n^2)解法来求C(n,m);
for(int i=0;i<=n;i++) for(int j=0;j<=i;j++) { if(j==0) c[i][j]=1; else c[i][j]=c[i-1][j]+c[i-1][j-1]; }
这是一道组合数的题目:好妙的求C(n,m)的办法--->C(n,m)=C(n-1,m)+C(n-1,m-1);O(N^2)可以求C(n,m)!
插入插入插入.....0,1组合一共占k个坑,2,3组合只有n-k个坑可以占,由于0不能在开头,第1个坑一定属于2,3组合so....选择的方案数有C(n-1,k),01组合内部的0又可能可以有【1,2,3,4,.....n-1】个一共k-1种,23组合同理有(n-k-1)种,所以总共就是C(n-1,k)*(k-1)*(n-k-1)咯!
- AcWing 3196. I’m stuck! 394人打卡
和百度之星的A,B从不同起点开始,求共同到终点的最少消耗的题目注意区分,上一题从终点到其他点的路径的方向是双向边,a->b,一定有b->a,但是这一题是:a是可以左右,b是可以四周,如果b->a合理,那么a->b是否合理,若合理那么a是合法的,若不合理,那么a是不合法的。从x,y到a,b是否合理用check(x,y,i)。从x,y能否有a,b这条路径来到用check(a,b,i)。
有趣!