首先,我们对这个幸运数进行分析,发现:

  • \(10^9\) 以内只有 \(1023\) 个幸运数,即 \(\sum\limits_{i=0}^92^i\) 个。

考虑对幸运数和非幸运数分类讨论。

  1. 幸运数部分:

    01 背包裸题,\(dp_{i,j}\) 表示前 \(i\) 个幸运数里选了 \(j\) 个,转移方程为 \(dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}\times num_i\),可滚动数组。
  2. 非幸运数部分

    设选了 \(j\) 个幸运数,一共有 \(m\) 个非幸运数,则有 \(C_m^{k-i}\) 种可能性。

所以答案就是 \(\sum\limits_{i=0}^{\min(l,k)}dp_{l,i}\times C_m^{k-i}\),其中 \(l\) 为幸运数的种类数。

时间复杂度 \(O(l^2+n)\)。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll p=1e9+7;
const int N=1e5+5,M=1025;
ll qpow(ll x,int y){
ll re=1;
while(y){
if(y&1) re=re*x%p;
x=x*x%p;
y>>=1;
}return re;
}int n,k,m,l;
ll jc[N],inv[N],dp[M],num[M],ans;
unordered_map<int,int>a;
void init(){
jc[0]=inv[0]=1;
for(ll i=1;i<=n;i++){
jc[i]=jc[i-1]*i%p;
inv[i]=qpow(jc[i],p-2);
}
}ll C(int x,int y){
if(x<y) return 0;
return jc[x]*inv[y]%p*inv[x-y]%p;
}int check(int x){
while(x){
int y=x%10;
if(y!=4&&y!=7)
return 0;
x/=10;
}return 1;
}int main(){
cin>>n>>k;
init();
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(check(x)){
if(!a[x]) a[x]=++l;
num[a[x]]++;
}else m++;
}dp[0]=1;
for(int i=1;i<=l;i++)
for(int j=min(i,k);j;j--)
dp[j]=(dp[j]+dp[j-1]*num[i])%p;
for(int i=0;i<=min(l,k);i++)
ans=(ans+dp[i]*C(m,k-i))%p;
cout<<ans;
return 0;
}

CF145C Lucky Subsequence 题解的更多相关文章

  1. CodeForces 146E Lucky Subsequence(组合数+DP)

    题目描述 Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers w ...

  2. CodeForces 146E - Lucky Subsequence DP+扩展欧几里德求逆元

    题意: 一个数只含有4,7就是lucky数...现在有一串长度为n的数...问这列数有多少个长度为k子串..这些子串不含两个相同的lucky数... 子串的定义..是从这列数中选出的数..只要序号不同 ...

  3. [LeetCode] Is Subsequence 题解

    前言 这道题的实现方法有很多,包括dp,贪心算法,二分搜索,普通实现等等. 题目 Given a string s and a string t, check if s is subsequence ...

  4. Hdoj 1159.Common Subsequence 题解

    Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...

  5. LuoguP7059 [NWRRC2015]Lucky Chances 题解

    Content 有一个名叫 Lucky chances 的游戏,游戏一开始给出一个 \(r\times c\) 的矩阵,你可以选定矩阵中任意一个元素以及上.下.左.右四个方向中的任意一个方向进行游戏. ...

  6. CF808A Lucky Year 题解

    Content 年份中有不超过 \(1\) 个非 \(0\) 数字的年份是幸运年份.现给出当前年份 \(n\),求到下一个幸运年份还要等多久. 数据范围:\(1\leqslant n\leqslant ...

  7. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  8. 【AtCoder】AGC026 题解

    A - Colorful Slimes 2 找相同颜色的一段,然后答案加上段长除2下取整 代码 #include <iostream> #include <cstdio> us ...

  9. [Leetcode] Longest Palindromic Subsequence

    Longest Palindromic Subsequence 题解 题目来源:https://leetcode.com/problems/longest-palindromic-subsequenc ...

  10. Codeforces Round #104 (Div. 1)

    A.Lucky Conversion 题意 给定两个长度为 \(N(N \le 10^5)\) 且由4和7构成的 \(a, b\)串 对 \(a\) 可以有两种操作: 交换两个位置的字符; 改变一个位 ...

随机推荐

  1. 鸿蒙NEXT开发案例:经纬度距离计算

    [引言] 在鸿蒙NEXT平台上,我们可以轻松地开发出一个经纬度距离计算器,帮助用户快速计算两点之间的距离.本文将详细介绍如何在鸿蒙NEXT中实现这一功能,通过简单的用户界面和高效的计算逻辑,为用户提供 ...

  2. 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术

    转载自 http://www.pengzhihui.xyz/2020/07/02/foc/ 前言前阵子工作太忙,好久没做个人项目了,最近久违地想做一个机器人项目,设计中需要用到高性能超小体积的伺服电机 ...

  3. RocketMQ系列3:核心技术介绍

    1 介绍 RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题.队列.消息.生产者.消费者.消费者分组以及订阅关系.以下是对这些核心技术的详细说明: 2 核心技术实现 2.1 ...

  4. Qt设置运行时动态库路径的几点说明

    随着需求的不断增加,程序不断变大,用到的动态库也越来越多,到了发布程序的时候你会发现和可执行文件同一目录下文件数量真多(比如著名的金融软件 https://www.webull.com/ 哎呀我去,目 ...

  5. Qt编写地图综合应用52-加载离线地图

    一.前言 离线地图的加载其实和在线地图的加载方法几乎一样,唯一的最大区别就是,之前可能一个js文件引入即可,现在需要多个本地的js文件引入,而且网上流传的js文件的版本比较旧,意味着现在新版的支持op ...

  6. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v7.0版已发布

    关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持 UDP .TCP .WebSocket 三种协议,支持 iOS ...

  7. ICML 2022 | Graph Machine Learning 论文分享

    ICML 2022 | Graph Machine Learning 论文分享 国际机器学习大会(International Conference on Machine Learning,简称ICML ...

  8. Windows安全加固(一)

    目录: 1.在win ser2016中如何管理重命名administrator,禁用GUEST 2.禁用GUEST账户 3.系统不显示上次登录的账户名. 4.清理系统无效账户. 5.按用户类型分配账号 ...

  9. ofd文件拆分合并思路探索 -- 附下载程序

      前言  ofd文件拆分合并会在多个场合用到,但市面上此类工具并不多.拆分和合并虽然为两个功能,但从编程角度考虑,其处理思路有相同之处.文章就以合并为例,讲一下处理思路.作者也写了一个拆分合并小工具 ...

  10. springboot集成webService开发详解

    https://blog.csdn.net/m0_51111980/article/details/124581559https://blog.csdn.net/qq_43842093/article ...