【题目链接】:http://hihocoder.com/problemset/problem/1482

【题意】

【题解】



递推题.

每次增加3个字符中的一个;然后根据下面这个数组递推;

递推方式看程序

  1. //边界f[1][0] = 1,f[1][2]=1,f[1][6] = 1;
  2. //f[i][0]最后一个字符是‘O’,没有'A'
  3. //f[i][1]最后一个字符是'O',有一个'A'
  4. //f[i][2]最后一个字符是’L',连续1个L,没有'A'
  5. //f[i][3]最后一个字符是’L',连续2个L,没有'A'
  6. //f[i][4]最后一个字符是’L',连续1个L,有'A'
  7. //f[i][5]最后一个字符是’L',连续2个L,有'A'
  8. //f[i][6]最后一个字符是'A',有'A'

【Number Of WA】



0



【完整代码】

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define lson l,m,rt<<1
  4. #define rson m+1,r,rt<<1|1
  5. #define LL long long
  6. #define rep1(i,a,b) for (int i = a;i <= b;i++)
  7. #define rep2(i,a,b) for (int i = a;i >= b;i--)
  8. #define mp make_pair
  9. #define pb push_back
  10. #define fi first
  11. #define se second
  12. #define ms(x,y) memset(x,y,sizeof x)
  13. typedef pair<int,int> pii;
  14. typedef pair<LL,LL> pll;
  15. const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
  16. const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
  17. const double pi = acos(-1.0);
  18. const int N = 1e5+100;
  19. const LL MOD = 1e9+7;
  20. int n;
  21. LL f[N][7],ans = 0;
  22. //f[i][0]最后一个字符是‘O’,没有'A'
  23. //f[i][1]最后一个字符是'O',有一个'A'
  24. //f[i][2]最后一个字符是’L',连续1个L,没有'A'
  25. //f[i][3]最后一个字符是’L',连续2个L,没有'A'
  26. //f[i][4]最后一个字符是’L',连续1个L,有'A'
  27. //f[i][5]最后一个字符是’L',连续2个L,有'A'
  28. //f[i][6]最后一个字符是'A',有'A'
  29. int main()
  30. {
  31. //freopen("F:\\rush.txt","r",stdin);
  32. ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf就别用了!
  33. f[1][0] = 1,f[1][2]=1,f[1][6] = 1;
  34. cin >> n;
  35. rep1(i,2,n)
  36. {
  37. //最后一个字符是O没有A
  38. f[i][0] = (f[i-1][0]+f[i-1][2]+f[i-1][3])%MOD;
  39. f[i][1] = (f[i-1][1]+f[i-1][4]+f[i-1][5]+f[i-1][6])%MOD;
  40. //连续一个L,没有'A'
  41. f[i][2] = f[i-1][0];
  42. //连续两个L,没有'A';
  43. f[i][3] = f[i-1][2];
  44. //连续一个L,有'A'
  45. f[i][4] = (f[i-1][1]+f[i-1][6])%MOD;
  46. //连续2个L,有'A'
  47. f[i][5] = f[i-1][4];
  48. //最后一个字符是A
  49. f[i][6] = (f[i-1][0]+f[i-1][2]+f[i-1][3])%MOD;
  50. }
  51. rep1(i,0,6)
  52. ans = (ans+f[n][i])%MOD;
  53. cout << ans << endl;
  54. return 0;
  55. }

【[Offer收割]编程练习赛10 B】出勤记录II的更多相关文章

  1. hihocoder [Offer收割]编程练习赛14 可疑的记录

    题目3 : 可疑的记录 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi有一棵N个节点的树,编号1-N,其中1号节点是整棵树的根.他把这棵树的N-1条边记录成N-1 ...

  2. 【[Offer收割]编程练习赛10 C】区间价值

    [题目链接]:http://hihocoder.com/problemset/problem/1483 [题意] 中文题 [题解] 二分最后的答案; 二分的时候; 对于每一个枚举的值x; 计算小于等于 ...

  3. hihocoder offer收割编程练习赛10 C 区间价值

    思路: 令v[l, r](0<= l <= r < n)表示区间[l,r]的价值,则长度为n的区间的价值最少为0,最多为n*(n-1)/2.整体对价值二分,求能满足sum{v[l, ...

  4. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  5. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  6. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  7. [Offer收割]编程练习赛9,10

    题目1 : 闰秒 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 计算机系统中使用的UTC时间基于原子钟,这种计时方式同“地球自转一周是24小时”的计时方式有微小的偏差. ...

  8. 【[Offer收割]编程练习赛14 C】可疑的记录

    [题目链接]:http://hihocoder.com/problemset/problem/1507 [题意] [题解] 如果多出来一个的话; 某个人的父亲节点就会变成两个 找到有两个父亲节点的人就 ...

  9. HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)

    描述 H国编程联赛中有N只队伍,编号1~N. 他们计划在2018年一共进行M场一(队)对一(队)的比赛. 为了让参赛队员能得到充分的休息,联赛组委会决定:每支队伍连续两场比赛之间至少间隔一天.也就是如 ...

随机推荐

  1. (OK) Installing Quagga—zebra—configure—make—CentOS7

    -------------------Installing Quagga # tar xzf quagga-0.99.21mr2.2.tar.gz # cd quagga-0.99.21mr2.2 / ...

  2. luogu1169 棋盘制作

    题目大意 有一个有m*n个格子的矩形,每个格子都有黑或白两种颜色.现要求将该矩形分别裁剪成一个小矩形或一个小正方形,使得这个矩形和正方形是个国际象棋棋盘,且面积最大. 题解 首先,为了简化问题,我们每 ...

  3. 【POJ 1456】 Supermarket

    [题目链接] http://poj.org/problem?id=1456 [算法] 贪心 + 堆 [代码] #include <algorithm> #include <bitse ...

  4. java web支持jsonp跨域

    jsonp跨域请求处理 Jsonp(JSON with Padding) 是 json的一种"使用模式",可以让网页从别的域名(网站)那获取资料,绕过同源策略(若地址里面的协议.域 ...

  5. hihoCoder 1187

    今天BC爆0了....但是日子还是要过的....要回学校毕业了~~大学就这么“荒废”了. 这个是hihoCoder的1187,比较基础的一道题. 题目链接: http://hihocoder.com/ ...

  6. layui富文本编译器后台获取图片路径

    @RequestMapping("add")    public ModelAndView add(News news){        ModelAndView mav = ne ...

  7. Oracle创建用户教程

    计算机-->管理-->应用程序与服务-->(OracleOraDb11g_home1TNSListener 和 OracleServiceORCL 服务)->启动服务 打开Or ...

  8. EasyUI DataGrid组织事件冒泡

    在事件内部需要阻止的地方添加如下代码 ]; 解释: arguments.callee是获得我自定义的事件处理方法OnSelected的方法体. .caller是获得调用OnSelected的上层方法( ...

  9. 5.30dao-service-controller层,mybatis自动生成。(获取根据id主键获取指定详细数据)

    获取权限详细数据:(参考)                    1.controller:1.注入Servcie调用方法findConsumerById(参数是id);               ...

  10. SQLite-编译指示

    SQLite – 编译指示 SQLite编译指示命令(PRAGMA)是一个特殊的命令是用于控制各种环境变量和状态标志在SQLite的环境.编译指示值可以读取,也可以根据需求设置. 语法: 查询当前的编 ...