舔狗舔到最后一无所有

感谢博主 :https://blog.csdn.net/qq_51282224/article/details/122638737
链接:https://ac.nowcoder.com/acm/contest/24213/1002

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

输入描述:
多组样例
第一行一个整数T(1<=T<=20)代表测试样例数
接下来t行每行一个整数n,代表Trote_w要请forever97吃n天饭(1<=n<=100000)

输出描述:
输出T个整数代表方案数,由于答案太大,你只需要输出mod 1e9+7 后的答案即可。
示例1
输入

2
3
500

输出

24
544984352

dp思路

因为题目要求连续三天不去同一家,所以我们只需要考虑第i-1天和i-2天情况即可

状态表示:
f[0/1/2][i]前i天去第0/1/2家购买方案

状态计算
f[0][i]=f[1][i-1]+f[2][i-1]+f[1][i-2]+f[2][i-2]

f[1][i]=f[0][i-1]+f[2][i-1]+f[0][i-2]+f[2][i-2]

f[2][i]=f[1][i-1]+f[0][i-1]+f[1][i-2]+f[0][i-2]

然后观察发现i - 1天和i - 2天的方法都被用了两次,所以转化为一维

二维dp

#include <iostream>
using namespace std;typedef long long ll;
const ll mod = 1e9 + 7;
const int maxn = 1e5 + 10;
ll f[3][maxn];
int t, n;int main(){cin >> t;while(t --){cin >> n;f[0][0] = f[1][0] = f[2][0] = 0;f[0][1] = f[1][1] = f[2][1] = 1;f[0][2] = f[1][2] = f[2][2] = 3;for(int i = 3;i <= n;i ++){f[0][i]=(f[1][i-1]+f[2][i-1]+f[1][i-2]+f[2][i-2])%mod;f[1][i]=(f[0][i-1]+f[2][i-1]+f[0][i-2]+f[2][i-2])%mod;f[2][i]=(f[1][i-1]+f[0][i-1]+f[1][i-2]+f[0][i-2])%mod;}cout << (f[0][n]%mod+f[1][n]%mod+f[2][n]%mod)%mod << endl;}return 0;
}

一维dp

#include <iostream>
using namespace std;typedef long long ll;
const ll mod = 1e9 + 7;
const int maxn = 1e5 + 10;
ll f[maxn];
int t, n;int main(){cin >> t;while(t --){cin >> n;f[0] = 0;f[1] = 3;f[2] = 9;for(int i = 3;i <= n;i ++){f[i] = (f[i - 1] * 2 + f[i - 2] * 2) % mod;}cout << f[n] << endl;}return 0;
}

舔狗舔到最后一无所有 (线性dp)相关推荐

  1. 牛客:【2021秋季算法入门班第七章习题:动态规划1】部分题解:方块与收纳盒、舔狗舔到最后一无所有、可爱の星空、[NOIP1999]拦截导弹

    题单链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)  P1001 方块与收纳盒 传送门:1001-方块与收纳盒_2021秋季 ...

  2. 牛客动态规划基础题单 1002 舔狗舔到最后一无所有

    递推动规 题目链接:舔狗舔到最后一无所有 题目大意:有三种外卖可以任意点,但要求不能连续三天点同一种外卖,问点n天外卖有多少种可行的方案. dp数组: f[i]:第i天买1号外卖的方案数,由于买2,3 ...

  3. 动漫界的五大舔狗 舔龟双面、舔猫Tom、舔羊阿沸、卑微正男、舔虎小黑

    舔羊阿沸-沸羊羊: <喜羊羊与灰太狼>中的配角,身材健硕,头脑一根筋.一直喜欢羊村里的美羊羊,而美羊羊却一直喜欢喜羊羊.美羊羊是一个著名的绿茶双标女,同样是打架,在她眼里喜羊羊是帅气,沸羊 ...

  4. 刷题记录:牛客NC20875舔狗舔到最后一无所有

    传送门:牛客 题目描述: 作为队伍的核心,forever97很受另外两个队友的尊敬. Trote_w每天都要请forever97吃外卖,但很不幸的是宇宙中心forever97所在的学校周围只有3家fo ...

  5. 舔狗舔到最后一无所有(简单动态规划)

    首先看题 不多说废话,直接上思路: 设三中爱吃的外卖为a,b,c; 如果第i天吃a,若第 i-1 天吃a,则 i-2 天一定吃b或者c,若第 i-1天吃b或者c,则 i-2 天吃什么都行. 如果第i天 ...

  6. 舔狗【2019河北省大学生程序设计竞赛 J题】

    题目描述 > "舔狗舔狗, > 舔到最后, > 一无所有." 有 n 只舔狗,每只舔狗的心中都有自己朝思暮想的一位. 每个人虽然受到了一万次拒绝,还毅然第一万零一 ...

  7. 他被女朋友拉黑后,写了个“舔狗”必备神器

    在一个阳光明媚的清晨,我打开窗户呼吸了一口新鲜空气.阳光灿烂,岁月静好,又是一个约女朋友出去爬山吃饭看电影的好日子. 图片来自包图网 想到女朋友的大眼睛,我脸上不禁洋溢起了幸福的微笑.打开微信,给女朋 ...

  8. java代码打出一只狗_牛逼!这位程序员开发出一“舔狗”必备神器(代码已开源)!...

    在一个阳光明媚的清晨,我打开窗户呼吸了一口新鲜空气.阳光灿烂,岁月静好,又是一个约女朋友出去爬山吃饭看电影的好日子.想到女朋友的大眼睛,我脸上不禁洋溢起了幸福的微笑. 打开微信,给女朋友发出去一个美好 ...

  9. 我开发了一款软件,完成了舔狗的绝地反杀(代码开源)!

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

最新文章

  1. Pinterest 谈实战经验:如何在两年内实现零到数百亿的月访问
  2. 理解Linux中断 (2)【转】
  3. 【Android基础】点击Back键退出应用程序
  4. msm8909相关事宜
  5. 你需要培养科研必备的10项能力
  6. java中的console是干什么的_[Java教程]javascript中,你真的会用console吗?
  7. Linux下基于eclipse的arm开发环境的建立
  8. 常用web服务列表(三)
  9. Android之Intent传递数据
  10. VB 去除文本框粘贴功能
  11. 曾经使用过的chart控件(mschart,XCL-Chart,vue-echart)
  12. tikz包 安装_LaTeX安装宏包
  13. arccatalog点要素显示不完_利用ArcCatalog 管理地理空间数据库
  14. Python: pandas中ix的详细讲解
  15. RT-Thread柿饼控件(3)-- Canvas
  16. 17届技术报告 | 杭电四轮点此一队
  17. Android开发者如何搭建服务器
  18. 超融合与传统架构特性及收益详细对比
  19. python中级11面向对象中
  20. hihoCoder:#1082 然而沼跃鱼早就看穿了一切

热门文章

  1. android emoji 转字符串,android Emoji的处理
  2. 抽象类与接口有什么异同?
  3. 计算机左边不显示桌面按键,显示桌面图标不见了怎么办?快捷键是什么?电脑开机不显示桌面。...
  4. vue实现消息badge 标记_Badge 标记
  5. B2B策划书:在线B2B行业小额批发平台
  6. Linux中用tar包配置samba,Linux建域使用samba(二)——安装Samba
  7. 网安-windows提权-3389.bat
  8. 小说里的编程 【连载之七】元宇宙里月亮弯弯
  9. 红米k40怎样开启NFC步骤分享
  10. 模拟电路设计(17)---典型RC正弦波振荡器