题目链接:

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. unity 自动删除未引用的Assets下的资源

    随着时间的堆积,项目中Assets文件夹下的资源会变得越来越繁杂,有些贴图.材质啥的可能压根没有使用过,但是又不敢轻易去删除. 这里分享两个插件,用于管理这些资源. 一.ResourceChecker ...

  2. 【 Beginning iOS 7 Development《精通iOS7开发》】05 Autorotation and Autosizing

    一.旋转后相对位置不变 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0 ...

  3. 基于ArcGIS Flex API实现动态标绘(1.2)

    动态标绘API 1.2,相较前一版本号(点击进入),该版本号新增对基本标绘符号的支持,包含: 单点.多点.折线.手绘线.多边形.手绘多边形.矩形,并提供对应的编辑功能. 例如以下图所看到的,对多点的编 ...

  4. BZOJ2020: [Usaco2010 Jan]Buying Feed II

    [传送门:BZOJ2020] 简要题意: 约翰开车回家,遇到了双十一节,那么就顺路买点饲料吧.回家的路程一共有E 公里,这一路上会经过N 家商店,第i 家店里有Fi 吨饲料,售价为每吨Ci 元.约翰打 ...

  5. HBase的单节点集群详细启动步骤(分为Zookeeper自带还是外装)

    伪分布模式下,如(weekend110)hbase-env.sh配置文档中的HBASE_MANAGES_ZK的默认值是true,它表示HBase使用自身自带的Zookeeper实例.但是,该实例只能为 ...

  6. hashCode 和 equals 方法

    hashCode 和 equals 方法 hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法. 使用hashCode()和 ...

  7. 用iptables抗御SYN Flood攻击

    1         引 言 网络安全是各种网络应用面临的一个首要问题.从网络普及的那天开始,网络犯罪就没有停止过,相反有愈演愈烈之势.研究发现,现今的网络攻击以分布式拒绝服务攻击(DDOS)为主 .其 ...

  8. 联想 U410 超极本启用加速硬盘方法

    安装步骤: 方法一: 使用raid1方法 (此方法未安装过) 方法二:  普通安装后,使用RST加速 1.改BIOS , 为AHCI启动    , 2.安装好系统后,下载RST软件并安装 3.改BIO ...

  9. SpringBoot与SpringCloud的区别

    1.Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务:Spring Cloud是一个基于Spring Boot实现的云应用开发工具: ...

  10. 【2017 Multi-University Training Contest - Team 1 1002】Balala Power!

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6034 [Description] 给你n个字符串; 每个字符串都仅由小写字母组成; 然后,你可以把 ...