jzoj 1568. 【普及模拟】石子游戏
来源:互联网 发布:知无涯者 电影下载 编辑:程序博客网 时间:2024/05/16 08:25
你在桌子上放白和黑两种颜色的石子,第i个石子放在左边第i个位置,一共放了N个石子,当你放第i个石子必须遵循以下规则:
1.当i是奇数时:直接放在左数第i个位置上;
2.当i是偶数时:如果第i个石子和第i-1个石子颜色相同,直接放在第i个位置上;否则把当前最右边的连续的颜色相同的石子全部用相反颜色的石子取代,然后在第i个位置上放下石子i。
例如,假设桌子上现状是:○○●●○○○(○代表白石子,●代表黑石子)
如果第8个石子是白色,因为它和第7个石子颜色相同,就直接放在最右边就可以了,桌面上变成:○○●●○○○○;
如果第8个石子是黑的,因为和第7个颜色不同,就先把右边连续的3个白石子用黑石子代替,然后再放下第8个石子,变成:○○●●●●●●。
写一个程序,给你每个石子的颜色,输出最终桌面上白石子的数量。
输入
第一行输入一个整数N(1<=N<=100,000),接下来N行每行一个数C,表示N个石子的颜色,0表示白色,1表示黑色。
输出
输出一个整数表示最终白石子的数量。
var a,b:array[-100..100000] of longint; i,j,k,n,m,s,x:longint;begin assign(input,'stone.in'); reset(input); assign(output,'stone.out'); rewrite(output); readln(n); a[0]:=2; b[0]:=2; j:=1;k:=1; readln(m); a[1]:=m; b[1]:=1; for i:=2 to n do begin readln(m); if i mod 2=1 then begin if m=a[j] then begin b[k]:=b[k]+1; end else begin j:=j+1; a[j]:=m; k:=k+1; b[k]:=b[k]+1; end; end else begin if a[j]<>m then begin a[j]:=m; if a[j]=a[j-1] then begin j:=j-1; b[k-1]:=b[k]+b[k-1]+1; b[k]:=0; k:=k-1; end else begin b[k]:=b[k]+1; end; end else begin b[k]:=b[k]+1; end; end; end; for i:=1 to k do if a[i]=0 then s:=s+b[i]; writeln(s); close(input);close(output);end.
2 1
- jzoj 1568. 【普及模拟】石子游戏
- jzoj 1568. 【普及模拟】石子游戏 解题报告
- jzoj 1591. 【普及模拟】游戏
- jzoj 1591. 【普及模拟】游戏 解题报告
- jzoj 1349. 【2011.12.17普及模拟】连线游戏
- jzoj 1570. 【普及模拟】射击
- jzoj 1571. 【普及模拟】过河
- jzoj 1579. 【普及模拟】老鼠
- jzoj 1589. 【普及模拟】洗牌
- jzoj P1508【普及模拟】蚂蚁
- jzoj P1507【普及模拟】数列
- jzoj P1510【普及模拟】剪草
- 【普及模拟】数列 (jzoj)
- jzoj P1509【普及模拟】单元格
- [模拟](JZOJ)【普及模拟】蚂蚁
- jzoj 1569. 【普及模拟】公共子串
- jzoj 1576. 【普及模拟】自动统计机
- jzoj 1577. 【普及模拟】抓猫
- python点滴:读取和整合文件夹下的所有文件
- Maven学习笔记(三)——使用Maven构件web项目
- Animation从左边开始缩放
- javascript的重要性
- python_KNN
- jzoj 1568. 【普及模拟】石子游戏
- lightoj1228
- iOS进阶 - UIDynamic
- yii2.0缓存介质
- hdu 5655(拼四边形)
- Codevs 3287 NOIP2013提高组 货车运输(重庆一中高2018级信息学竞赛测验2) 解题报告
- 佳肴
- Java this关键字的详解
- MySQL5.71