• CSUOJ 1008 Horcrux


    Description

    A Horcrux is an object in which a Dark wizard or witch has hidden a fragment of his or her soul for the purpose of attaining immortality. Constructing a Horcrux is considered Dark magic of the foulest, most evil kind, as it violates laws of nature and morality, and requires a horrific act (a.k.a. murder) to accomplish.

    There are two kinds of horcruxes, the white one, denoted as , and the black one, denoted as . Topper has got N horcruxes, and he wants to destroy them to win the Dark wizard. Toper places all the horcruxes in a line from left to right, one by one, and then says a magic spell to destroy them. In order to make the magic spell works, Toper needs to know the number of the white horcruxes.

    Since the horcruxes also has magic, when placing the horcruxes, they will change color from white to black or from black to white under the following rules:

    1. When Topper places the i-th horcrux and i is an even number: If the i-th horcrux and the rightmost horcrux have different colors, all consecutive horcruxes of the same color on the right change its color.

    2. In other situations, no magic works.

    For example, suppose the horcruxes on the line are:

    △△▲▲△△△

    After placing 7 horcruxes.

    If the 8-th horcrux is white, since its color and the color of the rightmost horcrux are the same. Therefore, the horcruxes on the line become as follows:

    △△▲▲△△△△

    If the 8-th horcrux is black, since its color and the color of the rightmost horcrux are different, the 3 consecutive white stones on the right change their color. Therefore, the stones on the line become as follows:

    △△▲▲▲▲▲▲

    You see, it’s not an easy job to beat the Dark wizard. So write a program to help Topper.

    Input

    There are some test cases. In each test case, the first line contains a positive integer n (1≤n≤100,000), which is the number of horcruxes. The following n lines denote the sequence in which Topper places the horcruxes. 0 stands for white horcrux, and 1 stands for black horcrux.

    Output

    For each test case, output one line containing only the number of white horcruxes on the line after Topper places n horcruxes.

    Sample Input

    8
    1
    0
    1
    1
    0
    0
    0
    0
    8
    1
    0
    1
    1
    0
    0
    0
    1
    

    Sample Output

    6
    2
    

    Hint

    题意:有一行黑白棋子,比如 110,当放偶数次时,比如放1 变成1101-> 1111,就会发生翻转!其他情况不发生,问最后有多少个白色棋子?
    可以用一个节点表示相同颜色的节点的个数
    #include<string.h>
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define MAXN 100010
    struct node
    {
    	int color, num;
    }a[MAXN];
    int main()
    {
    	int n,m;
    	while (cin >> n)
    	{
    		cin >> m;
    		int cnt = 0;
    		a[cnt].color = m;
    		a[cnt].num = 1;
    		for (int i = 0; i < n-1; i++)
    		{
    			cin >> m;
    			if (m == a[cnt].color)//颜色相同
    				a[cnt].num++;
    			else//颜色不同
    			{
    				if (i & 1)//为奇数时
    				{
    					cnt++;
    					a[cnt].color = m;
    					a[cnt].num = 1;
    				}
    				else
    				{
    					a[cnt].num++;
    					a[cnt].color = m;
    					if (cnt > 0)//如果颜色块个数不为零,改变一次颜色则会减少一个颜色块
    					{
    						a[cnt - 1].num += a[cnt].num;
    						cnt--;
    					}
    				}
    			}
    
    		}
    		int sum = 0;
    		for (int i = 0; i <= cnt; i++)
    		{
    			if (a[i].color == 0)
    				sum += a[i].num;
    		}
    		cout << sum << endl;
    	}
    
    	return 0;
    }
    /**********************************************************************
    	Problem: 1008
    	User: leo6033
    	Language: C++
    	Result: AC
    	Time:36 ms
    	Memory:2804 kb
    **********************************************************************/
    

  • 相关阅读:
    通信架构
    通信架构
    17.2?Replication Implementation 复制实施:
    17.2?Replication Implementation 复制实施:
    17.1.1.8?Setting Up Replication with Existing Data设置复制使用存在的数据
    17.1.1.8?Setting Up Replication with Existing Data设置复制使用存在的数据
    17.1.1.7 Setting Up Replication with New Master and Slaves 设置复制对于新的Master和Slaves:
    Hi3531用SPI FLASH启动 使用Nand做文件系统 分类: HI3531 2013-08-28 10:26 884人阅读 评论(0) 收藏
    Hi3531支持2GByte内存 分类: HI3531 2013-08-28 10:25 738人阅读 评论(0) 收藏
    Hi3531添加16GByte(128Gbit) NAND Flash支持 分类: HI3531 2013-08-28 10:23 861人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/csu-lmw/p/9124429.html
Copyright © 2020-2023  润新知