【HDOJ】5063 Operation the Sequence】的更多相关文章

#include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 100005 #define MOD 1000000007 , rear = ; int n; void query(int index) { int r = rear; ; )>>; while (r-- > front) { ) { ++square; } ) { index = n+-index; } else…
二分寻找对于指定pos的最左因数点和最右因数点. /* 5288 */ #include <iostream> #include <string> #include <map> #include <queue> #include <set> #include <stack> #include <vector> #include <deque> #include <algorithm> #includ…
树状数组,其实很简单.只是MLE. #include <iostream> #include <cstdio> #include <cstring> using namespace std; #define MAXN 100005 ][][MAXN]; ][][MAXN]; int a[MAXN]; int t, n, m; int d, p; ; int lowbit(int x) { return x & -x; } int getSum(int x, in…
[BZOJ1345][Baltic2007]序列问题Sequence Description 对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一操作的代价是max(ai,ai+1).进行n-1次该操作后,可以得到一个长度为1的序列.我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列. Input 第一行为一个整数n( 1 <= n…
HDU 5063 Operation the Sequence 题目链接 把操作存下来.因为仅仅有50个操作,所以每次把操作逆回去执行一遍,就能求出在原来的数列中的位置.输出就可以 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; const int N = 100005; const ll MOD = 1000…
注意到查询次数不超过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…
Operation the Sequence                                                                     Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)                                                                            …
[算法]数位DP [题解]动态规划 写了预处理函数却忘了调用是一种怎样的体验? #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ][]; void init() { f[][]=; ;i<=;i++) { f[i][]=; ;j<=i;j++)f[i][j]=f[i-][j]+f[i-][j-]; } } int find(int x,int k) { ,…
线段树的应用,很不错的一道题目.结点属性包括:(1)n1:1的个数:(2)c1:连续1的最大个数:(3)c0:连续0的最大个数:(4)lc1/lc0:从区间左边开始,连续1/0的最大个数:(5)rc1/rc0:从区间右边开始,连续1/0的最大个数:(6)set:置区间为0/1的标记:(7)flip:0->1, 1->0的标记.采用延迟更新.每当更新set时,flip就置为false:每当更新flip时,其实就是c1/c0, lc1/lc0, rc1/rc0的交换.对于询问最长连续1,共包括3种…
这道题目非常好,饶了点儿圈子.我的思路是,先按照组排列.例如,1            2           31 2         2 1        3 11 2 3      2 1 3     3 1 21 3         2 3        3 21 3 2      2 3 1     3 2 1分成3组,每组个数是确定的,因此可以通过m/组数获得第一个数字,然后组数因n--而减小.重新计算属于哪一组,但此时需要考虑printf的数字,因此使用visit数组保证每个数字仅…