POJ-3484 Showstopper---二分+前缀和
题目链接:
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---二分+前缀和的更多相关文章
- Poj 3061 Subsequence(二分+前缀和)
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12333 Accepted: 5178 Descript ...
- POJ 3484 Showstopper(二分答案)
[题目链接] http://poj.org/problem?id=3484 [题目大意] 给出n个等差数列的首项末项和公差.求在数列中出现奇数次的数.题目保证至多只有一个数符合要求. [题解] 因为只 ...
- poj 3484 Showstopper
Showstopper Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2236 Accepted: 662 Descri ...
- poj 3061 Subsequence 二分 前缀和 双指针
地址 http://poj.org/problem?id=3061 解法1 使用双指针 由于序列是连续正数 使用l r 表示选择的子序列的起始 每当和小于要求的时候 我们向右侧扩展 增大序列和 每当和 ...
- POJ 3061 (二分+前缀和or尺取法)
题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...
- 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 ...
- poj 2318 叉积+二分
TOYS Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13262 Accepted: 6412 Description ...
- poj 2049(二分+spfa判负环)
poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...
- Divide and conquer:Showstopper(POJ 3484)
Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数. 其实我一开始是没读懂题意的...主要是我理解错o ...
- POJ 3484 二分
Showstopper Description Data-mining huge data sets can be a painful and long lasting process if we a ...
随机推荐
- postgresql数据库primary key约束/not null约束/unique约束及default值的添加与删除、列的新增/删除/重命名/数据类型的更改
如果在建表时没有加primary key约束.not null约束.unique约束.default值,而是创建完表之后在某个字段添加的话 1.primary key约束的添加与删除 给red_pac ...
- Apache Beam中的函数式编程理念
不多说,直接上干货! Apache Beam中的函数式编程理念 Apache Beam的编程范式借鉴了函数式编程的概念,从工程和实现角度向命令式妥协. 编程的领域里有三大流派:函数式.命令式.逻辑式. ...
- Android代码中实现WAP方式联网
无论是移动.联通还是电信,都至少提供了两种类型的的APN:WAP方式和NET方式.其中NET方式跟WIFI方式一样,无需任何设置,可自由访问所有类型网站,而WAP方式,需要手机先设置代理服务器和端口号 ...
- 初识backbone.js
backbone,英文意思是:勇气, 脊骨,但是在程序里面,尤其是在backbone后面加上后缀js之后,它就变成了一个框架,一个js库. backbone.js,不知道作者是以什么样的目的来对其命名 ...
- 开源TSDB简介--Druid
开源TSDB简介--Druid Druid是一个以Java编写的开源分布式列式数据存储. Druid的目标是快速提取大量事件数据,并提供低延迟的查询. 德鲁伊的名字来源于许多角色扮演游戏中的变形德鲁伊 ...
- linux下为.net core应用创建守护进程
1.Supervisor 安装 yum install python-setuptools easy_install supervisor 2.配置 Supervisor mkdir /etc/sup ...
- Trim a Binary Search Tree
Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that a ...
- js之闭包
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个对Array的求和.通常情况下,求和的函数是这样定义的: function sum(arr) { ret ...
- 服务器LIUNX之如何解决矿机问题
点进来的基本都是遇到liunx变矿机的小伙伴吧(cpu运载300%) 卡的连终端都很难打开 开下来之后提示 大意是, 到xxx网站给钱了事, 不过基本这个网站基本也上不去, 要么是暴力破解, 要么是通 ...
- JavaSE环境Shiro的搭建及常用API
通过shiroAPI来进行角色的管理 模拟用户是否登录: 模拟用户是否具有相应的权限: