题目链接:

pid=5063" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=5063

Problem Description
You have an array consisting of n integers: a1=1,a2=2,a3=3,…,an=n.
Then give you m operators, you should process all the operators in order. Each operator is one of four types:

Type1: O 1 call fun1();

Type2: O 2 call fun2();

Type3: O 3 call fun3();

Type4: Q i query current value of a[i], this operator will have at most 50.

Global Variables: a[1…n],b[1…n];

fun1() {

index=1;

  for(i=1; i<=n; i +=2) 

    b[index++]=a[i];

  for(i=2; i<=n; i +=2)

    b[index++]=a[i];

  for(i=1; i<=n; ++i)

    a[i]=b[i];

}

fun2() {

  L = 1;R = n;

  while(L<R) {

    Swap(a[L], a[R]); 

    ++L;--R;

  }

}

fun3() {

  for(i=1; i<=n; ++i) 

    a[i]=a[i]*a[i];

}
 
Input
The first line in the input file is an integer T(1≤T≤20),
indicating the number of test cases.

The first line of each test case contains two integer n(0<n≤100000), m(0<m≤100000).

Then m lines follow, each line represent an operator above.
 
Output
For each test case, output the query values, the values may be so large, you just output the values mod 1000000007(1e9+7).
 
Sample Input
1
3 5
O 1
O 2
Q 1
O 3
Q 1
 
Sample Output
2
4
 
Source

PS:

把全部的操作存下来,每次把操作逆回去算一遍,求出在最初在数列中的位置。输出就可以!

操作3是能够最后操作的!

代码例如以下:

#include <cstdio>
#include <cstring>
const int maxn = 100017;
const int mod = 1000000007;
typedef __int64 LL;
int a[maxn], b[maxn];
int n, m;
int find_pos(int l, int p)
{
for(int i = l; i > 0; i--)
{
if(b[i] == 1)
{
if (p > (n + 1) / 2)
p = (p - (n + 1) / 2) * 2;
else
p = (p - 1) * 2 + 1;
}
else
p = n-p+1;
}
return p;
}
int main()
{
int t;
char s[2];
int p;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
int k = 0, l = 0;
for(int i = 1; i <= m; i++)
{
scanf("%s%d",s,&p);
if(s[0] == 'O')
{
if(p == 3)
k++;
else
b[++l] = p;
}
else
{
LL ans = find_pos(l,p);
for(int i = 1; i <= k; i++)
{
ans = ans*ans%mod;
}
printf("%I64d\n",ans);
}
}
}
return 0;
}

HDU 5063 Operation the Sequence(暴力 数学)的更多相关文章

  1. HDU 5063 Operation the Sequence(暴力)

    HDU 5063 Operation the Sequence 题目链接 把操作存下来.因为仅仅有50个操作,所以每次把操作逆回去执行一遍,就能求出在原来的数列中的位置.输出就可以 代码: #incl ...

  2. hdu 5063 Operation the Sequence(Bestcoder Round #13)

    Operation the Sequence                                                                     Time Limi ...

  3. HDU 5063 Operation the Sequence(仔细审题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5063 题目大意: 题目意思还是比较简单.所以就不多少了.注意这句话,对解题有帮助. Type4: Q i que ...

  4. hdu 5063 Operation the Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=5063 思路:因为3查询最多50,所以可以在查询的时候逆操作找到原来的位置,然后再求查询的值. #include ...

  5. HDOJ 5063 Operation the Sequence

    注意到查询次数不超过50次,那么能够从查询位置逆回去操作,就能够发现它在最初序列的位置,再逆回去就可以求得当前查询的值,对于一组数据复杂度约为O(50*n). Operation the Sequen ...

  6. HDU 5273 Dylans loves sequence 暴力递推

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5273 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  7. 【HDOJ】5063 Operation the Sequence

    #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 100005 #defin ...

  8. HDU - 5036 Operation the Sequence

    Problem Description You have an array consisting of n integers: a1=1,a2=2,a3=3,-,an=n. Then give you ...

  9. HDU 6274 Master of Sequence (暴力+下整除)

    题意 两个1e5的数组a,b,定义\(S(t)=\left \lfloor \frac{t-b_i}{a_i} \right \rfloor\),有三个操作 1 x y:将\(a[x]\)变为\(y\ ...

随机推荐

  1. 用Python讲述冯绍峰和赵丽颖的爱情故事

    昨天刷头条时得知赵丽颖当妈妈了.作为一名程序员突发奇想,不如用Python简单叙述一下冯绍峰和赵丽颖的爱情故事,于是有了本文. 代码十分简单,适合编程小白和有一些Python基础的准程序员,其中用到了 ...

  2. python -迭代器与生成器 以及 iterable(可迭代对象)、yield语句

    我刚开始学习编程没多久,对于很多知识还完全不知道,而有些知道的也是一知半解,我想把学习到的知识记录下来,一是弥补记忆力差的毛病,二也是为了待以后知识能进一步理解透彻时再回来做一个补充. 参考链接: 完 ...

  3. 紫书 习题 10-7 UVa 10539(long long + 素数筛)

    注意要开long long 如果int * int会炸 那么久改成long long * int #include<cstdio> #include<vector> #incl ...

  4. linux 下查看二进制文件

    查看二进制有以下几种方法: 方法一:hexdump apt-get install libdata-hexdumper-perl 安装好之后就可以直接hexdump your_binary_file ...

  5. python的开发工具UliPad安装篇

    之前文章里写过一个搭建windows下搭建Selenium+Eclipse+Python环境,如今认为这个Eclipse太大了,太笨重了,重新启动又慢,像Python脚本轻级语言,不是必需用那么大的工 ...

  6. [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose

    This lesson takes the concept of render props and migrates it over to streaming props by keeping the ...

  7. Draw the RGB data from kinect C++ via opengl

    In order to improve my English writing skills,I am going to  write the blogs in English form now! -- ...

  8. 两天学会DirectX 3D之入门

    环境配置以及背景知识 环境 Windows 8.1 64bit VS2013 Microsoft DirectX SDK (June 2010) NVDIA Geforce GT755 环境的配置參考 ...

  9. JsonRequestBehavior.AllowGet 方便浏览器调试

    [HttpGet] public ActionResult getCoversationList(int CustomerId) { // 获取用户相关的聊天数据,包括个人,群,系统(可以单独获取) ...

  10. Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported

    Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may no ...