Loading [MathJax]/extensions/TeX/mathchoice.js

Luogu P3773 [CTSC2017]吉夫特 题解

Link

Description

输入一个长度为 n 的数列 a1,a2,,an 问有多少个长度大于等于 2 的不上升子序列满足:

\Pi _{i=2}^{k} \binom{a_{b_{i-1}}}{a_{b_i}} \mod 2 = \binom{a_{b_1}}{a_{b_2}} \times \binom{a_{b_2}}{a_{b_3}} \times \cdots \binom{a_{b_{k-1}}}{a_{b_k}} \mod 2 > 0

Solution

根据 Lucas定理:当 p 为质数时,C_n^m \mod p \equiv C_{n\mod p}^{m \mod p} \times C_{n/p}^{m/p} \mod p

本题中 p2,也就是对 n,m 的二进制的每一位进行考虑。

因为,C_1^1=1,C_1^0=1,C_0^0=1,C_0^1=0

所以只要在任意组合数的二进制中存在一位 n_i = 0, m_i=1,那么就是不合法的,即 n\&m=m

所以相当于取出来一个子序列,使得 a_{i-1} \& a_i = a_{i-1},即 a_{i-1}\subseteq a_i

f_i 表示以 a_i 开头的合法子序列的数量,用桶记录一下每个 a_i 出现的位置,对于 f_i,枚举 a_i 的子集,判断位置是否在 i 后面,转移即可。

Code

#include <iostream>
#include <cstdio>

using namespace std;

const int N = 3e5;
const int p = 1e9 + 7;
int n, a[N], id[N], f[N], ans;

int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; i++)
        scanf("%d", &a[i]), id[a[i]] = i;
    for(int i = n; i >= 1; i--)
        for(int j = a[i] & (a[i] - 1); j; j = a[i] & (j - 1))
            if(id[j] > i) f[i] = (f[i] + f[id[j]] + 1) % p;
    for(int i = 1; i <= n; i++)
        ans = (ans + f[i]) % p;
    printf("%d\n", ans);
    return 0;
}
posted @   Acestar  阅读(63)  评论(0编辑  收藏  举报
编辑推荐:
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
阅读排行:
· 欧阳的2024年终总结,迷茫,重生与失业
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解
  1. 1 不可撤销乐队
  2. 2 小年兽 程嘉敏
  3. 3 迷人的危险3 FAFA
  4. 4 山楂树之恋 程佳佳
  5. 5 summertime cinnamons / evening cinema
  6. 6 不谓侠(Cover 萧忆情Alex) CRITTY
  7. 7 神武醉相思(翻自 优我女团) 双笙(陈元汐)
  8. 8 空山新雨后 音阙诗听 / 锦零
  9. 9 Wonderful U (Demo Version) AGA
  10. 10 广寒宫 丸子呦
  11. 11 陪我看日出 回音哥
  12. 12 春夏秋冬的你 王宇良
  13. 13 世界が終わるまでは… WANDS
  14. 14 多想在平庸的生活拥抱你 隔壁老樊
  15. 15 千禧 徐秉龙
  16. 16 我的一个道姑朋友 双笙(陈元汐)
  17. 17 大鱼 (Cover 周深) 双笙(陈元汐)
  18. 18 霜雪千年 双笙(陈元汐) / 封茗囧菌
  19. 19 云烟成雨(翻自 房东的猫) 周玥
  20. 20 情深深雨濛濛 杨胖雨
  21. 21 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  22. 22 斑马斑马 房东的猫
  23. 23 See You Again Wiz Khalifa / Charlie Puth
  24. 24 Faded Alan Walker
  25. 25 Natural J.Fla
  26. 26 New Soul Vox Angeli
  27. 27 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  28. 28 像鱼 王贰浪
  29. 29 Bye Bye Bye Lovestoned
  30. 30 Blame You 眠 / Lopu$
  31. 31 Believer J.Fla
  32. 32 书信 戴羽彤
  33. 33 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  34. 34 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  35. 35 慢慢喜欢你 LIve版 戴羽彤
  36. 36 病变 戴羽彤
  37. 37 那女孩对我说 (完整版) Uu
  38. 38 绿色 陈雪凝
神武醉相思(翻自 优我女团) - 双笙(陈元汐)
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 多益网络

作曲 : 小旭音乐

后期:珊瑚

夜色微凉 君独尝多情伤

天涯各一方 烛红剪西窗

晓露如霜 青河镇风铃响

神武情 花开共君享 对影亦成双

莫笑少年狂 只叹缘未央

纵枫红千里步他乡

梦中佳人 守望

情刻在心上

一笑倾城百里香

翩翩舞霓裳

一目山 水长

只影踏秋殇

三千繁华难阻挡

应君诺怎能 相忘

红袖添香 再挑灯抿红妆

素手拾月光 天涯两相望

明眸泪光 临仙镇轻声唱

雁南飞 年年影成双 带走你模样

思念随风漾 红尘人未葬

怎甘心年华似流光

梦中佳人 守望

情刻在心上

一笑倾城百里香

翩翩舞霓裳

一目山 水长

只影踏秋殇

相识相知相守望

白首共花黄

万水千山 难挡

梦觉在他乡

两情相悦自成双

素手织霓裳

月下红 颜妆

却为作嫁忙

神武天地满城芳

承君诺怎敢 相忘

点击右上角即可分享
微信分享提示