HDOJ 1121 Complete the Sequence】的更多相关文章

[题目大意]有一个数列P,它的第i项是当x=i时,一个关于x的整式的值.给出数列的前S项,你需要输出它的第S+1项到第S+C项,并且使整式的次数最低.多测. [数据范围]数据组数≤5000,S+C≤100 思路:使用差分的方法进行解题,然后再逆向回去 实例: 原数列1,2,4,7,11,16,22,29…… 第一次相减:1,2,3,4,5,6,7…… 第二次相减:1,1,1,1,1,1…… 所有元素都相同了 所以下一项就是1+7+29=37,再下一项是1+8+37=46 #include<std…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1121 Complete the Sequence Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 451    Accepted Submission(s): 283 Problem Description You probably kno…
Complete the Sequence Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 202    Accepted Submission(s): 119 Problem DescriptionYou probably know those quizzes in Sunday magazines: given the sequenc…
UVA 1546 - Complete the sequence! 题目链接 题意:给定多项式前s项,求出后c项,要求尽量小 思路:利用差分法,对原序列求s - 1次差分,就能够发现规律,然后对于每多一项,就逆推回去就可以 代码: #include <stdio.h> #include <string.h> const int N = 205; int t, s, c, a[N][N]; int main() { scanf("%d", &t); whi…
题目传送门 /* 定义两个数组,l[i]和r[i]表示第i个数左侧右侧接近它且值是a[i]因子的位置, 第i个数被选择后贡献的值是(r[i]-i)*(i-l[i]),每个数都枚举它的因子,更新l[i], r[i],复杂度O(n*sqrt(a[i])) */ #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <map> using…
题目大意: 输入两个数n和m,n表示有n个数,这n个数是一个多项式的前n项,让输出这个序列的n+1,n+2,..n+m项. 题解:差分规律,一直差分,直到全为0或者只剩下一个数.然后再递推回去. 给出了n个数,最多可以求n-1行差分,从最后一行向上推,共n行.所以总复杂度O(n^2+n*m). #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ll dp[N][N]; void solve(int t){…
注意到查询次数不超过50次,那么能够从查询位置逆回去操作,就能够发现它在最初序列的位置,再逆回去就可以求得当前查询的值,对于一组数据复杂度约为O(50*n). Operation the Sequence Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 463    Accepted Submission(s): 187 Problem…
预处理出每一个数字的左右两边能够整除它的近期的数的位置 OO's Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1880    Accepted Submission(s): 672 Problem Description OO has got a array A of size n ,defined a fun…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288 //*************头文件区************* #include<iostream> #include<cstdio> #include<vector> #define N 100010 #define P 1000000007 using namespace std; int n,tmp,i,j; int r[N], l[N], q[N], a[N…
题意是这样的,给定一个n个元素的数组,初始值为0,3种操作: 1 k d将第k个数增加d: 2 l r 询问区间l...r范围内数之和: 3 l r 表示将区间l...r内的数变成离他最近的斐波那契数,要求尽量小. 线段树操作题目,其中对于第三种操作用一个懒惰标记一下,表示l...r内的数是不是已经变成斐波那契数,如果是的话,求和就是其相应数的斐波那契数之和. 代码: //Template updates date: 20140718 #include <bits/stdc++.h> #def…