yxy小菊蒻的201130总结
2020.11.30 周一
我!终于!把儒略日补了!
为什么突然想起要补一个月前的 c s p csp csp 题呢?
原因是今天的 T 1 T1 T1 也是个模拟日期的题 但是比儒略日简单
细想儒略日恶心在哪里?
- 年月日的推算是分开的 并且年有正负
- 公元前和公元后判断闰年方法不同 1582年前后判断闰年方法也不同
- 1582年有十天被删除
- 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) 是好的,当且仅当:
- x,y 为祖先后代关系;
- a x a_{x} ax^ a y = f x − f y a_{y} = f_x − f_y ay=fx−fy;
现在仙人掌想知道对多少个点对是好的。
有个结论 x ⊕ y ≤ x + y x\oplus y\le x+y x⊕y≤x+y
所以合法的点对满足
f x − f y ≤ a x + a y f_x-f_y\le a_x+a_y fx−fy≤ax+ay
f x − f y − a x ≤ a y f_x-f_y-a_x\le a_y fx−fy−ax≤ay
有一个性质是
对于同一个 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 级别的
然后正解就是暴力加剪枝