Showstopper
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 2236   Accepted: 662

Description

Data-mining huge data sets can be a painful and long lasting process if we are not aware of tiny patterns existing within those data sets.

One reputable company has recently discovered a tiny bug in their hardware video processing solution and they are trying to create software workaround. To achieve maximum performance they use their chips in pairs and all data objects in memory should have even number of references. Under certain circumstances this rule became violated and exactly one data object is referred by odd number of references. They are ready to launch product and this is the only showstopper they have. They need YOU to help them resolve this critical issue in most efficient way.

Can you help them?

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 references: X, X+Z, X+2*Z, X+3*Z, …, X+K*Z, …(while (X+K*Z)<=Y).

Your task is to data-mine input data and for each set determine weather data were corrupted, which reference is occurring odd number of times, and count that reference.

Output

For each input data set you should print to standard output new line of text with either “no corruption” (low case) or two integers separated by single space (first one is reference that occurs odd number of times and second one is count of that reference).

Sample Input

1 10 1
2 10 1 1 10 1
1 10 1 1 10 1
4 4 1
1 5 1
6 10 1

Sample Output

1 1
no corruption
4 3

Source

/*
* @Author: Lyucheng
* @Date: 2017-07-29 20:58:28
* @Last Modified by: Lyucheng
* @Last Modified time: 2017-08-02 09:59:49
*/
/*
题意:每次给你X,Y,Z表示产品序列 X,X+Z,X+2*Z,X+3*Z,...,X+k*Z(X+K*Z<Y),让你判断哪个产品名出现过的次数不是偶数次 思路:异或判断哪个出现过奇数次,然后map计数 错误:上面的思路时间复杂度会炸掉的,这个题连数据范围都没有 改进:换种思路,看了题解才想到,二分答案,因为之多有一个是奇数个访问的,所以访问次数的前缀和一定从这个数变成奇数
利用这个性质来二分答案 注意的点:这个题数据范围不清晰,要用无符号longlong,并且用I64d输入,cout输出,我试了其他的方式都错了,还有读入空
行要单独处理
*/
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <sstream> #define MAXN 1024
#define MAXM 1000005
#define MAX 0xffffffff
#define MIN 0
#define ULL unsigned long long
using namespace std; char str[MAXN];
ULL X[MAXM],Y[MAXM],Z[MAXM];
ULL res;
int n; inline ULL getsum(ULL m){
ULL sum=;
for(int i=;i<n;i++){
if(m>=Y[i]){
sum+=(Y[i]-X[i])/Z[i]+;
}else if(m>=X[i]){
sum+=(m-X[i])/Z[i]+;
}
}
return sum;
} inline void init(){
n=;
res=;
} int main(){
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
while(gets(str)){
init();
if(strlen(str)>=){//不是空的
sscanf(str,"%I64d %I64d %I64d",&X[n],&Y[n],&Z[n]);
res^=( (Y[n]-X[n])/Z[n]+);
n++;
}
while(gets(str)!=NULL){
if(strlen(str)>=){//不是空的
sscanf(str,"%I64d %I64d %I64d",&X[n],&Y[n],&Z[n]);
res^=( (Y[n]-X[n])/Z[n]+);
n++;
}else{
break;
}
}//读入完成
if(n==){
continue;
}
if(!(res&)){//如果调用次数本身就是偶数
cout << "no corruption" << endl;
continue;
}
ULL l=MIN,r=MAX,m;
while(r-l>){
m=(l+r)/;
if(getsum(m)%==MIN){//前缀和是偶数的
l=m+;
}else{//前缀和是奇数的
r=m;
}
}
cout<<l<<" "<<getsum(l)-getsum(l-)<<endl;
}
return ;
}

poj 3484 Showstopper的更多相关文章

  1. POJ 3484 Showstopper(二分答案)

    [题目链接] http://poj.org/problem?id=3484 [题目大意] 给出n个等差数列的首项末项和公差.求在数列中出现奇数次的数.题目保证至多只有一个数符合要求. [题解] 因为只 ...

  2. Divide and conquer:Showstopper(POJ 3484)

    Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数. 其实我一开始是没读懂题意的...主要是我理解错o ...

  3. POJ 3484

    Showstopper Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1060   Accepted: 303 Descri ...

  4. POJ 3484 二分

    Showstopper Description Data-mining huge data sets can be a painful and long lasting process if we a ...

  5. ProgrammingContestChallengeBook

    POJ 1852 Ants POJ 2386 Lake Counting POJ 1979 Red and Black AOJ 0118 Property Distribution AOJ 0333 ...

  6. POJ 1064 1759 3484 3061 (二分搜索)

    POJ 1064 题意 有N条绳子,它们长度分别为Li.如果从它们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留小数点后2位. 思路 二分搜索.这里要注意精度问题,代码中有详细说 ...

  7. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  8. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  9. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

随机推荐

  1. ACM学习之路___HDU 5723(kruskal + dfs)

    Abandoned country Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  2. vue.js项目构建

    这里构建的vue.js项目依赖node服务器运行. 项目搭建完整步骤: 安装node.js ,转至nodeJs网站http://nodejs.cn/ 下载nodeJs进行安装. 安装完毕检查nodeJ ...

  3. 让MessageBox对话框总在最前面

    调用MessageBox的时候,如果最后一个参数用上MB_SYSTEMMODAL的话,可以让对话框在最前面

  4. Spring 5:以函数式方式注册 Bean

    http://www.baeldung.com/spring-5-functional-beans 作者:Loredana Crusoveanu 译者:http://oopsguy.com 1.概述 ...

  5. hdu3729二分匹配

    I'm Telling the Truth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. NOIP2017SummerTraining0710

    个人感受:这套题,题目泄露,没什么好打的,第一题刚开始题目理解错误,后来还行,第二道题,打了一个50还是60分的dp,第三道暴力过了小数据,拿了200分,排名15+. 问题 A: 七天使的通讯 时间限 ...

  7. 学习如何看懂SQL Server执行计划(三)——连接查询篇

    三.连接查询部分 --------------------嵌套循环-------------------- /* UserInfo表数据少.Coupon表数据多嵌套循环可以理解为就是两层For循环,外 ...

  8. DSCP 与IP 优先级IP优先级

    在IPv4的报文头中,TOS字段是1字节,如下图所示.根据RFC1122的定义,IP优先级(IPPrecedence)使用最高3比特(第0-2比特).+++++++++++++++++++++++++ ...

  9. Java面向对象 IO (一)

     Java面向对象  IO  (一) 知识概要:                (1)IO概述 (2)IO流的常用基类 (3)IO程序的书写 (4)字符流  写入  读取  文本文件的两种读取方式 ...

  10. JAVA提高三:反射总结

    为前期学习过反射,再这里再次复习总结下:[转载请说明来源:http://www.cnblogs.com/pony1223/p/7659210.html ] 一.透彻分析反射的基础_Class类 Cla ...