LG5196 「USACO2019JAN」Cow Poetry 背包+乘法原理
\(\mathrm{Cow Poetry}\)
问题描述
题解
因为每句诗的长度一定是\(k\),所以自然而然想到背包。
设\(opt[i][j]\)代表到第\(i\)位时,结尾为\(j\)的方案数。
背包,注意\(\mathrm{DP}\)顺序为先枚举\(i\),后枚举单词。(Debug了一小时就因为这个)
然后乘法原理统计答案即可。
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
void read(int &x){
x=0;char ch=1;int fh;
while(ch!='-'&&(ch>'9'||ch<'0')) ch=getchar();
if(ch=='-') ch=getchar(),fh=-1;
else fh=1;
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
x*=fh;
}
void fr(int &x){
char ch=1;
while(!(ch>='A'&&ch<='Z')) ch=getchar();
x=ch-'A'+1;
}
const int mod=1000000007;
const int maxn=5003;
const int maxm=100100;
int n,m,k;
int s[maxn],c[maxn];
int e[maxn];
int opt[maxn][maxn],sum[maxm];
void Init(){
read(n);read(m);read(k);
for(int i=1;i<=n;i++){
read(s[i]);read(c[i]);
}
for(int i=1;i<=m;i++){
fr(e[i]);
}
}
void dp(){
sum[0]=1;
for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++){
if(i<s[j]) continue;
opt[i][c[j]]=(opt[i][c[j]]+sum[i-s[j]])%mod;
sum[i]=(sum[i]+sum[i-s[j]])%mod;
}
}
}
int tot,cnt[27];
int ksm(long long x,int p){
long long ret=1;
while(p){
if(p&1) ret=ret*x%mod;p>>=1;
x=x*x%mod;
}
return ret;
}
void Work(){
dp();
long long ans=0,sum=1;
for(int i=1;i<=m;i++) ++cnt[e[i]];
for(int i=1;i<=26;i++){
if(!cnt[i]) continue;
ans=0;
for(int j=1;j<=n;j++){
if(!opt[k][j]) continue;
ans=(ans+ksm(opt[k][j],cnt[i]))%mod;
}
sum=sum*ans%mod;
}
printf("%lld\n",sum);
}
int main(){
freopen("poetry.in","r",stdin);freopen("poetry.out","w",stdout);
Init();Work();
fclose(stdin);fclose(stdout);
return 0;
}
LG5196 「USACO2019JAN」Cow Poetry 背包+乘法原理的更多相关文章
- 「POJ3613」Cow Relays
「POJ3613」Cow Relays 传送门 就一个思想:\(N\) 遍 \(\text{Floyd}\) 求出经过 \(N\) 个点的最短路 看一眼数据范围,想到离散化+矩阵快速幂 代码: #in ...
- LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组
\(\mathrm{Sleepy Cow Sorting}\) 问题描述 LG5200 题解 树状数组. 设\(c[i]\)代表\([1,i]\)中归位数. 显然最终的目的是将整个序列排序为一个上升序 ...
- LOJ#2552. 「CTSC2018」假面(期望 背包)
题意 题目链接 Sol 多年以后,我终于把这题的暴力打出来了qwq 好感动啊.. 刚开始的时候想的是: 设\(f[i][j]\)表示第\(i\)轮, 第\(j\)个人血量的期望值 转移的时候若要淦这个 ...
- BZOJ1688 「USACO05OPEN」Disease Manangement 背包+状压DP
问题描述 BZOJ1688 题解 背包,在转移过程中使用状压. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; ...
- 【LOJ】#2523. 「HAOI2018」奇怪的背包
题解 复杂度怎么算也要2s的题怎么0.5s就跑完了,迷啊 这个题简直算完复杂度不敢写,写了就赚飞了好吧 根据裴蜀定理,显然选出的数和P的gcd是w的约数 我们考虑枚举\(P\)的约数,上限当然是\(\ ...
- LG5202 「USACO2019JAN」Redistricting 动态规划+堆/单调队列优化
问题描述 LG5202 题解 \[opt[i]=xx+(cnt[i]-cnt[yy]<=0)\] 发现\(cnt[i]-cnt[yy] <= 0\)只能有两种取值 于是直接堆优化即可 \( ...
- LG5201 「USACO2019JAN」Shortcut 最短路树
\(\mathrm{Shortcut}\) 问题描述 LG5201 题解 最短路树. 显然奶牛的路径就是从\(1\)走到各个草地,于是从\(1\)跑最短路,构建最短路树. 为了保证字典序,从\(1\) ...
- 【LibreOJ】#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop 线段树+完全背包
[题目]#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop [题意]给定一个长度为n的物品序列,每个物品有价值.不超过m的重量.要求支持以下三种操作:1.物品价值区间加减,2.物 ...
- 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序
[题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...
随机推荐
- 剑指offer笔记面试题6----从未到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值.链表节点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext; } 测试用例: 功能测 ...
- c++11 auto 与auto& 遍历vector区别
目录 说明 c++11 auto 与auto& 遍历区别 今天被这个问题坑了一天,一直以为是算法错了,debug了一天,最后暴力生成数据才发现,测试代码如下: 说明 转载请注明出处:https ...
- pgwSlideshow.js
<!DOCTYPE html> <html> <head id="Head"> <meta http-equiv="Conten ...
- [20191122]oracel SQL parsing function qcplgte.txt
[20191122]oracel SQL parsing function qcplgte.txt --//昨天看了链接:https://nenadnoveljic.com/blog/memory-l ...
- PHP三元运算符的写法
(expr1) ? (expr2) : (expr3); //php三元运算符的写法 $status = 3; $info2 = $status == 1 ? '待处理' : '已处理'; echo ...
- C# WPF 解决方案MineRealms启动器 自动随机播放音乐的代码
//Nothing //Nothing string[] files = Directory.GetFiles(Path.GetDirectoryName(App.config.MainConfigP ...
- 使用python执行系统命令——subprocess
背景:subprocess是python官方推荐调用系统命令的模块 import subprocess subprocess最主要的两个方法/类: # 参数说明:stdin和stdout相当于一个管 ...
- angularjs link compile与controller的区别详解,了解angular生命周期
壹 ❀ 引 我在 angularjs 一篇文章看懂自定义指令directive 一文中简单提及了自定义指令中的link链接函数与compile编译函数,并说到两者具有互斥特性,即同时存在link与c ...
- PostgreSQL 安装 & 用户配置
一.为什么选择 PostgreSQL 自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. MySQL被oracle收购,innodb随之被oracle控制. 二 ...
- iOS的常用类库
target 'NewCompass' do #UI通用 pod 'SVProgressHUD' pod 'MJRefresh' pod 'SnapKit' #pod 'RTRootNavigatio ...