【题目链接】:http://codeforces.com/contest/239/problem/B

【题意】



给你一个长度为n的字符串,只包括‘<”>’以及数字0到9;

给你q个区间(n和q都小于等于100)

然后让你在这q个区间里面做一些操作;

有一个指针int,指向当前操作的位置,还有一个方向的int;

表示这个指针它要移动的方向;

每次对一个位置进行操作;

如果该位置是数字;

则把这个数字输出,然后这个数字递减1;

如果数字小于0了,则把它删掉;

然后把指针往方向int的方向移动一个单位;

如果是’>’或’<’则,把方向改成左或右;

然后往新的方向走,如果走了一步之后还是’<’或’>’

则把前一个’<’或’>’删掉;

问你最后0..9各输出了多少个;

【题解】



每次模拟一步即可;

直到cp指针跳出了区间为止;

可以用数组来模拟链表的删除过程;

对每个区间的操作,都把数组链表初始化一下即可;



【Number Of WA 】



0



【反思】



这种模拟删掉的过程用数组模拟链表的方法都比较方便;



【完整代码】

#include <bits/stdc++.h>
#define rep1(i,x,y) for (int i = x;i <= y;i++)
#define rep2(i,x,y) for (int i = x;i >= y;i--)
using namespace std; const int N = 100+10; int n,q,l,r,a[N][2],cp,dp,num;
int tot[10];
string s,s1; void get_next(){
int ll = a[cp][0],rr = a[cp][1],tcp = cp;
if (s1[cp]>='0' && s1[cp]<='9'){
cp = a[cp][dp];
num++;
tot[s1[tcp]-'0']++;
s1[tcp]--;
if (s1[tcp]<'0'){
a[ll][1] = rr;
a[rr][0] = ll;
}
}else{
if (s1[cp]=='<')
dp = 0;
else
dp = 1;
cp = a[cp][dp];
if (cp < l || cp > r) return;
if (s1[cp]>='0' && s1[cp]<='9') return;
a[ll][1] = rr,a[rr][0] = ll;
}
} int main(){
//freopen("D:\\rush.txt","r",stdin);
cin >> n >> q;
cin >> s;
s = ' ' + s;
rep1(i,1,q){
num = 0;
s1 = s;
cin >> l >> r;
rep1(j,l,r)
a[j][0] = j-1,a[j][1] = j+1;
rep1(j,0,9)
tot[j] = 0;
cp = l,dp = 1;
while (1){
get_next();
if (cp <l || cp>r) break;
}
rep1(j,0,9)
cout << tot[j] <<' ';
cout << endl;
}
return 0;
}

最新文章

  1. PHP 调用webService方式
  2. 集合类List,set,Map 的遍历方法,用法和区别
  3. DSP using MATLAB示例 Example3.5
  4. 运行re-sign.jar重签名工具报错ERROR:Cannot run program &quot;D:\sdk\tools\zipalign
  5. Install WindowBuilder for Eclipse
  6. Web Server 和 HTTP 协议
  7. [RxJS] Adding Conditional Logic with Filter
  8. Java基础学习之线程
  9. JavaPOI处理Excel
  10. 201521123019 《Java程序设计》第3周学习总结
  11. DFS+打表
  12. ADO.NET复习总结(2)--连接池
  13. android学习笔记--Scanner
  14. linux系统中查看己设置iptables规则
  15. 我的互联网30年。永远的8U8 永远的Y365
  16. 白盒测试实践-day....
  17. linux下配置某程序的sudo不用输密码
  18. CodeForces - 779D String Game 常规二分
  19. ValueError: update only works with $ operators
  20. 利用层的table-row、table-cell属性进行页面布局

热门文章

  1. Test zram at kernel 3.10 4.12
  2. 加减法计算器-java
  3. 小试牛刀之sort()排序的实现
  4. [luogu] P4364 [九省联考2018]IIIDX(贪心)
  5. 《一个民企CEO的职场阳谋》–读书总结(上)
  6. Vue生命周期函数的应用
  7. 微信小程序开发入门(一)
  8. Android UI布局之TableLayout
  9. jdbc14 及 jdbc16 共存所带来的问题【未完待续】
  10. scanf使用与运算符