链接:https://ac.nowcoder.com/acm/contest/369/A

题目描述

若你摘得小的星星 你将得到小的幸福 
若你摘得大的星星 你将得到大的财富 
若两者都能摘得 你将得到永远的愿望 
摘星是罪孽的宽恕 摘星是夜晚的奇迹 
抓住它吧 你所期望的那颗星
无法触及,因而耀眼  
明明触及了,却还是耀眼

——《少女☆歌剧 Revue·Starlight》

题目描述

"我明白。"
作为这命运剧场永远的观众,小D一直注视着这片星光璀璨的舞台,舞台上,少女们的身姿演绎出了一幕幕动人的场景,令人回味无穷。
有的时候,小D也会自己写一些歌曲,来加入Starlight的剧本,使得剧本充满了新的生命力。
现在小D又要准备写乐谱了,小D写谱的方式比较独特。他会先写出一个按照音符出现顺序排成的序列,再进一步整合,每次整合会选取相邻的三个作为三和弦。整合次数无限。
小D选取的音符形如D5 F6这种形式,例如D5表示D大调sol(这里不考虑升降音)为了方便生成乐谱,他将这些音符进一步转化了,小D给C D E F G A B重新编号成了1 2 3 4 5 6 7,之后新的音符编号生成方式应为(字母对应的标号-1)*7+数字,例如 C7=(1−1)×7+7=7C7=(1−1)×7+7=7
但小D讨厌一些他所认为的不优美的和弦,因此他并不希望自己的谱子里面有可能出现这样的三和弦,也就说音符组成的序列里不应该存在他所讨厌的子段,假如C5 F1 A2这三个音符凑成的和弦小D不喜欢,那么序列里面就不能出现C5 F1 A2,C5 A2 F1,A2 C5 F1,A2 F1 C5,F1 A2 C5,F1 C5 A2这六种子段。
现在小D正在推算有多少合法的序列,答案对  109+7109+7 取模。
星屑飘洒的舞台上,可人绽放的爱之花,请努力让大家星光闪耀吧!

输入描述:

第一行为两个整数 n, q ,表示序列的长度和有多少和弦小D不喜欢.接下来 q 行,每行三个整数 a, b, c ,表示小D不想出现的和弦

输出描述:

一行一个整数,表示答案
示例1

输入

10 10
18 3 3
43 28 22
42 28 3
48 48 4
29 9 31
47 9 22
1 22 49
15 48 29
2 8 27
4 24 34

输出

382785822

题意:给你一个序列长度n,现在每一个位置都有49种方案可以填入,再给出q种不合法的方案 问有多少种可行方案结果对1e9+7取模思路: dp[i][k][l] 表示第i各位置放置 k和l两种音符  我们只需要枚举49^3种情况 对于 j k l 可行的情况 我们就有递推式dp[i][k][l]+=dp[i-1][j][k]其实这么看来问题就没那么复杂了
#include <cstdio>
#include <map>
#include <iostream>
#include<cstring>
#include<bits/stdc++.h>
#define ll long long int
#define M 6
using namespace std;
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
int moth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int dir[4][2]={1,0 ,0,1 ,-1,0 ,0,-1};
int dirs[8][2]={1,0 ,0,1 ,-1,0 ,0,-1, -1,-1 ,-1,1 ,1,-1 ,1,1};
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
int n,q;
ll dp[507][57][57];  //dp[i][k][l] 表示第i各位置放置 k和l两种音符
int a[50][50][50];
int main(){ios::sync_with_stdio(false);while(cin>>n>>q){memset(a,0,sizeof(a));for(int i=1;i<=q;i++){int ta,tb,tc;cin>>ta>>tb>>tc;a[ta][tb][tc]=1; a[ta][tc][tb]=1;a[tb][ta][tc]=1; a[tb][tc][ta]=1;    //对不可行方案进行标记 a[tc][ta][tb]=1; a[tc][tb][ta]=1;}for(int i=1;i<=2;i++)for(int j=1;j<=49;j++)for(int k=1;k<=49;k++)        //初始化 dp[i][j][k]=1;for(int i=3;i<=n;i++)for(int j=1;j<=49;j++)for(int k=1;k<=49;k++)for(int l=1;l<=49;l++){if(a[j][k][l]) continue;    dp[i][k][l]=(dp[i][k][l]+dp[i-1][j][k])%mod;    //如果是可行方案则 jk的后面就可以是l
                    }ll ans=0;for(int i=1;i<=49;i++)for(int j=1;j<=49;j++){ans=(ans+dp[n][i][j])%mod;}cout<<ans<<endl;}
}

转载于:https://www.cnblogs.com/wmj6/p/10386359.html

牛客练习赛40 A 小D的剧场 (思维dp)相关推荐

  1. 牛客练习赛40 A.小D的剧场

    链接:https://ac.nowcoder.com/acm/contest/369/A?&headNav=acm 来源:牛客网 题目描述 "我明白." 作为这命运剧场永远 ...

  2. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  3. 牛客练习赛44 C 小y的质数 (数论,容斥定理)

    链接:https://ac.nowcoder.com/acm/contest/634/C 来源:牛客网 题目描述 给出一个区间[L,R],求出[L,R]中孪生质数有多少对. 由于这是一个区间筛质数的模 ...

  4. 牛客练习赛44 B 小y的线段 (思维)

    链接:https://ac.nowcoder.com/acm/contest/634/B 来源:牛客网 题目描述 给出n条线段,第i条线段的长度为a_ia i ​ ,每次可以从第i条线段的j位置跳到第 ...

  5. 牛客练习赛44 A 小y的序列 (模拟,细节)

    链接:https://ac.nowcoder.com/acm/contest/634/A 来源:牛客网 小y的序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  6. 牛客练习赛96 C小y的序列

    链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给出长度为nnn的序列a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​及一个数kkk,定义一段 ...

  7. 牛客练习赛 4 A-Laptop (线段树,思维/GTMD普通前缀和也能求)

    链接:https://ac.nowcoder.com/acm/contest/16/A?&headNav=www 来源:牛客网 题目描述 FST是一名可怜的小朋友,他很强,但是经常fst,所以 ...

  8. 牛客练习赛81 B. 小 Q 与彼岸花(FWT nlogn做法)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://ac.nowcoder.com/acm/contest/11171/B ...

  9. 牛客练习赛10 B栈和排序【思维】

    题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序列 输入描述: 第一行一个数n 第二行n个 ...

  10. 牛客练习赛 25 E题 定向 【桥 + 思维】 无向图定方向变强连通图

    传送门 题意: 给定一个无向图, 然后你要给这幅图每条边加上一个方向, 使得这个图是有向图强连通 思路: 关键在于如何判断无解的情况, 如果能保证当前的图有解, 那么直接dfs一下就可以出答案. 仔细 ...

最新文章

  1. Python网络编程(4)——异步编程select epoll
  2. 关于正则表达式匹配任意字符
  3. oss客户端工具_干货 | 基于Go SDK操作京东云对象存储OSS的入门指南
  4. ssl提高组周六备考赛【2018.10.27】
  5. java arraylist 合并_在Java中将两个arrayList合并到一个新的arrayList中,没有重复且没有顺序...
  6. php变量有三种不同的作用域,PHP中变量类型与转换,变量的检测以及变量的作用域学习--2018年4月13日12时03分...
  7. 方格取数 (Standard IO)
  8. 管理对象空间——管理存储参数
  9. ACM之八数码问题----BFS搜索----数独游戏的模拟(下)
  10. 光电整纬机(日本世联电子株式会社)
  11. 编程基本功:找到问题的合理解释,才算解决问题
  12. 服务器支持vrrp,【交换机在江湖对接案例】配置VRRP备份组对接NLB服务器群集示例(通过物理链路环回方法)...
  13. 2012第二届GIS制图大赛——公开课技术问题答疑(珍贵资源哦!)
  14. 高响应比优先调度算法和短作业优先调度算法
  15. WPA无线密码破解利器EWSA/跑包软件
  16. retinaface代码讲解_Pytorch-RetinaFace 详解
  17. 谷歌浏览器不能用_正在用 Chrome 或 Edge 浏览器的你,不能错过这亿个好用插件...
  18. c#自定义类的指定字段排序
  19. mongo启动报错:ERROR: child process failed, exited with error number 1
  20. 数据通信是计算机网络最基本功能,计算机网络最基本的功能是数据通信和()。A.打印文件B.文件调用C.降低成本D.资源共享...

热门文章

  1. 掌握这些,你也可以是年薪百万的项目经理
  2. Popsicle攻击事件复盘分析 | 零时科技
  3. RocketMQ消息消费三:负载均衡
  4. 在字节做前端一年后,有啥收获~
  5. 安永与BSN建立合作伙伴关系,提供区块链解决方案
  6. NLP迁移学习——迁移学习的概念与方法
  7. ubuntu开启远程访问
  8. JAVA-无敌神兔-兔子繁衍(斐波那契数列)
  9. mysql ado.net 连接_ADO.NET 中用于与 MYSQL 数据源建立连接的对象是( )_学小易找答案...
  10. 《Linux操作系统 - RK3568开发笔记》第2章 固件下载