yxy小菊蒻的201130总结

2020.11.30 周一

我!终于!把儒略日补了!

为什么突然想起要补一个月前的 c s p csp csp 题呢?

原因是今天的 T 1 T1 T1 也是个模拟日期的题 但是比儒略日简单

细想儒略日恶心在哪里?

  1. 年月日的推算是分开的 并且年有正负
  2. 公元前和公元后判断闰年方法不同 1582年前后判断闰年方法也不同
  3. 1582年有十天被删除
  4. 1582年后闰年方法繁琐

麻烦吗 真的麻烦 所以我让它一直咕着的

今天的 T 1 T1 T1 是可以一天一天跳的

于是乎我突然联想起儒略日

那么儒略日这道题是不是也可以一天天跳呢

我只需要把繁琐的地方都一天接一天跳过

呃。。。好像真就可以一天天跳(直接懵

然后直接跳过上面四个恶心的地方 然后随便找个四百年周期第一天算答案

然后总结与一下今天上午的考试

挂分 120 120 120

T 2 T2 T2 从100分挂成10分

由于今天没有大样例 且我只测了一组小样例

小样例小成什么样呢? 就是这个

输入

1 2
#.

输出

1 2

相当于啥呢 相当于我编译过了就直接交了

啊这啊这 还是。。太自信了

还有30分是过失性错误

C

张三需要你构造一些长度为 n 的,由数字 0 到 9 构成的序列 a。张三对这个 序列有 m 个限制,每个限制由一组[l,r]组成,表示序列 a 需满足 a[l]×a[l+1]×…… ×a[r] mod 6=0。

现在张三想知道,存在多少个符合限制条件的序列 a,答案对 1000000007 取 模。

一眼就看出来是 d p dp dp

考场上想的 d p dp dp 状态是 f i , j , k f_{i,j,k} fi,j,k 表示依旧填了 i i i 个数 且满足从 j j j i i i 的积至多是 k k k 的倍数的方案数 ( k = 1 , 2 , 3 , 6 ) (k=1,2,3,6) k=1,2,3,6

但是是不行的 我期间也质疑过是不是 d p dp dp 状态想错了 但是又想不到合适的状态就咕咕了

正解是先想出来 O ( n 3 ) O(n^3) O(n3) 的做法 然后加以优化

正确的状态是 f x , i , j f_{x,i,j} fx,i,j 表示 已经填了前 x x x 项,上一个被 2 2 2 整除的数在位置 i i i ,上一个被 3 3 3 整除的数在位置 j j j 的方案数

想出这个状态依旧成功一大半了 后面的转移很简单就不说了

D

从前有一颗仙人掌,它想可持久化,但是这太难了,于是它干脆不做仙人掌 了,退化成了一棵以 1 为根的有根树。

树总共有 n n n 个点,树上每个点都有一个权值 a i a_i ai,我们设 f i f_i fi 表示以 i i i 为根的子树 中 a j a_j aj 的和,

点对 ( x , y ) (x,y) (x,y) 是好的,当且仅当:

  1. x,y 为祖先后代关系;
  2. a x a_{x} ax^ a y = f x − f y a_{y} = f_x − f_y ay=fxfy

现在仙人掌想知道对多少个点对是好的。

有个结论 x ⊕ y ≤ x + y x\oplus y\le x+y xyx+y

所以合法的点对满足

f x − f y ≤ a x + a y f_x-f_y\le a_x+a_y fxfyax+ay

f x − f y − a x ≤ a y f_x-f_y-a_x\le a_y fxfyaxay

有一个性质是

对于同一个 x x x 满足上式的 y y y 的个数是 log ⁡ \log log 级别的

证明:

如果 y 1 y_1 y1 合法 那么它的儿子节点若合法必须满足 a y 2 > a y 1 a_{y_2}>a_{y_1} ay2>ay1

y 2 y_2 y2 的二儿子节点 y 3 y_3 y3 若合法必须满足 a y 3 > a y 1 + a y 2 a_{y_3}>a_{y_1}+a_{y_2} ay3>ay1+ay2

由此可见对 a a a 的要求是指数级别递增的

很显然所有合法的 y y y 一定是祖先后代的关系 所以 y y y 的个数是 log ⁡ \log log 级别的

然后正解就是暴力加剪枝

posted @ 2022-10-10 20:19  缙云山车神  阅读(17)  评论(0编辑  收藏  举报