timus 1175. Strange Sequence 解题报告
1.题目描述:
1175. Strange Sequence
Memory limit: 2 MB
- find H = (A1*X*Y + A2*X + A3*Y + A4);
- if H > B1 then H is decreased by C until H ≤ B2;
- the resulting value of H is the value of function F.
Input
Output
Sample
| input | output |
|---|---|
0 0 2 3 20 5 7 |
2 3 |
2.解题思路
题目要求确定p和q,我们先确定q再确定p,有了q只需要从x1,x2开始逐个尝试就能得出p。如何确定q呢?既然题目说了这个序列以q为循环节,我们可以假定序列在迭代足够多次之后就进入了循环,设这个次数为max。这样迭代max后再从1开始寻找q就可以啦~
3.代码:
#include <iostream>
#define max 300000
using namespace std; int a1,a2,a3,a4,b1,b2,c,x1,x2;
int p,q; int cal(int x, int y) {
int h = a1*x*y+a2*x+a3*y+a4;
if (h > b1) {
while (h > b2) {
h -= c;
}
}
return h;
} void iter(int& x, int& y) {
int tmp = cal(x, y);
x = y;
y = tmp;
} //假定迭代max次后处于稳定状态
//思路:迭代max次;继续迭代找到q;x1,x2迭代q次得到x3,x4;同时迭代直到x1==x3 && x2 == x4,找到p
int main() {
cin >> a1 >> a2 >> a3 >> a4 >> b1 >> b2 >> c >> x1 >> x2;
int i, tmp1, tmp2, tmp3, tmp4;
tmp3 = x1;
tmp4 = x2;
for (i = ; i < max; i++) {
iter(x1, x2);
}
tmp1 = x1;
tmp2 = x2;
q = ;
iter(x1, x2);
while (x1 != tmp1 || x2 != tmp2) {
q++;
iter(x1, x2);
}
tmp1 = tmp3;
tmp2 = tmp4;
iter(tmp1,tmp2);
i = ;
while (i != q) {
i++;
iter(tmp1, tmp2);
}
p = ;
while (tmp1 != tmp3 || tmp2 != tmp4) {
p++;
iter(tmp1, tmp2);
iter(tmp3, tmp4);
}
cout << p << " " << q << endl;
}
4.复杂度:
空间:O(1)
时间:O(p+q+max)
5.心得:
把这道题写出来,是因为我第一次尝试时思路是错的:把<x0,x1>作为一个pair,pos是迭代次数,用一个map<pair,pos> result存储,一直迭代<x0,x1>,递增pos,并把结果存入result,当重复插入时(x.pair == y.pair,x.pos < y.pos),就求出了p,q: p = x.pos, q = y.pos - x.pos。
。。。
没错我当时就是这么写的,然后华丽丽的爆了内存。
这种做法的复杂度:
时间:O(p+q)
空间:O(p+q)
然而根据题目要求,空间限制2M,是很严格的。。以后一定要好好看题目。。
timus 1175. Strange Sequence 解题报告的更多相关文章
- 【九度OJ】题目1175:打牌 解题报告
[九度OJ]题目1175:打牌 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1175 题目描述: 牌只有1到9,手里拿着已经排好序的 ...
- USACO Section2.1 Sorting a Three-Valued Sequence 解题报告
sort3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- Ducci Sequence解题报告
A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1, a2, ... , ...
- 【LeetCode】842. Split Array into Fibonacci Sequence 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】60. Permutation Sequence 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- timus 1180. Stone Game 解题报告
1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...
- ACM : HDU 2899 Strange fuction 解题报告 -二分、三分
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- LeetCode: Permutation Sequence 解题报告
Permutation Sequence https://oj.leetcode.com/problems/permutation-sequence/ The set [1,2,3,…,n] cont ...
- USACO Section 2.1 Sorting a Three-Valued Sequence 解题报告
题目 题目描述 给N个整数,每个整数只能是1,2,或3.现在需要对这个整数序列进行从小到大排序,问最少需要进行几次交换.N(1 <= N <= 1000) 样例输入 9 2 2 1 3 3 ...
随机推荐
- [html] 有利于seo优化的div+css命名规范
搜索引擎优化(seo)对命名规范有很多要求,下面是我收集的一些当下主流的命名(还是比较常用的): CSS样式命名 说明 网页公共命名 #wrapper 页面外围控制整体布局宽度 #container或 ...
- PAT自测-5 Shuffling Machine
原题连接https://pta.patest.cn/pta/test/17/exam/4/question/264 Shuffling is a procedure used to randomize ...
- C# 转换符的重载 显示、隐式转换
class Complex { //保存转换的值 Int32 v; public Complex(Int32 x) { v = x; } public Int32 ToInt32() { return ...
- 使用rsync同步文件
rsync是Unix/Linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输.关于rsync的核心算法,有兴趣的看下这篇文章. 这里介绍一下 ...
- Java数据校验(Bean Validation / JSR303)
文档: http://beanvalidation.org/1.1/spec/ API : http://docs.jboss.org/hibernate/beanvalidation/spec/1. ...
- Python强化训练笔记(七)——使用deque队列以及将对象保存为文件
collections模块中的deque对象是一个队列,它有着正常队列的先进先出原则.我们可以利用这个对象来实现数据的保存功能. 例如,现有一个猜数字大小的游戏,系统开始会随机roll点一个0-100 ...
- asp.net identity 3.0.0 在MVC下的基本使用(一)
注册时信箱转为用户名. 本人习惯使用用户名做注册用户,因为不管是什么终端起码都能少输入几个字符,可以提高用户体验. 这里需要更改控制器,模型和视图 1.打开Controllers目录下的Account ...
- can't resolve symbol 'R' ...
in android studio IDE: 解决: Tools -> Android -> Sync Project with Gradle Files
- redis3.2新增属性protected mode
在安装新版redis时(3.2) , 一直出现问题 , 只能本机连接其他机器访问失败 , 后来发现是新版增加了安全机制 在配置文件里可以发现多出了protected-mode这一项 , 如果为yes ...
- Liunx面试题
答案待定 1.请用shell查询file1 里面空行的所在行号2.编写ShellScript查询file1 以abc 结尾的行3.打印出file1 文件第1 到第3 行4.如何将本地80 端口的请求转 ...