日记
这一次我要逆风翻盘,这一次也要感受弯道超车是什么感觉
7.2
(半小时日记打卡之——暑假第一天)
日程
八点四十起床
九点出门
九点半做了统筹计划
十点~十二点学习树状数组
下午了解扣子开发工作流(虽然还是没懂)+ VP了一场(一个小时多)
晚上跑步三公里 + 俯卧撑40个 + 仰卧起坐30个 + 平板支撑1.30 + 上下蹲40个
晚上单词10个新+60个旧(有点放松,明天开始好好读)
具体心得
树状数组的总结:
今天写的四个树状数组的题目
一个求是两端大小比中间大,和两端大小比中间小的总数:这个题目的特点在于,要构造两个数组,然后进行组合数学的求解(即乘积)
一个是正常的树状数组板子:直接套
一个是正常的线段树的板子但是用树状数组去解:思路是:通过构建一个前缀和tr1数组(后期要乘上x, x是行数),然后构建一个前缀和tr2数组(是要删除的掉的多余的东西比如第一列会删掉一个多余的a[1],第二列会删掉多余的两个a[1],一个a[2])这个题目的核心关键是在于当时没有区分开树状数组前缀和的累加(以为会一直累加,然后导致重复,后来才发现,树状数组在创建的时候就没有把所有的东西加在一起
一个是以前做过的一个题目:牛的身高,给出前面的比他矮的牛的个数,求排列,怎么说呢,这个题第一眼就是一个优先队列(bushi),后来仔细回忆了一下之前的做法,先进行赋值,对于tr来说,tr[i] = lowbit(i)
,这样对于query(i)查询就能查到i(初始时),然后在查的时候就是差当前比a[i](前面比他小的数还剩几个),通过二分去遍历query(i)(i从1~n)
总而言之:树状数组的功能是单点查询和区间修改
AcWing 242. 一个简单的整数问题 - AcWing
AcWing 243. 一个简单的整数问题2 - AcWing
VP的感觉:
div2的一场Dashboard - Educational Codeforces Round 167 (Rated for Div. 2) - Codeforces,被d队友狠狠锤爆了
B都不会写了,实际上是一个字符串的题,一个字串和一个子序列,需要构建一个最小长度的串满足这两个条件,其实一眼就想到了把字串作为第一重循环,子序列作为第二重循环,但是我没想清楚是字串一直在动,而子序列先静观其变,毁了
AC一眼,但是Cwa了一发else条件没写全+R了一发数组开了500但是2e5
扣子的总结:
还是得多了解其他已经开发过的工具,不然还挺难写的,感觉虽然是个工作流却要自己去想流程
到这里吧,困了,吃了一颗褪黑素(没吃过想试试,但是还真有点用)
还得是你啊