题目链接:

https://cn.vjudge.net/problem/POJ-3484

题目大意:

给出一系列等差数列,给出第一项和最后一项和公差

这些等差数列中每个数出现的次数只有一个是奇数,找出这个数,并求出其出现的次数

解题思路:

二分枚举这个数,但是只是二分这个数字的话,找不到二分的条件。

所以枚举判断的时候,求出小于等于这个数字的数有多少个,如果是奇数个,说明该数 >= 解

如果是偶数,该数 < 解

输入很坑,数据与数据之间可能有多个空行

 #include<cstdio>
#include<cstring>
#include<iostream> using namespace std;
typedef long long ll;
const int maxn = 1e7 + ;
const double eps = 1e-;
struct node
{
ll l, r, d;
}a[maxn];
int n;
bool read()
{
bool ok = ;
n = ;
char s[];
while(gets(s))
{
if(strlen(s) == )
{
if(ok)break;
continue;
}
ok = ;
sscanf(s, "%lld%lld%lld", &a[n].l, &a[n].r, &a[n].d);
n++;
}
return ok;
}
ll judge(ll mid)
{
ll tot = ;
for(int i = ; i < n; i++)
{
if(mid < a[i].l)continue;
if(mid > a[i].r)
tot += (a[i].r - a[i].l) / a[i].d + ;//注意加一,两种情况都需要加一
else
{
tot += (mid - a[i].l) / a[i].d + ;
}
}
return tot;
}
int main()
{
while(read())
{
ll l = , r = 1LL << , ans = ;
while(l <= r)
{
ll mid = (l + r) / ;
//cout<<mid<<" "<<judge(mid)<<endl;
if(judge(mid) & )
{
ans = mid;
r = mid - ;
}
else l = mid + ;
}
if(ans == )
{
printf("no corruption\n");
continue;
}
ll tot = ;
for(int i = ; i < n; i++)
{
if(ans >= a[i].l && ans <= a[i].r && ((ans - a[i].l) % a[i].d == ))tot++;
}
printf("%lld %lld\n", ans, tot);
}
return ;
}

POJ-3484 Showstopper---二分+前缀和的更多相关文章

  1. Poj 3061 Subsequence(二分+前缀和)

    Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12333 Accepted: 5178 Descript ...

  2. POJ 3484 Showstopper(二分答案)

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

  3. poj 3484 Showstopper

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

  4. poj 3061 Subsequence 二分 前缀和 双指针

    地址 http://poj.org/problem?id=3061 解法1 使用双指针 由于序列是连续正数 使用l r 表示选择的子序列的起始 每当和小于要求的时候 我们向右侧扩展 增大序列和 每当和 ...

  5. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  6. Codeforces Round #381 (Div. 2) D. Alyona and a tree 树上二分+前缀和思想

    题目链接: http://codeforces.com/contest/740/problem/D D. Alyona and a tree time limit per test2 secondsm ...

  7. poj 2318 叉积+二分

    TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13262   Accepted: 6412 Description ...

  8. poj 2049(二分+spfa判负环)

    poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...

  9. Divide and conquer:Showstopper(POJ 3484)

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

  10. POJ 3484 二分

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

随机推荐

  1. redis cluster 集群拓展

    redis cluster 集群拓展 准备工作 举例:添加2个节点(1主7006节点,1从7007节点) 在/home/redis-cluster下生成conf和data目标,并生成配置信息 `; d ...

  2. Linux中断分层--软中断和tasklet

    1. Linux中断分层 (1)上半部:当中断发生时,它进行相应的硬件读写,并“登记”该中断.通常由中断处理程序充当上半部.(一般情况下,上半部不可被打断) (2)下半部:在系统空闲的时候,对上半部“ ...

  3. Yii2 hasMany 关联后加条件

    当前模型类为活动表id,关联评论表的type_id,条件是评论表的type要等于2public function getComment(){ return $this->hasMany(Comm ...

  4. Spring JDBC Framework

    引自 :学习经典:Spring JDBC Framework 这里记录我对Spring JDBC框架的学习.由于Spring JDBC和我之前做的工作有很多共同之处,学习经典Framework的设计, ...

  5. Docker学习笔记--Docker 启动nginx实例挂载目录权限不够(转)

    今天在启动一个docker 运行nginx实例,在挂载目录时,出现访问静态目录时,权限不够 执行的命令是: docker run --name my-nginx -d -p 80:80 --resta ...

  6. (转)Shell全局变量、局部变量与特殊变量笔记总结

    Shell全局变量.局部变量与特殊变量笔记总结 原文:http://blog.csdn.net/apollon_krj/article/details/70148022 变量类型:全局变量(环境变量) ...

  7. ElasticSearch mapping中字段属性总结

  8. HttpServlet的请求转发理解

    一个http请求的流转,其实主要涉及到五部分的内容,第一部分就是request所包含的参数,也就是request.getAttribute能获取的东西:第二部分是request所携带的内容实体,这部分 ...

  9. 网站加入QQ聊天链接

    有时候我们的网站需要加入客服聊天功能,实现方式各不相同同,对于流量不大的网站,可以加入qq聊天的链接,点击链接,会打开本地qq的聊天窗口, 和指定的人会话.实现方式很简单,就是一个<a>标 ...

  10. web前端与后台数据访问的对象封装

    前言:通常情况下,在不使用angularJS/nodeJS/react等这类完整性的解决方案的js时,前端与后台的异步交互都是使用Ajax技术进行解决 一:作为java web开发工程师可能以下代码是 ...