题目链接:

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. MyBatis模糊查询相关

    Mybatis模糊查询的实现不难,如下实例:在UserMapper.xml中根据用户名模糊查询用户: <!-- 模糊查询用户 --> <select id="findSom ...

  2. java将文本写入本地硬盘

    注意:首先要在E盘创建qaz.txt文本文件.然后执行代码写入. public static void main(String[] args) { SecurityCodeUtils scu = ne ...

  3. oracle12C--新特性

    Orcle 12c 新特性-使用DBCA创建物理备库 >>点击这里<< Orcle 12c DG 新特性-Far Sync >>点击这里<< Orcle ...

  4. URL篇之不安全字符处理

    URL是可移植的.它要统一命名因特网上的所有资源,就需要通过各种不同的协议来传送这些资源.这些协议在传输数据时会使用不同的机制,所以,设计URL,使其可以通过任意因特网协议安全地传输是很重要的. UR ...

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

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

  6. 面向切面编程 (AOP )

    什么是面向切面编程? 面向切面编程就是(AOP --- aspect-oriented programming), 在百科上说: 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一 ...

  7. 把linux图形启动界面修改成命令行界面

    由于图形界面比较耗资源,需要把启动界面修改成命令行界面,怎么修改呢? 1.vim /etc/inittab 2.把id:5:initdefault:改成 id:3:initdefault: 3.重启即 ...

  8. CSS+DIV进度条

    <style type="text/css"> .Bar { position: relative; width: 200px; /* 宽度 */ border: 1p ...

  9. 解决flashfxp连接虚拟机报错 530 permission denied

    菜鸟使用flashfxp遇到连接报错. [21:36:19] [R] 530 Permission denied.[21:36:19] [R] 连接失败 (连接已被客户端关闭) 搜索后发现,是因为li ...

  10. python发送邮件(带附件)

    python通过stmp发送qq邮件,带附件 import smtplib from email.mime.multipart import MIMEMultipart from email.mime ...