码迷,mamicode.com
首页 > 其他好文 > 详细

HDU2607 Let the Balloon Rise II

时间:2015-02-03 15:01:55      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:hdu2607

Let the Balloon Rise II

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 131    Accepted Submission(s): 37


Problem Description
Contest will be end at 17:00! How excited it is to see balloons floating around.
技术分享
I knew you had solved the HDOJ 1004 Let the Balloon Rise already, so please settle the another version quickly. I have a lot of balloons and each has a color and I give each of them a number, same color has the same number. For example, red balloon is No.1, pink is No.2, black is No.3 . etc. I also have many rooms to store all the balloons.
There are some rules :
1. Every room stores several balloons but no two have the same color.
2. Collect all the balloons, we can find each color has even number of times of balloons except one.

Your task is to find which is the odd color and calculate its number of times.
 

Input
Input file consists from multiple data sets separated by one or more empty lines.
Each data set represents a sequence of 32-bit (positive) integers (references) which are stored in compressed way.
Each line of input set consists from three single space separated 32-bit (positive) integers X Y Z and they represent following sequence of No.X, X+Z, X+2*Z, X+3*Z, …, X+K*Z, …(while (X+K*Z)<=Y). This line represents that in this room there exists (K+1) balloons whose No. is No.X, No.X+Z, No.X+2*Z, No.X+3*Z, …, No.X+K*Z, …etc.
 

Output
For each input data set you should print to standard output new line of text with two integers separated by single space (first one is No. that occurs odd number of times and second one is count of that kind of balloon).
If all have even number of times output “None.”
 

Sample Input
1 10 1 1 10 1 1 5 1 6 10 1 1 10 1 4 4 1 1 5 1 2 5 1 2 5 1 2 5 1
 

Sample Output
None. 4 3 1 1
 

Author
WhereIsHeroFrom
 

Source


#include <stdio.h>
#include <string.h>

#define maxn 100002

int X[maxn], Y[maxn], Z[maxn];
char buf[40];

int main() {
    // freopen("data.in", "r", stdin); 
    int i, id = 0, cnt = 0, ret = 0; // id记录数据块中条数, ret记录最终结果
    while (gets(buf)) {
        if (*buf == NULL) {
            if (id)
                if (ret == 0) puts("None.");
                else {
                    while (id--) {
                        if (ret >= X[id] && ret <= Y[id] && (ret - X[id]) % Z[id] == 0)
                            ++cnt;
                    }
                    printf("%d %d\n", ret, cnt);
                }
            id = cnt = ret = 0;
            continue;
        }

        sscanf(buf, "%d%d%d", &X[id], &Y[id], &Z[id]);
        for (i = X[id]; i <= Y[id]; i += Z[id])
            ret ^= i;
        ++id;
    }
    if (id) 
        if (ret == 0) puts("None.");
        else {
            while (id--) {
                if (ret >= X[id] && ret <= Y[id] && (ret - X[id]) % Z[id] == 0)
                    ++cnt;
            }
            printf("%d %d\n", ret, cnt);
        }
    return 0;
}


HDU2607 Let the Balloon Rise II

标签:hdu2607

原文地址:http://blog.csdn.net/chang_mu/article/details/43449853

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!