poj 3484 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的更多相关文章
- POJ 3484 Showstopper(二分答案)
[题目链接] http://poj.org/problem?id=3484 [题目大意] 给出n个等差数列的首项末项和公差.求在数列中出现奇数次的数.题目保证至多只有一个数符合要求. [题解] 因为只 ...
- Divide and conquer:Showstopper(POJ 3484)
Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数. 其实我一开始是没读懂题意的...主要是我理解错o ...
- POJ 3484
Showstopper Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1060 Accepted: 303 Descri ...
- POJ 3484 二分
Showstopper Description Data-mining huge data sets can be a painful and long lasting process if we a ...
- ProgrammingContestChallengeBook
POJ 1852 Ants POJ 2386 Lake Counting POJ 1979 Red and Black AOJ 0118 Property Distribution AOJ 0333 ...
- POJ 1064 1759 3484 3061 (二分搜索)
POJ 1064 题意 有N条绳子,它们长度分别为Li.如果从它们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留小数点后2位. 思路 二分搜索.这里要注意精度问题,代码中有详细说 ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
随机推荐
- 初识Hibernate之环境搭建
相信所有做后端的程序员同行们,没有不知道Hibernate大名的.这是一个经典的轻量级Java EE持久层的解决方案,它使得我们程序员能以面向对象的思维操作传统的关系型数据库,这也是其存在的 ...
- 都是Javascript的作用域惹得祸
案件重现 今天有位然之OA 系统的定制开发用户咨询了个问题,他想在新加的功能模块的操作面板中,实现用户点击删除按钮时提示友好提醒,如下: 问题很简单,虽然他自己最终达到目的效果了,但不知道起初问题出在 ...
- java 基础语法 1
一.标识符 二.关键字 三.JAVA基础数据类型 3.1. java常量 3.2. java变量 从本质上来讲,变量其实是内存里面的一小块区域,一个程序在运行的时候,实际上这个程序是位于内存里面,然后 ...
- css常用属性2
1 浮动和清除浮动 在上篇的第十一节--定位中说道: CSS 有三种基本的定位机制:普通流.浮动和绝对定位. 普通流和绝对定位已经说完,接下来就是浮动了. 什么是浮动? CSS 的 Float(浮动 ...
- MySQL数据备份之mysqldump使用(转)
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- SpringMVC框架(一)
SpringMVC最核心:DispatcherServlet SpringMVC环境搭建: 结构: 过程: 1.导包 2.声明SpringMVC核心Servlet:org.springframewor ...
- PE文件格式详解,第一讲,DOS头文件格式
PE文件格式详解,第一讲,DOS头文件格式 今天讲解PE文件格式的DOS头文件格式 首先我们要理解,什么是文件格式,我们常说的EXE可执行程序,就是一个文件格式,那么我们要了解它里面到底存了什么内容 ...
- cors解决ajax请求跨域问题
Access-Control-Allow-Origin: * 适用tomcat部署的项目 在web.xml里添加以下内容 <filter> <filter-name>CorsF ...
- zoj 1874 水题,输出格式大坑
Primary Arithmetic Time Limit: 2 Seconds Memory Limit: 65536 KB Children are taught to add mult ...
- Java面向对象 IO (一)
Java面向对象 IO (一) 知识概要: (1)IO概述 (2)IO流的常用基类 (3)IO程序的书写 (4)字符流 写入 读取 文本文件的两种读取方式 ...