
2017ccpc杭州 K. Master of Sequence(HDU - 6274 向下取整拆分 + 二分)
发布日期:2021-05-04 18:29:25
浏览次数:20
分类:技术文章
本文共 2892 字,大约阅读时间需要 9 分钟。
题意:浅显易懂不需要解释
思路:令 ,
,原式子可以化简为
,即
当 时,第 i 项的值为
,否则为
原式子转化为了
所以预处理 ,用二维数组
表示所有
时
b[i] % a[i] >= y 的数目,二分 t 即可
(用了4种二分来练练手,都能ac)
#includeusing namespace std;typedef long long ll;const ll mod = 998244353;const double eps = 1e-11;const ll N = 1e5 + 10;ll a[N], b[N];///num[x][y]表示对于所有 a[i]==x 时的 b[i]%a[i] 余数大于等于y的数目ll num[1005][1005];bool check(ll mid, ll x) { ll res = 0; for(ll i = 1; i <= 1000; ++i) { res += mid / i * num[i][0]; res -= num[i][mid % i + 1]; } if(x <= res) return 1; else return 0;}///上界不要到1e18//1 acll lower_b1(ll x) { ll l = 1, r = 1e14, mid; while(l < r) { mid = (l + r) >> 1; if(check(mid, x)) r = mid; else l = mid + 1; } return l;}//2 acll lower_b2(ll x) { ll l = 1, r = 1e14; while(l < r) { ll mid = (l + r + 1) >> 1; if(check(mid, x)) r = mid - 1; else l = mid; } return l + 1;}//3 acll lower_b3(ll x) { ll l = 0, r = 1e14; while(l + 1 < r) { ll mid = (l + r) >> 1; if(check(mid, x)) r = mid; else l = mid; } return l + 1;}//= acll lower_b4(ll x) { ll l = 1, r = 1e14; while(l <= r) { ll mid = (l + r) >> 1; if(!check(mid, x)) l = mid + 1; else r = mid - 1; } return l;}int main() { ll t, n, m, x, y, k, op; scanf("%lld", &t); while(t--) { ll res = 0; for(ll i = 0; i <= 1000 * 1ll; ++i) for(ll j = 0; j < i; ++j) num[i][j] = 0; scanf("%lld%lld", &n, &m); for(ll i = 1; i <= n; ++i) scanf("%lld", &a[i]); for(ll i = 1; i <= n; ++i) { scanf("%lld", &b[i]); res += b[i] / a[i]; num[a[i]][b[i] % a[i]]++; } for(ll i = 1; i <= 1000; ++i) for(ll j = i - 1; j >= 0; --j) num[i][j] += num[i][j + 1]; while(m--){ scanf("%lld", &op); if(op == 1) { scanf("%lld%lld", &x, &y); for(ll i = b[x] % a[x]; i >= 0; --i) num[a[x]][i]--; for(ll i = b[x] % y; i >= 0; --i) num[y][i]++; res -= b[x] / a[x]; res += b[x] / y; a[x] = y; } else if(op == 2) { scanf("%lld%lld", &x, &y); for(ll i = b[x] % a[x]; i >= 0; --i) num[a[x]][i]--; for(ll i = y % a[x]; i >= 0; --i) num[a[x]][i]++; res -= b[x] / a[x]; res += y / a[x]; b[x] = y; } else { scanf("%lld", &k); printf("%lld\n", lower_b1(res + k));// printf("%lld\n", lower_b2(res + k));// printf("%lld\n", lower_b3(res + k));// printf("%lld\n", lower_b4(res + k)); } } } return 0;}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月22日 01时30分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2020熔化焊接与热切割考试及熔化焊接与热切割考试题库
2019-03-03
2020年G3锅炉水处理报名考试及G3锅炉水处理考试申请表
2019-03-03
2020年R2移动式压力容器充装答案解析及R2移动式压力容器充装免费试题
2019-03-03
2020年制冷与空调设备运行操作答案解析及制冷与空调设备运行操作考试总结
2019-03-03
2020年保育员(初级)考试资料及保育员(初级)新版试题
2019-03-03
2020年加氢工艺复审考试及加氢工艺作业考试题库
2019-03-03
2020年茶艺师(高级)考试内容及茶艺师(高级)考试申请表
2019-03-03
2020年车工(中级)考试内容及车工(中级)答案解析
2019-03-03
2021年烟花爆竹经营单位安全管理人员考试及烟花爆竹经营单位安全管理人员考试试卷
2019-03-03
2021年过氧化工艺试题及答案及过氧化工艺考试平台
2019-03-03
2021年煤矿安全检查考试APP及煤矿安全检查模拟考试题库
2019-03-03
2021年重氮化工艺考试题库及重氮化工艺考试报名
2019-03-03
2021年车工(高级)考试总结及车工(高级)试题及答案
2019-03-03
2021年压力焊证考试及压力焊实操考试视频
2019-03-03
2021年低压电工考试及低压电工考试申请表
2019-03-03
2021年低压电工考试及低压电工考试申请表
2019-03-03
2021年低压电工考试及低压电工考试申请表
2019-03-03
2021年低压电工考试APP及低压电工作业模拟考试
2019-03-03
2021年A特种设备相关管理(电梯)考试APP及A特种设备相关管理(电梯)复审考试
2019-03-03
2021年美容师(初级)考试报名及美容师(初级)新版试题
2019-03-03