【NOIP模拟】20/02/15

T 1 T1 T1

  • T ≤ 1 e 3 T\le 1e3 T1e3 L , R ≤ 1 e 18 L,R\le 1e18 L,R1e18 K ≤ 100 K\le 100 K100
  • 考虑数位 d p dp dp f u , K , a , b f_{u,K,a,b} fu,K,a,b 表示到第 u u u 位,奇偶位的和为 a , b a,b a,b 的个数
    如果每一次做一遍的复杂度是 O ( T ∗ 8 1 2 ∗ 18 ∗ 10 ) O(T*81^2*18*10) O(T8121810),10 是转移复杂度,凉凉
    于是按照套路预处理出 f f f,复杂度 O ( 18 ∗ 8 1 3 ∗ 10 ) O(18*81^3*10) O(1881310),然后看询问怎么做
    我们每次钦定当前位填的数 < < < 那一位的数,做完之后钦定当前位顶满做下一位就可以把 < < < 某个数的幸运数个数求出了,这样复杂度是 O ( 18 ∗ 10 ) O(18*10) O(1810)
  • 主要是预处理过后快速询问比较巧妙, C o d e Code Code

T 2 T2 T2

  • T ≤ 10 , n ≤ 400 , m ≤ 500 T\le 10,n\le 400,m\le 500 T10,n400,m500
  • 费用流模型显然:把在集合中的贡献先全部加上,那么选一个集合中的点的费用就是负数,原点向 m m m 个点连费用为其本身费用的边, m m m 个点向 n n n 个能匹配就连边, n n n 个点向汇点连边
    根据模拟费用流的那套理论,与原点汇点相连的边不会退流,那么我们可以贪心
    按权值为第一关键字,大小为第二关键字按顺序插入,用匈牙利算法判断能不能放进去
    其实就是用匈牙利模拟费用流解决字典序的问题,最坏的复杂度是 O ( T m 3 ) O(Tm^3) O(Tm3),严重不满, C o d e Code Code

T 3 T3 T3

  • n ≤ 40 , T ≤ 50 n\le 40,T\le 50 n40,T50
  • 本来以为要用个啥高级算法结果是搜索剪枝
    考场写了个按度数排序每次 r a n d o m   s h u f f l e random\ shuffle random shuffle 的大数据随机化小数据搜索的做法,结果只有 50 50 50
    考下来面向数据编程可以把随机化卡成极限 90 90 90
    题解用了两个剪枝,一个是最优性剪枝(废话),一个是每个连通块处理(这个也随便卡),所以这道题就没什么意思了。
    如果要随机化的话可以状压存边 O ( n ) O(n) O(n)做一遍,大概可以做 8000 8000 8000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值