省选round1的时候dalao的推荐——atcoder的题目码量不大,但很巧妙,题目比较难找,挂个链冷静一下:http://s8pc-3.contest.atcoder.jp/tasks/s8pc_3_f

还行吧。。。

好久没写标记下传的线段树了(这次一写就是个双标记)居然能一遍写对核心代码(没开longlongRE了一发,改longlong就A了)

因为本来都是0,就好处理了

对于这道题我的理解是灌水(水泥):每次在a的地方灌b体积的水,如果平就往左灌

感性理解得到单调性(数学归纳可证),而且被灌的地方分成三个阶段:先填平,再竖直向上涨,最后在左边的一段填1

二分填到哪里位置,然后直接(用线段树)模拟就可以了,复杂度两个log

 #include <bits/stdc++.h>
#define sum(x,y) que(1,1,n,x,y)
#define change(x,y,z) chan(1,1,n,x,y,z)
#define add(x,y,z) Plus(1,1,n,x,y,z)
#define mid (l+r>>1)
using namespace std;
long long sum[],fg[],ad[];
long long n,m,a,b;
void down(int now,int l,int r)
{
if(fg[now])
{
fg[now]+=ad[now];
fg[now<<]=fg[now];
fg[now<<|]=fg[now];
ad[now]=ad[now<<]=ad[now<<|]=fg[now]=;
sum[now<<]=fg[now<<]*(mid-l+);
sum[now<<|]=fg[now<<|]*(r-mid);
}
if(ad[now])
{
ad[now<<]+=ad[now];
ad[now<<|]+=ad[now];
sum[now<<]+=ad[now]*(mid-l+);
sum[now<<|]+=ad[now]*(r-mid);
ad[now]=;
}
}
void updata(int now)
{
sum[now]=sum[now<<]+sum[now<<|];
}
void chan(int now,int l,int r,int x,int y,long long z)
{
if(l==x && r==y)
{
fg[now]=z;
ad[now]=;
sum[now]=z*(r-l+);
return;
}
down(now,l,r);
if(x<=mid)
chan(now<<,l,mid,x,min(mid,y),z);
if(y>mid)
chan(now<<|,mid+,r,max(mid+,x),y,z);
updata(now);
}
void Plus(int now,int l,int r,int x,int y,long long z)
{
if(l==x && r==y)
{
ad[now]+=z;
sum[now]+=z*(r-l+);
return;
}
down(now,l,r);
if(x<=mid)
Plus(now<<,l,mid,x,min(mid,y),z);
if(y>mid)
Plus(now<<|,mid+,r,max(mid+,x),y,z);
updata(now);
}
long long que(int now,int l,int r,int x,int y)
{
if(l==x && r==y)
return sum[now];
down(now,l,r);
long long ret=;
if(x<=mid)
ret+=que(now<<,l,mid,x,min(y,mid));
if(y>mid)
ret+=que(now<<|,mid+,r,max(x,mid+),y);
return ret;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%lld",&a,&b);
int l=,r=a;
for(;l<r;)
if(sum(mid,mid)*(a-mid+)-sum(mid,a)<=b)
r=mid;
else
l=mid+;
b-=sum(l,l)*(a-l+)-sum(l,a);
change(l,a,sum(l,l));
add(l,a,b/(a-l+));
if(b%(a-l+))
add(l,l+b%(a-l+)-,);
}
for(int i=;i<=n;i++)
printf("%lld\n",sum(i,i));
return ;
}

atcoder square869120Contest#3 F 寿司的更多相关文章

  1. [atcoder contest 010] F - Tree Game

    [atcoder contest 010] F - Tree Game Time limit : 2sec / Memory limit : 256MB Score : 1600 points Pro ...

  2. 【AtCoder】AGC022 F - Leftmost Ball 计数DP

    [题目]F - Leftmost Ball [题意]给定n种颜色的球各k个,每次以任意顺序排列所有球并将每种颜色最左端的球染成颜色0,求有多少种不同的颜色排列.n,k<=2000. [算法]计数 ...

  3. 【AtCoder】AGC005 F - Many Easy Problems 排列组合+NTT

    [题目]F - Many Easy Problems [题意]给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模92484403 ...

  4. 【AtCoder】ARC067 F - Yakiniku Restaurants 单调栈+矩阵差分

    [题目]F - Yakiniku Restaurants [题意]给定n和m,有n个饭店和m张票,给出Ai表示从饭店i到i+1的距离,给出矩阵B(i,j)表示在第i家饭店使用票j的收益,求任选起点和终 ...

  5. 【AtCoder】ARC082 F - Sandglass

    [链接]F - Sandglass [题意]给定沙漏A和B,分别装着a和X-a的沙子,开始时A在上B在下,每秒漏1,漏完不再漏.给定n,有n个时刻ai沙漏倒转.给定m个询问,每次询问给定初值a和时刻t ...

  6. 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)

    题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...

  7. 【AtCoder ARC076】F Exhausted? 霍尔定理+线段树

    题意 N个人抢M个椅子,M个椅子排成一排 ,第i个人只能坐[1,Li]∪[Ri,M],问最多能坐多少人 $i$人连边向可以坐的椅子构成二分图,题意即是求二分图最大完美匹配,由霍尔定理,答案为$max( ...

  8. AtCoder abc 141 F - Xor Sum 3(线性基)

    传送门 题意: 给出\(n\)个数\(a_i\),现在要将其分为两堆,使得这两堆数的异或和相加最大. 思路: 考虑线性基贪心求解. 但直接上线性基求出一组的答案是行不通的,原因之后会说. 注意到如果二 ...

  9. [题解] Atcoder AGC 005 F Many Easy Problems NTT,组合数学

    题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出 ...

随机推荐

  1. BZOJ 1201 [HNOI2005]数三角形:枚举 + 前缀和

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1201 题意: 有一个边长为n的正三角形网格,去掉其中一些线段,问你在这幅图中有多少个三角形 ...

  2. listen and translation exercise 53

    It was hard work and there weren't any interesting things for him. You should be an expert with comp ...

  3. Visual Studio 2012简体中文专业版密钥(激活码)

    VS2012 正式版在Beta版的基础上进行了很多改进,尤其是加入了全新的用户界面. VS2012 的硬件需求与VS2010相同,不过由于 Visual Studio 2012 利用了新版 Windo ...

  4. HihoCoder1656 : 前缀后缀查询([Offer收割]编程练习赛39)(字典树+小技巧)

    描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si.他希望 ...

  5. 博客和GitHup链接地址

    硕哥博客链接:http://www.cnblogs.com/999-/p/6073601.html 硕哥GitHup链接:https://github.com/xiaodoufu

  6. WPF DatePicker 的textbox的焦点

    要得到DatePicker的textchange属性, 必须通过TextBoxBase.TextChanged 事件来处理. 想要判断是否当前DatePicker的textbox获取到焦点, 可以通过 ...

  7. Oracle创建表,并添加默认值和备注

    create table testemp( id varchar2(50) default sys_guid(),deptno varchar2(20) ,--部门编码 ename varchar2( ...

  8. .NETFramework:Random

    ylbtech-.NETFramework:Random 1.程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c ...

  9. 安装时后的idea,项目不能运行,pom.xml文件不能下载到本地仓库,maven配置是正确的

    安装时后的idea,项目不能运行,pom.xml文件不能下载到本地仓库,maven配置是正确的 项目上传到svn后,同事下载项目后,没有识别出来mavn中的pom.xml文件,导致idea不能自动下载 ...

  10. selenium2获取input输入框中的值的三种方法。