\(\mathrm{Cow Poetry}\)

问题描述

LG5196

题解

因为每句诗的长度一定是\(k\),所以自然而然想到背包。

设\(opt[i][j]\)代表到第\(i\)位时,结尾为\(j\)的方案数。

背包,注意\(\mathrm{DP}\)顺序为先枚举\(i\),后枚举单词。(Debug了一小时就因为这个)

然后乘法原理统计答案即可。

\(\mathrm{Code}\)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. void read(int &x){
  4. x=0;char ch=1;int fh;
  5. while(ch!='-'&&(ch>'9'||ch<'0')) ch=getchar();
  6. if(ch=='-') ch=getchar(),fh=-1;
  7. else fh=1;
  8. while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
  9. x*=fh;
  10. }
  11. void fr(int &x){
  12. char ch=1;
  13. while(!(ch>='A'&&ch<='Z')) ch=getchar();
  14. x=ch-'A'+1;
  15. }
  16. const int mod=1000000007;
  17. const int maxn=5003;
  18. const int maxm=100100;
  19. int n,m,k;
  20. int s[maxn],c[maxn];
  21. int e[maxn];
  22. int opt[maxn][maxn],sum[maxm];
  23. void Init(){
  24. read(n);read(m);read(k);
  25. for(int i=1;i<=n;i++){
  26. read(s[i]);read(c[i]);
  27. }
  28. for(int i=1;i<=m;i++){
  29. fr(e[i]);
  30. }
  31. }
  32. void dp(){
  33. sum[0]=1;
  34. for(int i=1;i<=k;i++){
  35. for(int j=1;j<=n;j++){
  36. if(i<s[j]) continue;
  37. opt[i][c[j]]=(opt[i][c[j]]+sum[i-s[j]])%mod;
  38. sum[i]=(sum[i]+sum[i-s[j]])%mod;
  39. }
  40. }
  41. }
  42. int tot,cnt[27];
  43. int ksm(long long x,int p){
  44. long long ret=1;
  45. while(p){
  46. if(p&1) ret=ret*x%mod;p>>=1;
  47. x=x*x%mod;
  48. }
  49. return ret;
  50. }
  51. void Work(){
  52. dp();
  53. long long ans=0,sum=1;
  54. for(int i=1;i<=m;i++) ++cnt[e[i]];
  55. for(int i=1;i<=26;i++){
  56. if(!cnt[i]) continue;
  57. ans=0;
  58. for(int j=1;j<=n;j++){
  59. if(!opt[k][j]) continue;
  60. ans=(ans+ksm(opt[k][j],cnt[i]))%mod;
  61. }
  62. sum=sum*ans%mod;
  63. }
  64. printf("%lld\n",sum);
  65. }
  66. int main(){
  67. freopen("poetry.in","r",stdin);freopen("poetry.out","w",stdout);
  68. Init();Work();
  69. fclose(stdin);fclose(stdout);
  70. return 0;
  71. }

LG5196 「USACO2019JAN」Cow Poetry 背包+乘法原理的更多相关文章

  1. 「POJ3613」Cow Relays

    「POJ3613」Cow Relays 传送门 就一个思想:\(N\) 遍 \(\text{Floyd}\) 求出经过 \(N\) 个点的最短路 看一眼数据范围,想到离散化+矩阵快速幂 代码: #in ...

  2. LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组

    \(\mathrm{Sleepy Cow Sorting}\) 问题描述 LG5200 题解 树状数组. 设\(c[i]\)代表\([1,i]\)中归位数. 显然最终的目的是将整个序列排序为一个上升序 ...

  3. LOJ#2552. 「CTSC2018」假面(期望 背包)

    题意 题目链接 Sol 多年以后,我终于把这题的暴力打出来了qwq 好感动啊.. 刚开始的时候想的是: 设\(f[i][j]\)表示第\(i\)轮, 第\(j\)个人血量的期望值 转移的时候若要淦这个 ...

  4. BZOJ1688 「USACO05OPEN」Disease Manangement 背包+状压DP

    问题描述 BZOJ1688 题解 背包,在转移过程中使用状压. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; ...

  5. 【LOJ】#2523. 「HAOI2018」奇怪的背包

    题解 复杂度怎么算也要2s的题怎么0.5s就跑完了,迷啊 这个题简直算完复杂度不敢写,写了就赚飞了好吧 根据裴蜀定理,显然选出的数和P的gcd是w的约数 我们考虑枚举\(P\)的约数,上限当然是\(\ ...

  6. LG5202 「USACO2019JAN」Redistricting 动态规划+堆/单调队列优化

    问题描述 LG5202 题解 \[opt[i]=xx+(cnt[i]-cnt[yy]<=0)\] 发现\(cnt[i]-cnt[yy] <= 0\)只能有两种取值 于是直接堆优化即可 \( ...

  7. LG5201 「USACO2019JAN」Shortcut 最短路树

    \(\mathrm{Shortcut}\) 问题描述 LG5201 题解 最短路树. 显然奶牛的路径就是从\(1\)走到各个草地,于是从\(1\)跑最短路,构建最短路树. 为了保证字典序,从\(1\) ...

  8. 【LibreOJ】#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop 线段树+完全背包

    [题目]#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop [题意]给定一个长度为n的物品序列,每个物品有价值.不超过m的重量.要求支持以下三种操作:1.物品价值区间加减,2.物 ...

  9. 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序

    [题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...

随机推荐

  1. MySQL 是如何处理死锁的

    MySQL(InnoDB)是如何处理死锁的 一.什么是死锁 官方定义如下:两个事务都持有对方需要的锁,并且在等待对方释放,并且双方都不会释放自己的锁. 这个就好比你有一个人质,对方有一个人质,你们俩去 ...

  2. pyecharts画图总结

    pyecharts 画图归纳 将本地文件导入到Pyecharts: test = open(filename, 'r') data = test.readlines() test.close() 如果 ...

  3. Hadoop生态体系组件

    目录: 一.本地数据集上传到数据仓库Hive 二.Hive的基本操作 三.Hive.Mysql.HBase数据互导 正文: 一.本地数据集上传到数据仓库Hive 1.实验数据集的下载 2.数据集的预处 ...

  4. druid链接数据库

    所用jar包 commons-beanutils-1.8.0.jarcommons-logging-1.1.3.jardruid-1.0.9.jarmysql-connector-java-5.1.1 ...

  5. 发送RCS 消息摘录相关成功log

    //11-25 16:48:09.612102  2175  2726 I BugleDataModel: PendingMessagesProcessor: process from InsertN ...

  6. ActiveMQ下载与安装(消息中间件JMS)

    下载 官方网站下载:http://activemq.apache.org/ 1.3.2安装(Linux) (1)将apache-activemq-5.12.0-bin.tar.gz 上传至服务器 (2 ...

  7. windows系统搭建zookeeper

    安装&配置 在apache的官方网站提供了好多镜像下载地址,然后找到对应的版本 下载地址: http://mirrors.cnnic.cn/apache/zookeeper/zookeeper ...

  8. Python升级后ssl模块不可用问题解决和浅析

    在Cent0S 7.5下将Python 2.7.5升级到Python 3.6.6后,发现ssl模块不可用,具体详细信息如下所示: [root@db-server ~]# pip list Packag ...

  9. spring+cxf No bean named 'cxf' available

    最近项目中需要用到webservice,在spring中集成cxf时一直报错: 严重: StandardWrapper.Throwable org.springframework.beans.fact ...

  10. windows重装系统后grub引导菜单修复方法(亲自实验过)

    问题: 电脑安装的是windows7+ubuntu 15.10双系统.windows重装后,grub引导界面消失. 解决方法有两大步: 1.进入ubuntu; 2.在ubuntu中修复grub. 一. ...