Supercomputer 解题报告

Supercomputer

1394419-20190326165404902-1893383748.png

\(f_i\)为前\(i\)个时间内必须的完成的任务个数,那么答案就是
\[ \max_{i}\lceil\frac{f_i}{i}\rceil \]
现在要支持区间加和全局\(\max\)

考虑分块,对每个块维护一个\(tag\)表示加标记

块内的\(\max\)则为
\[ \max_i \frac{1}{i}\times tag+\frac{f_i}{i} \]
则把\(k=\frac{1}{i},b=\frac{f_i}{i}\),就对一个块维护一个关于直线的上凸壳

然后发现\(tag\)是单增的,所以可以均摊\(O(n)\)的在每个块的凸壳上维护

修改的时候不满一块的暴力重构块,否则打tag上去


Code:

#include <cstdio>
#include <cctype>
#include <cmath>
#include <algorithm>
#define ll long long
using std::max;
using std::min;
const int N=1e5+10;
const int B=350;
template <class T>
void read(T &x)
{x=0;char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();
}
int n,m,q,ans,T,L[B],R[B],belong[N],yuy[N];
struct koito_yuu
{int x,y;//k=1/x,b=y/xkoito_yuu(){}koito_yuu(int X,int Y){x=X,y=Y;}
};
bool ck(koito_yuu a,koito_yuu b,koito_yuu c)
{return (1.0*a.x*b.y-1.0*b.x*a.y)*(c.x-b.x)>=(1.0*b.x*c.y-1.0*c.x*b.y)*(b.x-a.x);
}
struct Block
{koito_yuu s[B];int tot,tag;void build(int x){tot=0;for(int i=L[x];i<=R[x];i++){koito_yuu pot=koito_yuu(i,yuy[i]);while(tot>1&&ck(pot,s[tot],s[tot-1])) --tot;s[++tot]=pot;}}void Move(){while(tot>1&&(1ll*(tag+s[tot].y)*s[tot-1].x)<=1ll*(tag+s[tot-1].y)*s[tot].x) --tot;ans=max(ans,(tag+s[tot].y-1)/s[tot].x+1);}
}bee[B];
void query()
{for(int i=1;i<=T;i++)bee[i].Move();
}
int main()
{freopen("computer.in","r",stdin);freopen("computer.out","w",stdout);read(n),read(m),read(q);for(int x,i=1;i<=m;i++) read(x),++yuy[x];for(int i=1;i<=n;i++) yuy[i]+=yuy[i-1];int b=sqrt(n)+1;T=(n-1)/b+1;for(int i=1;i<=T;i++){L[i]=R[i-1]+1,R[i]=min(i*b,n);for(int j=L[i];j<=R[i];j++) belong[j]=i;bee[i].build(i);}query();printf("%d\n",ans);for(int k,v,i=1;i<=q;i++){read(k),read(v);int bl=belong[v];for(int j=v;j<=R[bl];j++) yuy[j]+=k;bee[bl].build(bl);for(int j=bl+1;j<=T;j++) bee[j].tag+=k;query();printf("%d\n",ans);}return 0;
}

2019.3.26

转载于:https://www.cnblogs.com/butterflydew/p/10601280.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OCS (错误代码: 0-1-492)

http://hi.baidu.com/windowserver/blog/item/dcd6b851151d062d43a75b72.html 转载于:https://www.cnblogs.com/hubj/archive/2010/06/12/1757279.html

javaScript第五天(2)

javaScript基础 01.知识点-函数【重点】 学习函数的目的 就是为将重复的功能代码包装成一个工具(盒子), 方便程序员重复调用学习函数的路径 定义函数调用函数为了让函数的功能更加强大, 学习函数的 参数函数的返回值 函数的使用 函数的定义及调用 函数的定义 通过 function关…

How to ignore files and directories in subversion?

Step 1 Copy the files and directories to other place. Step 2 Delete the files and directories. Step 3 Commit. Step 4 Paste the files and directories from backup place. Step 5 Commit.转载于:https://www.cnblogs.com/mouseleo/p/10605322.html

arguments使用

只有函数才有argumentsfunction fn(){console.log(arguments);console.log(arguments.length);console.log(arguments[2]);//我们可以按照数组的方式遍历argumentsfor (let i 0; i < arguments.length; i) {console.log(arguments[i]);}}fn(1,2,3);伪数组 并不是真正意义上…

2.0 es6中forEach以及数组操作

前言&#xff1a; 小白的js之路...... 1. 遍历数组/集合 forEach usernameArray []; //遍历 users.forEach((user, index) > {let username user.name;//取出用户名添加到数组usernameArray[index] username; }) 2. 数组过滤filter()和查找find() let arr s.filter( x &…

输出GPLT

L1-023 输出GPLT &#xff08;20 分)给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序&#xff0c;按GPLTGPLT....这样的顺序输出&#xff0c;并忽略其它字符。当然&#xff0c;四种字符&#xff08;不区分大小写&#xff09;的个数不一定是一样多的…

javaScript第六天(1)

JavaScript基础 核心知识点 对象 4种创建对象的方式操作对象&#xff08;取值&#xff0c;赋值&#xff09; 今日学习目标 能够使用对象方式保存数据能够理解自定义构造函数如何创建对象能够获取对象中的值及给对象赋值 对象 思考&#xff1a; 如何通过js函数将人的信息输…

Reversing-x64Elf-100

一道很简单的小题 作为python小白这道题主要是学习了一点python知识...... 可以看出来 sub_4006FD 这个函数是用来判断输入密码是否正确的 我们看一下它的伪代码&#xff1a; signed __int64 __fastcall sub_4006FD(__int64 a1) {signed int i; // [rsp14h] [rbp-24h]const ch…

javaScript第六天(2)

07-javaScript基础 ☞ 函数其他部分 arguments [掌握] arguments 作用? 解决当函数的形参个数不确定的时候,通过arguments获取实参的值如何使用arguments 获取用户传递实参的值? arguments 在函数中就是用来保存实参信息的伪数组 (可以按照数组的方式去遍历, 但是不能使用数…

论wpf的设备无关性 - 简书

论wpf的设备无关性 - 简书 原文:论wpf的设备无关性 - 简书 WPF从发布之日起&#xff0c;一直将“分辨率无关(resolution independence)”作为其亮点&#xff0c;声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。微软之所以称WPF…

暑期学习总结6

本周书面学习时间大概6小时&#xff0c;代码上5小时&#xff0c;java的基础知识已经基本都学过一遍了&#xff0c;剩下的就是要巩固&#xff0c;进行了一些实例操作&#xff0c;过程还算满意&#xff0c;类的运用已经掌握了很多&#xff0c;现在已经习惯了java的类定义方法&…

javaScript第七天(1)

JavaScript基础 核心知识点 Math对象中的方法数组对象中的方法字符串中的方法 今日学习目标 能够掌握Math对象中的相关方法能够掌握数组对象中的push方法能够掌握操作字符串的方法 内置对象介绍 ☞ JavaScript组成&#xff1a; ECMAScript | DOM | BOM ☞ ECMA…

ISLR学习笔记(2)线性回归

第三章 几种常见的线性模型 1、简单线性回归 Y≈β0β1X 2、多元线性回归 Y≈β0β1X1β2X2... 3、扩展线性回归 Y≈β0β1X1β2X2β3X1X1 克服了多元线性模型 X1X1 与 X2X2 不协同作用的假设。 4、多项式回归 Y≈β0β1X1β2X12β3log(X1)β4√X4 转载于:https://www.cnblog…

浅谈Aho-Corasick automaton(AC自动机)

Aho-Corasick automaton是什么&#xff1f; 要学会AC自动机&#xff0c;我们必须知道什么是Trie&#xff0c;也就是字典树。Trie树&#xff0c;又称单词查找树或键树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计和排序大量的字符串&#xff…

javaScript第七天(2)

javaScript基础 ☞ 对象其他部分 [理解] 自定义构造函数创建对象[掌握] //继续简化 自定义构造函数 function People(uName, uAge) {this.uName uName;this.uAge uAge; } // 如何通过自定义构造函数创建对象? var zs new People(张三, 20); console.log(zs);注意事项: 自定…

数据挖掘、机器学习书籍推荐!!

强烈推荐&#xff1a;《机器学习》 (西瓜书) 入门读物&#xff1a; 《深入浅出数据分析》 这书挺简单的&#xff0c;基本的内容都涉及了&#xff0c;说得也比较清楚&#xff0c;最后谈到了R是大加分。难易程度&#xff1a;非常易。 《啤酒与尿布》 通过案例来说事情&#xff0c…

楼兰图腾(权值线段树)

在完成了分配任务之后&#xff0c;西部314来到了楼兰古城的西部。 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落&#xff0c;一个部落崇拜尖刀(‘V’)&#xff0c;一个部落崇拜铁锹(‘∧’)&#xff0c;他们分别用V和∧的形状来代表各自部落的图腾。 西部314在楼兰古…

js(Dom+Bom)第一天(1)

JavaScript-DOM&#xff08;BOM&#xff09;操作 核心知识 获取页面元素事件设置样式 学习目标 能够使用id名,标签名等方式获取页面中元素能够给标签注册点击事件,并实现对应效果能够给标签通过js方式设置样式 JavaScript组成 ECMASCRIPT (基础语法) DOM&#xff08;文档对…

[HZNOI #koishi] Magic

[HZNOI #514] Magic 题意 给定一个 \(n\) 个点 \(m\) 条边的有向图, 每个点有两个权值 \(a_i\) 和 \(b_i\), 可以以 \(b_i\) 的花费把第 \(i\) 个点的 \(a_i\) 变成 \(0\). 最后每个点 \(i\) 产生的花费为所有从 \(i\) 出发能通过一条有向边直接到达的点 \(j\) 的 \(a_j\) 的 \…

同步与异步

同步&#xff1a; 做完一件事&#xff0c;再做另一件 煮好水&#xff0c;再拆泡面包装 异步&#xff1a; 可以同时做好几个任务 烧水&#xff0c;打开火之后&#xff0c;先去拆泡面包装&#xff0c;等水开了&#xff0c;再停下拆包装&#xff0c;去关掉火。。。。。 转载于:htt…