传送门:牛客

题目描述:

作为队伍的核心,forever97很受另外两个队友的尊敬。
Trote_w每天都要请forever97吃外卖,但很不幸的是宇宙中心forever97所在的学校周围只有3家forever97爱吃的外卖。
如果Trote_w给forever97买了别家的外卖,forever97就会大喊“我不吃我不吃”。
但是forever97又不喜欢连续三天吃一种外卖。
如果Trote_w哪天忘了这件事并且三天给他买了同一家外卖,那么forever97就会把Trote_w的头摁进手机屏幕里。
作为Trote_w的好朋友,你能告诉他连续请forever97吃n天饭,有多少不同的购买方法吗?
输入:
2
3
500
输出:
24
544984352

[题外话]:标题好评!!!

对于这道题,emmm,应该是能看出来是一道dp题的,接下来的问题就是如何推出我们的dp方程了.

我们仔细的分析一下题意就能发现前后是存在关系的:

我们假设dp[i][j]代表第j天吃第i中外卖的总方法(包括前面的)

那么对于第j-1来说存在两种情况,假设我们的第j-1天是和第j天一样的,那么第j-2天肯定就不能和其一样了,那么假设此时i=0,此时我们就有dp[1][j-2]+dp[2][j-2]中方法

假设我们的第j-1天与我们的第j天并不是一样的,那么贡献就是dp[1][j-1]+dp[2][j-1]即可,因为第三天不需要管前面的情况

所以我们就可以得到这样的一个dp方程:

dp[0][j]=dp[1][j-2]+dp[2][j-2]+dp[1][j-1]+dp[2][j-1]

接下来直接递推即可,注意边界

一维数组优化:在我们的推理过程中我们还会发现其实在第j天吃任何食物的种类数是一样的,因此我们可以将其压缩成一维,但是对于这道题不优化照样能过,下面就不给出优化代码了

注意需要使用long long和取模

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <stack>
#include <deque>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x = 0, w = 1;char ch = getchar();for (; ch > '9' || ch < '0'; ch = getchar()) if (ch == '-') w = -1;for (; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';return x * w;
}
#define maxn 1000000
#define ll_maxn 0x3f3f3f3f3f3f3f3f
const double eps = 1e-8;
int T;
ll dp[4][100010];
const int mod=1e9+7;
int main() {memset(dp, 0, sizeof(dp));dp[0][0] = dp[1][0] = dp[2][0] = 0;dp[0][1] = dp[1][1] = dp[2][1] = 1;dp[0][2] = dp[1][2] = dp[2][2] = 3;for(int i=3;i<=100000;i++) {dp[0][i]=(dp[1][i-2]+dp[2][i-2]+dp[1][i-1]+dp[2][i-1])%mod;dp[1][i]=(dp[0][i-2]+dp[2][i-2]+dp[0][i-1]+dp[2][i-1])%mod;dp[2][i]=(dp[0][i-2]+dp[1][i-2]+dp[0][i-1]+dp[1][i-1])%mod;}T=read();int num;for(int i=1;i<=T;i++) {num=read();cout<<(dp[0][num]%mod+dp[1][num]%mod+dp[2][num]%mod)%mod<<endl;}return 0;
}

刷题记录:牛客NC20875舔狗舔到最后一无所有相关推荐

  1. 刷题记录:牛客NC24608[USACO 2011 Ope S]Learning Languages

    传送门:牛客 题目描述: [USACO11OPEN]Learning Languages S 农夫约翰的 N ( 2 < = N < = 10 , 000 ) N(2<=N<= ...

  2. 刷题记录:牛客NC20811蓝魔法师

    传送门:牛客 题目描述: "你,你认错人了.我真的,真的不是食人魔."--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不 同当且仅当存在 ...

  3. 刷题记录:牛客NC16129小小粉刷匠

    传送门:牛客 题目描述: "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边开心地刷着墙",兴致突然被打断,"小名,你今天如果刷不 完这一栋楼的 ...

  4. 刷题记录:牛客NC17889新建 Microsoft Office Word 文档

    传送门:牛客 题目描述: CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office W ...

  5. 刷题记录:牛客NC23049华华给月月准备礼物

    传送门:牛客 题目描述: 二月中旬虐狗节前夕,华华决定给月月准备一份礼物.为了搭建礼物的底座,华华需要若干根同样长的木棍.华华手头上有一些长度参差不齐的木棍,他想将每根都裁剪成若干段自己想要的长度,并 ...

  6. 刷题记录:牛客NC17193简单瞎搞题

    传送门;牛客 题目描述: 一共有 n个数,第 i 个数是 xi xi 可以取 [ l i , r i ] [li , ri] [li,ri] 中任意的一个值. 设 S = ∑ x i 2 S = \s ...

  7. 刷题记录:牛客NC16122郊区春游

    传送门:牛客 题目描述: 今天春天铁子的班上组织了一场春游,在铁子的城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi, 路费是Ci.经过铁子和顺溜的提议,他们决定去其中的R个郊区玩耍(不考 ...

  8. 刷题记录:牛客NC24083Greedy Gift Takers

    传送门:牛客 题目描述 Farmer John's nemesis, Farmer Nhoj, has NNN cows (1≤N≤1051 \leq N \leq 10^51≤N≤105), con ...

  9. 刷题记录:牛客NC15162小H的询问

    传送门:牛客 题目描述: 小H给你一个数组{a},要求支持以下两种操作: 1. 0 l r(1<=l<=r<=n),询问区间[l,r]中权值和最大的有效子区间的权值和,一个子区间被认 ...

最新文章

  1. gatsby_将您的GraphCMS数据导入Gatsby
  2. S2S ×××如何穿越NAT
  3. 去除警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
  4. DB2 9 利用启示(733 测验)认证指南,第 7 部分: Java 编程(5)
  5. 使用 laravel 命令安装 Laravel
  6. pthread异步_探索 Flutter 异步消息的实现
  7. Service生命周期
  8. UI Startup analysis - sap.ui.core.Core what js files are loaded
  9. 玩转GIT系列之【git submodule update出错提示子模组未对路径注册】
  10. MySQL 左右两表比较问题
  11. Spark机器学习(7):KMenas算法
  12. idea文件为橙色去掉版本控制
  13. Android GsmCellLocation.getCellLocation返回NULL
  14. 开启本地git权限_Git入门使用和常见操作
  15. python在工程管理专业的应用_工程大数据在水利工程建设管理的应用
  16. withRouter有什么用?干嘛用?为啥要用它啊???一分钟理解!
  17. 推荐视频反馈系统设计
  18. 确定有限自动机DFA和非确定有限自动机NFA
  19. 如何恢复微信聊天记录,3个简单方法
  20. 机器学习过程步骤总结

热门文章

  1. 第十三届蓝桥杯大赛 python B组题解交流
  2. Python打印九九乘法表---左上三角、左下三角、右上三角、右下三角形格式
  3. 后悔没早点开源自己的这个仓库
  4. java 教师工资管理系统_java教师工资管理系统完整代码.doc
  5. 【C++】学籍信息管理
  6. asobject java_函数即对象(FunctionAsObject)- Martin Fowler博客
  7. Linux安装MySQL的小波折
  8. 新浪微博、微信朋友圈、qq空间分享---qq空间分享
  9. 使用线性回归、LGBM对二手车价格进行预测
  10. 树莓派2代通过人体红外感应器控制继电器