hdu 2064 Queuing (递推)
2015-08-20 22:21
656 查看
原理连接:http://acm.hdu.edu.cn/showproblem.php?pid=2604
题目大意:含有fmf或者fff的队列称为O类型队列。其余为E类型队列。
求 E类型队列的数量 对 给定值M 取余。
递推公式:
F(n)=F(n-1)+F(n-3)+F(n-4)
在保证不重复且满足的条件的情况下,(自己可通过排除的方法得到以下)
F(n-1) 末尾为 m
F(n-3) 末尾为 mmf
F(n-4) 末尾为 mmff
从而得出递推公式。
还需要注意点,数组用char类型否则超内存,short int也不行。
代码如下:
题目大意:含有fmf或者fff的队列称为O类型队列。其余为E类型队列。
求 E类型队列的数量 对 给定值M 取余。
递推公式:
F(n)=F(n-1)+F(n-3)+F(n-4)
在保证不重复且满足的条件的情况下,(自己可通过排除的方法得到以下)
F(n-1) 末尾为 m
F(n-3) 末尾为 mmf
F(n-4) 末尾为 mmff
从而得出递推公式。
还需要注意点,数组用char类型否则超内存,short int也不行。
代码如下:
#include<iostream> #include<cstdio> using namespace std; const int N = 1000000 + 1; char dt[30] ; //节省内存所以 一维数字-1 为 对应 M的取余 int main() { for (int i = 1; i <= 30; i++) { dt[i-1][1] = 2 % i; dt[i-1][2] = 4 % i; dt[i-1][3] = 6 % i; dt[i-1][4] = 9 % i; for (int j = 5; j <= 1000000; j++) { dt[i-1][j] = (dt[i-1][j - 1] + dt[i-1][j - 3] + dt[i-1][j - 4])%i; } } int L,M; while (scanf_s("%d%d", &L, &M) == 2) { printf("%d\n", dt[M-1][L]); } return 0; }
相关文章推荐
- break & continue
- ui学习总结第三天总结
- [LeetCode] Permutation Sequence
- LightOJ Array Queries 1082【线段树求区间最值】
- iOS_8_API:UIVisualEffectView (毛玻璃效果)
- ural Penguin-Avia
- Light OJ 1082 1082 - Array Queries(区间最值)
- 02-线性结构4. Pop Sequence (25)
- leetcode先刷_Unique Binary Search Trees II
- 表视图的简单使用-UITableView
- ConcurrentQueue<T>高效的线程安全的队列
- hdoj 1242 Rescue
- UI13_数据解析之图片相关(UIActionSheet,UIImagePickerController, UINavigationController协议方法)
- iOS每日一记之 设置UIImage的圆角
- Advanced Fruits
- 谈谈UI架构设计的演化
- 【EasyUi】页面设计必学之Layout
- selenium:org.openqa.selenium.WebDriverException: f.QueryInterface is not a function
- HDU 5412 CRB and Queries(区间第K大 树套树 按值建树)
- Light oj 1082 - Array Queries 【RMQ 裸题】