2018.12.17-2018.12.23做题记录

30 篇文章 0 订阅
17 篇文章 0 订阅

坚持高效的想题!

周一&&周二

学习了在树上查距离一个点距离为k的联通块的技巧:
动态点分治,注意往上查的时候要去重
例题:bzoj

做了一些月赛题:
bzoj 5075:很巧妙的题。m=1时,分类讨论n%3=1,2,0,发现中间的数都是可以确定的。m>1时可以对每行求和,压缩成只有一列的情况,所以中间的地雷数是确定的。
写错了几个细节,要了数据才看出来。写题的时候要全神贯注!

bzoj 5076:带修改主席树,每个点的价值是i-pre[i],也可以转化成带修改二维数点用cdq做

[Lydsy1806月赛]:
bzoj 5386:按照题目给出的构造,发现答案=p - 2^(log2§).
bzoj 5387:把树分层,从外向内“剥”,选前[k/2]层,外层点一定比内层点多,k为奇数可以多选一个
bzoj 5388:直接枚举质数,暴力即可
bzoj 5390:离线,把询问按r排序。x<y时,对每个数枚举约数,维护当前倍数出现的最晚时间。x>y倒着做一遍

codeforces:
1088 F
注意看对题!
题意中保证对任意x,存在y,a[x]>a[y]。可以发现,从最小值开始,树上的权值是递增的。
然后就是每个点只会选它连出最小的边,一定连向祖先,恰好能构成树。最小的边倍增求即可

833 B
题意:把n个数分成k部分,使得每部分价值之和最大。每部分的价值为不同数的个数
直接dp,用线段树维护转移。加入一个新的数,把pre[a[i]]+1,i的权值+1

ACS 9
题解先留坑。

总结:想题10道,真的太少了。写了几道也非常低效。应该想更多的题,抓紧更多的时间。
遇到应该立即写的题,理清细节再写。尽量把题目堆到周末写、现阶段尽力多深入思考!

周三和周四

[Lydsy1806月赛]:
bzoj 5789: 把一个点不能呆的区间分段,求每段中的最短路。用dij更新,除第一段外只需要更新一次,就一定是最优解。O(10(n+q)log)
bzoj 5791:DP[i][j][0,1],表示重量为i,j号物品,是否封口,用是否封口来枚举添加物品的可能性。也可以直接前缀和优化
bzoj 5792:显然字符集=1最优,答案就是出现次数最少的字母(根据抽屉原理,这是下界)
bzoj 5793:把长度为k的合法路径看成k对x和x+1. F(u,v)=长度-(x,x+1)对数,对每条边,使相应的F+1,对每个x,x+1,找到他们在树中的位置,变成矩形加,查询有多少个为0(区间最小值)的点。扫描线做到O(nlogn)
bzoj 5794:求区间最远点对,数据随机。凸包上只有logn个点,合并凸包用归并排序做到O(点数)。然后用st表加log块大小的分块(黑科技),使预处理和查询总共合并凸包的次数降为线性。这个方法可以用于O(n)预处理+查询求区间最大值只要是不支持差分,但是可以加重的不带修改的查询都可以这么做

关于合并凸包

  1. 直接归并极角序
  2. 用求桥的方法方法介绍
    关于凸包的更多知识留坑待学

[Lydsy1705月赛]:
bzoj 4878:
bzoj 4879:
bzoj 4880:
bzoj 4882
bzoj 4817:
bzoj 4819:

才想了10道!写了1题还WA了没调完
总结:这两天看题的效率仍然不高,学习的时间也不够多。真的要抓紧时间!要是浪费了时间,就再也无法挽回!
并且,想题的时候还要更加深入些。不要慌着想下一道。定时休息,不要“做最后一题的无用功!”
想题的时候对于题目、数据的各种性质都要考虑,尽量打开思维,不止会做经典模型,还要能够发现题目背后的条件和性质,大胆的才结论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值