csu oj 1008 Horcrux(计数)
来源:互联网 发布:淘宝运营教学视频 编辑:程序博客网 时间:2024/06/05 23:00
csu oj 1008 Horcrux(计数)
题意:有一行黑白棋子,比如 110,当放偶数次时,比如放1 变成1101-> 1111,就会发生翻转!其他情况不发生,问最后有多少个白色棋子?
思路:用一个节点保存相同颜色的个数和颜色!
1101->1(4)
1110->0(4)
#define M 100005struct soul{ int color,num;}a[M];int main(){ int n,x,cnt; while(~scanf("%d",&n)) { cnt=0; scanf("%d",&x); a[cnt].color=x; a[cnt].num=1; for(int i=2;i<=n;i++) { scanf("%d",&x); if(x==a[cnt].color) a[cnt].num++; else { if(i&1) //当前位置为奇数 { cnt++; a[cnt].color=x; a[cnt].num=1; }else { a[cnt].num++; a[cnt].color=x; if(cnt>0)//只有多于一种颜色,则合并 { a[cnt-1].num+=a[cnt].num; cnt--; } } } // printf("->>cnt=%d,a[i].color=%d\n",cnt,a[cnt].color); } x=0; for(int i=0;i<=cnt;i++) if(a[i].color==0) x+=a[i].num; printf("%d\n",x); } return 0;}
特殊用例:
3
0 0 1
ans: 2
4
0 0 0 1
ans:0
0 0
- csu oj 1008 Horcrux(计数)
- CSU-1008-Horcrux
- COJ-1008-Horcrux
- CSU 1563: Lexicography (数学计数问题)
- CSU 1810 Reverse (组合计数)
- csu oj 1010 Water Drinking(BFS)
- csu oj 1031 Real Numbers(模拟)
- CSU OJ 1216
- csu oj 1539 数学公式
- CSU OJ 1112机器人的指令 (湖南省12年省赛题)
- CSU oj 1681 Adjoin(dfs求树上最长路径)
- CSU oj 1685 Entertainment Box
- CSU 1784 Internet of Lights and Switches(状态压缩+组合计数)
- CSU-1008
- Light oj 1060 - nth Permutation(dfs 计数)
- Light OJ 1095 Arrange the Numbers(计数)
- Light oj 1105 - Fi Binary Number(计数)
- Light OJ 1382 The Queue(组合计数)
- 程序员求职之道(《程序员面试笔试宝典》)之海量数据处理(如何从10亿查询词找出出现频率最高的10个)?
- 程序员求职之道(《程序员面试笔试宝典》)之数据结构与算法(排序算法)?
- iOS高级面试的11个技术问题
- 程序员求职之道(《程序员面试笔试宝典》)之操作系统(内核线程和用户线程的区别)
- vim 替换 转
- csu oj 1008 Horcrux(计数)
- 我的vimrc
- 程序员求职之道(《程序员面试笔试宝典》)之操作系统(线程和进程的区别)?
- 592- 使用的Hint 无效
- 程序员求职之道(《程序员面试笔试宝典》)之数据结构与算法(数组和链表的区别)?
- Ubuntu升级后apache虚拟目录设置全部失效问题解决
- 程序员求职之道(《程序员面试笔试宝典》)之程序设计基础(static的使用)?
- 了不起的Node.js读书笔记
- ANSI控制码的说明