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

  • \(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. 使用 JsonSchema 校验 JSON数据

    有时候JSON 数据格式需要校验是否合法,我们可以使用 JsonSchema 来校验数据是否合法. 引入 pom.xml https://json-schema.org/ <dependency ...

  2. Java 设计模式——从冰雪经济看设计模式的综合运用(工厂、单例、策略、观察者)

    当冬季的寒风拂过大地,冰雪经济如同一颗璀璨的明珠,在寒冷中散发着炽热的魅力.滑雪场.冰雕展.冰雪主题酒店等各类冰雪产业蓬勃发展,其背后的运营逻辑和策略,与 Java 设计模式有着奇妙的相似之处,为我们 ...

  3. Chats 开发指南

    Chats 开发指南 欢迎使用 Chats!在我上一篇博客 https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro 中,我介绍了 Chats ...

  4. Excel使用IF{1,0}虚拟数组+VLOOKUP实现联合查询

    以此案例举例: 使用IF({1,0})建立虚拟数据的方法,整体输入的公式是: =VLOOKUP(E2&F2,IF({1,0},A:A&B:B,C:C),2,0) 输入完公式之后,需要按 ...

  5. 关于 K8s 的一些基础概念整理-补充【k8s系列之五】

    〇.前言 本文继续整理下 K8s 的一些基础概念,作为前一篇概念汇总的补充. 前一篇博文链接:https://www.cnblogs.com/hnzhengfy/p/k8s_concept.html. ...

  6. 【Java】获取近六个月的年月

    数据库里面存储的字段类型就是varchar,数据格式就是类似2024-12这样的年月格式. 目标: 以当前月份为标准,向前获取近6个月的年月(year_month)形成列表 // 获取近6个月的年月列 ...

  7. Qt通用方法及类库9

    函数名 //字节数组转Ascii字符串 static QString byteArrayToAsciiStr(const QByteArray &data); //16进制字符串转字节数组 s ...

  8. 安装Visual Studio2015后找不到C++项目模板解决办法

    安装Visual Studio2015后找不到C++项目模板解决办法: 方法1:您可以通过修改Visual Studio来完成此操作,并且可以使用以下步骤完成此操作:1.转到"添加或删除程序 ...

  9. Android Studio中使用Java+OpenGL ES创建Android项目

    首先是使用android studio生成空白的模板文件,包含一个MainActivity文件, 在onCreate方法中参照如下注释进行修改: package com.example.wang.an ...

  10. 即时通讯技术文集(第44期):微信、QQ技术精华合集(Part1) [共14篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第44 期. [-1-]  微信朋友圈千亿访问量背后的技术挑战和实践总结 [链接] http:/ ...