HDU 6274 二分+预处理(CCPC K题


#include"bits/stdc++.h"
#define db double
#define ll long long
#define vec vector<ll>
#define Mt vector<vec>
#define ci(x) scanf("%d",&x)
#define cd(x) scanf("%lf",&x)
#define cl(x) scanf("%lld",&x)
#define pi(x) printf("%d\n",x)
#define pd(x) printf("%f\n",x)
#define pl(x) printf("%lld\n",x)
using namespace std;
const int N = 1e6 + ;
int a[N],b[N],s[][],n; //s[x][y]表示对于所有a[i]==x时的b[i]%a[i]余数大于等于y的数目
ll ret;
bool check(ll x,ll k)
{
ll ans=ret*-;
for(int i=; i<=; i++)
{
ans+=x/i*s[i][]; //s[i][0]为a数组中等于i的数的个数
ans-=s[i][x%i+]; //减掉所有 c1<c2 的情况
}
return ans>=k;
}
ll cal(ll x)
{
ll l=,r=1e13,mid;
ll res=l;
while(l<=r)
{
mid=(l+r)>>;
if(check(mid,x)) res=mid,r=mid-;
else l=mid+;
}
return res;
}
int main()
{
int TA,T,x,y,z;
scanf("%d",&TA);
while(TA--)
{
scanf("%d%d",&n,&T);
ret=;
memset(s,, sizeof(s));
for(int i=; i<=n; i++) scanf("%d",&a[i]);
for(int i=; i<=n; i++) scanf("%d",&b[i]),ret+=(b[i]/a[i]),s[a[i]][b[i]%a[i]]++;
for(int i=; i<=; i++)
for(int j=i-; j>=; j--)
s[i][j]+=s[i][j+];
while(T--)
{
scanf("%d%d",&z,&x);
if(z==)
{
scanf("%d",&y);
for(int i=b[x]%a[x]; i>=; i--) s[a[x]][i]--;
for(int i=b[x]%y; i>=; i--) s[y][i]++;
ret-=(b[x]/a[x]);
ret+=(b[x]/y);
a[x]=y;
}
else if(z==)
{
scanf("%d",&y);
for(int i=b[x]%a[x]; i>=; i--) s[a[x]][i]--;
for(int i=y%a[x]; i>=; i--) s[a[x]][i]++;
ret-=(b[x]/a[x]);
ret+=(y/a[x]);
b[x]=y;
}
else
{
printf("%lld\n",cal(1ll*x));
}
}
}
}
HDU 6274 二分+预处理(CCPC K题的更多相关文章
- hdu 5080 2014ACM/ICPC鞍山K题 polya计数
首先,中心点是能够直接算出来的 把全部的坐标相加再除n就能够 然后枚举一个不靠近中心的点,枚举它绕中心点旋转的角度.仅仅要枚举50次就能够了 计算出当前枚举的的角度能否形成一个置换群 计算循环节,再用 ...
- HDU 5726 GCD 区间GCD=k的个数
GCD Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- 计蒜客 28437.Big brother said the calculation-线段树+二分-当前第k个位置的数 ( ACM训练联盟周赛 M)
M. Big brother said the calculation 通过线段树维护. 这个题和杭电的一道题几乎就是一样的题目.HDU5649.DZY Loves Sorting 题意就是一个n的排 ...
- hdu5080:几何+polya计数(鞍山区域赛K题)
/* 鞍山区域赛的K题..当时比赛都没来得及看(反正看了也不会) 学了polya定理之后就赶紧跑来补这个题.. 由于几何比较烂写了又丑又长的代码,还debug了很久.. 比较感动的是竟然1Y了.. * ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- HDU 2802 F(N)(简单题,找循环解)
题目链接 F(N) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu 5008 查找字典序第k小的子串
Boring String Problem Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- hdu 4004 (二分加贪心) 青蛙过河
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4004 题目意思是青蛙要过河,现在给你河的宽度,河中石头的个数(青蛙要从石头上跳过河,这些石头都是在垂 ...
- hdu 5089 使做对k-1题最大概率的选题方案
http://acm.hdu.edu.cn/showproblem.php?pid=5089 给出N道难度递增的题目,难度用可能做出的百分比表示,选出K道题目使得做出K-1道题目的概率最大. 选k题的 ...
随机推荐
- 基于表单布局:分析过时的table结构与当下的div结构
一些话在前面 最近做了百度前端学院一个小任务,其中涉及到表单布局的问题, 它要处理的布局问题:左边的标签要右对齐,右边的输入框.单选按钮等要实现左对齐. 从开始入门就被告知table布局已经过时了,当 ...
- Java设计模式—中介者模式
中介者模式是一种并不常用的模式,在此简单阐述阐述. 定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 类型:行为类模式 ...
- Java中mouseDragged有效mouseMoved没响应的可能原因
1.这个问题在jdk7与jdk8上都会出现. 2.具体表现为: 单独写个测试例子,用JFrame实现了mouseMoved接口,mouseDragged和mouseMoved都输出方法名和坐标,结果是 ...
- 【起航计划 012】2015 起航计划 Android APIDemo的魔鬼步伐 11 App->Activity->Save & Restore State onSaveInstanceState onRestoreInstanceState
Save & Restore State与之前的例子Android ApiDemo示例解析(9):App->Activity->Persistent State 实现的UI类似,但 ...
- 进一步了解this和super
知乎上看到一问题很好,拿了与大家分享,原地址:https://www.zhihu.com/question/31548104. 问: JAVA 中this 和super与覆写冲突的问题? 实例一: 输 ...
- PHP:__get()、__set()、__isset()、__unset()、__call()、__callStatic()六个魔术方法
哎呀呀,今天小仓鼠学到了魔术方法,简称魔法,哈哈哈哈,神经病啊~ 平时在面试的时候,也会遇到问魔术方法有哪些的问题哦!今天我们来了解一下下~ 1.__get() 形式: __get($objName) ...
- 什么是 pwd
pwd print work directory, 指linux terminal的当前目录 $ pwd
- 解决Wamp各版本中 Apache 文件列表图标无法显示
Edit the following file manually and change the path to the icons folder (it appears times in the fi ...
- InnoDB锁演示
create table t1( c1 int(10) unsigned not null default '0', c2 int(10) unsigned not null default '0', ...
- ios 逆向工程文档汇总
iOS逆向工程工具集 http://www.jianshu.com/p/7f9511d48e05 移动App入侵与逆向破解技术-iOS篇 http://blog.csdn.net/heiby/arti ...