浙江集训(4.17-4.18)

T1:
对无向图每条边定向,使新图为DAG的方案数。

1<=n<=40

考虑容斥dp

每次选取一个独立集加进去,然后给边定向。

发现会算重,于是给一个 − 1 ∣ V ∣ + 1 -1^{|V|+1} 1V+1的系数,可以用 ∑ i = 1 n C n i ∗ ( − 1 ) i = 1 \sum_{i=1}^nC_{n}^i*(-1)^i=1 i=1nCni(1)i=1来感性理解。

T2:
即每条长度的链有多少条和上一次分裂后的两条链的长度是多少,暴力hash+宽搜即可。

因为状态只有5w+,复杂度 O ( 5 w ∗ 36 ) O(5w*36) O(5w36)

T3:
先判断有没有解?
有一个greedy做法:
区间按最端点排序,一次确定1…n每个点分配的区间。
每次就取左端点<=它的,右端点最小的和它匹配,并删掉,用堆维护。

考试这里居然直接排序匹配,没有用堆维护,然后后面全部挂了。

然后思考对i这个点换一个区间,换了之后有解的条件是什么。

设R[i]表示区间左端点<=i的个数。

不然发现只要使所有i-R[i]一直保持>=0即可。

可以用线段树维护这个过程。

T4:
扫描线+树链剖分+不下传标记线段树

T5:
大概要求这个:
( a x + b ) / k i + 1   m o d   k i &lt; = c (ax+b)/k^{i+1}~mod~k^i&lt;=c (ax+b)/ki+1 mod ki<=c
( a x + b ) / k i + 1 &lt; ( k i ∗ ( c + 1 ) ) (ax+b)/k^{i+1}&lt;(k^i*(c+1)) (ax+b)/ki+1<(ki(c+1))
( a x + b ) / k i + 1 − ( a x + b − k i ∗ ( c + 1 ) ) / k i + 1 (ax+b)/k^{i+1}-(ax+b-k^i*(c+1))/k^{i+1} (ax+b)/ki+1(ax+bki(c+1))/ki+1

类欧即可,但是b’<0,要向-∞取整,但是最小不超过-1,找到最小x’使ax’+b>=0即可。

i = l o g k 1 e 18 i=log_{k}^{1e18} i=logk1e18时, k i + 1 k^{i+1} ki+1爆long long,发现是最后一位,所以不需要 m o d k i mod k^{i} modki,可以直接统计。

T6:
考虑从大区间转移到小区间。

就是线段树可以维护的事了(小转移到大只有10分呜呜)


发现总是距离正解差一丢丢,再接再厉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值