[Codeforces773E] [线段树] [找规律] Blog Post Rating

WWW2018-Neural Attentional Rating Regression with Review-level Explanations 在电商平台中,Review信息对于用户而言是十分有用的,然而,却很少有人对Review的有效性进行研究。 阅读详情

题意大概是
有一个博客,初始赞数为0,每个人会浏览这篇博客,如果这个人期望的赞数大于这边博客的赞数,他就会赞这篇博客,如果小于这篇博客,就踩一下(博客赞数-1),相同就不操作。询问对于每个i,1~i的人按照一个顺序浏览,求一种顺序使得博客最后的赞数最大,输出这个最大的赞数。

先瞎猜一下,这1~i个人肯定是按照期望的赞数升序访问最优。
然后写个暴力交一下,发现T了,说明这个结论是对的

那么只要维护一下这个序列就可以了。可以用权值线段树维护。
考虑怎么求这个按照这个升序顺序访问能得到的答案。

首先ai(ai是当前排序后的数列中的第i个,不是原始数列的)是可能有负数的,那么肯定存在某个x,使ax<=−x,那么在x的位置,博客的赞数为−x,从x+1开始,博客的赞数就会单调不减。
用f(i)表示在i位置博客的赞数,那么f(i)=min(f(i−1)+1,ai)
展开展开展开发现一个区间[l,r] ,长度为k
f(r)=min(f(l−1)+k,al+k−1,al+1+k−2,......,ar−1+1,ar)

那么每个区间维护一下min(al+k−1,al+1+k−2,......,ar−1+1,ar)就好了

#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 500010

using namespace std;

typedef pair<int,int> parii;

int n;
int a[N];
parii b[N];
struct func{
  int mn,tot;
  int val(int x){
    return min(x+tot,mn);
  }
  friend func operator *(func a,func b){
    a.tot+=b.tot;
    a.mn=min(b.mn,a.mn+b.tot);
    return a;
  }
};
struct seg{
  int l,r,mx;
  func f;
}T[N<<3];

void Build(int g,int l,int r){
  T[g].l=l; T[g].r=r; T[g].mx=-(1<<30);
  T[g].f.tot=0; T[g].f.mn=1<<30;
  if(l==r) return ;
  int mid=l+r>>1;
  Build(g<<1,l,mid); Build(g<<1|1,mid+1,r);
  T[g].f=T[g<<1].f*T[g<<1|1].f;
}

void Update(int g,int x,int y){
  T[g].mx=max(T[g].mx,y);
  if(T[g].l==T[g].r){
    T[g].f.tot++; T[g].f.mn=y;
    return ;
  }
  int mid=T[g].l+T[g].r>>1;
  if(x<=mid) Update(g<<1,x,y);
  else Update(g<<1|1,x,y);
  T[g].f=T[g<<1].f*T[g<<1|1].f;
}

int Calc(int g,int l,int r){
  if(T[g].l==l&&T[g].r==r) return T[g].f.tot;
  int mid=T[g].l+T[g].r>>1;
  if(r<=mid) return Calc(g<<1,l,r);
  if(l>mid) return Calc(g<<1|1,l,r);
  return Calc(g<<1,l,mid)+Calc(g<<1|1,mid+1,r);
}

int Find(int g,int l,int r){
  if(T[g].l==l&&T[g].r==r) return T[g].mx;
  int mid=T[g].l+T[g].r>>1;
  if(r<=mid) return Find(g<<1,l,r);
  if(l>mid) return Find(g<<1|1,l,r);
  return max(Find(g<<1,l,mid),Find(g<<1|1,mid+1,r));
}

func Query(int g,int l,int r){
  if(T[g].l==l&&T[g].r==r) return T[g].f;
  int mid=T[g].l+T[g].r>>1;
  if(r<=mid) return Query(g<<1,l,r);
  if(l>mid) return Query(g<<1|1,l,r);
  return Query(g<<1,l,mid)*Query(g<<1|1,mid+1,r);
}

inline bool check(int x){
  int num=Calc(1,1,x),last=Find(1,1,x);
  return last<=-num;
}

int main(){
  freopen("1.in","r",stdin);
  freopen("1.out","w",stdout);
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
    scanf("%d",&a[i]),b[i]=parii(a[i],i);
  sort(b+1,b+1+n);
  for(int i=1;i<=n;i++) a[b[i].second]=i;
  Build(1,1,n);
  for(int i=1;i<=n;i++){
    Update(1,a[i],b[a[i]].first);
    int L=1,R=n,mid,cur=-1;
    while(L<=R) check(mid=L+R>>1)?L=(cur=mid)+1:R=mid-1;
    if(cur==-1) printf("%d\n",Query(1,1,n).val(0));
    else{
      int num=Calc(1,1,cur);
      if(cur==n){ printf("%d\n",-num); continue; }
      printf("%d\n",Query(1,cur+1,n).val(-num));
    }
  }
  return 0;
}
概率论基础-严士健 第二版 习题与补充1.6答案 概率论基础-严士健 第二版 习题与补充1.6答案 1.不独立。 设有一均匀正八面体,其第1,2,3,4面染红色,第1,2,3,5面染白色,第1,6,7,8面染黑色,现在以A,B,C分别表示投一次正八面体出现红、白、黑的事件,则 P(A)=P(B)=P(C)=12.P(A) = P(B) = P(C) = \frac{1}{2}.P(A)=P(B)=P(C)=21​. P(ABC)=18=P(A)P... 阅读详情

相关推荐

手把手教你解决USB批量传输中512字节整数倍数据丢失问题

本文详细解析了USB批量传输中512字节整数倍数据丢失问题的根源,并提供了通过零长度包(ZLP)的解决方案。文章涵盖USB协议核心机制、ZLP实现代码示例(包括Android、Linux和Windows平台)、调试技巧及性能优化建议,帮助开发者彻底解决这一常见问题。

smartcontract5的博客 261

2016各大公司智力题和找规律题

1. 如下图所示,1~9诸数各有一个规定的符号,请据此回答下列问题。 1 2 3 4 5 6 7 8 9 ( = / × \ + - )   9与什么符号相对应? ÷ + — \ 答案:A,因为其他

wusecaiyun的专栏 1万+

从零开始学嵌入式之STM32——1.什么是STM32

它是ST公司推出的一系列单片机的统称。ST----指的是ST公司----意法半导体。意法半导体,成立于1987年,是由意大利的SGS微电子公司和法国的Thomson半导体公司合并而成。ARM目前主要是ARM架构处理器及外围组件的电路设计方案,知识产权授权的形式收取费用,其他公司根据ARM的方案设计出CPU产品。,它以应用为核心,软硬件可裁剪,旨在实现对设备的控制、监测或辅助功能,区别于通用计算机(如 PC、服务器)的 “一机多用” 属性。在嵌入式领域,目前主流的是cortex-M3内核推出的芯片。

qshdyy的博客 1853

智力题刷题

智力题刷题 1、如下图所示,1~9诸数各有一个规定的符号,请据此回答下列问题。符号组合“+)(/×=-”对应的是( ) 1 2 3 4 5 6 7 8 9 ( = / × \ + - ) A、68134527 B、61384527 C、61854327 D、61854327 正确答案: A 【解析】 根据这8个符号一一对应表格8个数字 得出68134527 2、两枚导弹相距41,620公里,处于同一路线彼此相向而行。其中一枚以每小时36,000公里的速度行驶。另一枚以每小时24,000

weixin_46597962的博客 2807

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1333

模型算力需求估算

(Billion Parameters,简称B)和训练/推理的计算任务复杂度,结合硬件计算能力(例如每秒浮点运算次数,FLOPS)来估算。以下是详细的方法和公式说明,以及实际的计算示例。算力需求的估算依赖于参数量、模型架构及硬件性能,结合训练/推理场景的特定要求来计算。通过上述公式和示例,我们可以定量分析不同任务的算力需求,并合理配置硬件资源以优化运行效率。结论:推理任务相对较轻,单台H100可以在30秒内完成此任务。推理算力需求一般远低于训练,因为只需要执行前向传播。,可以将训练时间缩短到约。

形上得其象,形下合于数;阴阳自济,玄理自明。 8949

三道智力题

题目1:   此题的关系真的很复杂,理得越久越容易被绕晕,希望大家有自己的思维!   在一块墓碑上刻着很不一样的碑文,曾让无数人前来推测和祭奠。到底它有什么特别之处呢?它的碑文如下,相信你看了也会疑惑:          如果包括同母异父或同父异母的关系,那么埋葬在墓地里的最少有几个人? 题目2:     此题需要你的分析外加常识性知识哦!     下图显示的是一

xiaodao28的博客 1037

Android应用开发从零到一:基于Kotlin与Jetpack Compose的完整实践指南

移动应用开发的核心在于构建一个架构清晰、可维护且可扩展的应用基础。理解应用架构的原理,如关注点分离和数据驱动UI,是实现高质量应用的关键技术价值。在现代Android开发中,Kotlin语言凭借其空安全特性和协程,能有效提升代码的健壮性与开发效率。Jetpack Compose作为声明式UI框架,代表了UI开发的未来方向,与Kotlin协程深度集成,简化了复杂交互界面的构建。这些技术共同服务于个人任务管理、企业工具等多种应用场景。本文以构建一个完整的个人任务管理应用为例,系统阐述从环境搭建、UI构建、数据持

weixin_32667955的博客 313

codeforces 773F. Test Data Generation

%%%tourist问有多少个符合条件的集合,使an/g−na_n/g-n和an/ga_n/g,an−na_n-n奇偶性不一样 要使an/g−na_n/g-n和an/ga_n/g奇偶性不一样,只要n是奇数就行了 要使an/g−na_n/g-n和an−na_n-n奇偶性不一样,就是要使an/ga_n/g和ana_n奇偶性不一样,就是说,集合里最大的数在去掉集合的gcd后改变了奇偶性,因为奇数去掉因

L_0_Forever_LF的专栏 713

基于RTL8367S与XS2184的工业级POE交换机硬件设计全解析

本文深入解析基于RTL8367S与XS2184芯片的工业级POE交换机硬件设计,涵盖核心价值、芯片选型、原理图设计、PCB布局及可靠性验证等关键环节。重点探讨双芯片协同工作优势,如RTL8367S的自适应调度算法和XS2184的智能功率分配功能,为工业环境下的稳定供电与数据传输提供专业解决方案。

weixin_42614269的博客 458

《FreeRTOS 入门与实战》第20章:移植到 RISC-V 平台

处理器上下文保存/恢复机制中断处理与任务切换的协同时钟源配置(通常使用 Machine Timer)平台特定的汇编代码实现// 典型RISC-V移植文件结构FreeRTOS/├── Source/portable/[编译器]/RISC-V/│ ├── port.c // 关键移植接口│ ├── portASM.s // 汇编级处理│ └── portmacro.h // 架构宏定义。

2301_79143213的博客 448

Codeforces

1.背景 可能很多人都久闻codeforces网站的大名,却苦于各种各样的区域性问题或玄学问题,没能真正地体验到cf所带来的极致魅力       2.关于codeforces   Codeforces 简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏). 网址: codeforces.com   这是一个俄国的算法竞赛网站,由来自萨拉托夫州立大学、由Mike Mirzaya...

无限迭代中...... 4606

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

原创吐槽之诸题

今天很郁闷,因为有很多数论的题目,在各种数学大神的面前,只能跪了。 稍微欣慰的是,产生素数表的程序,一分钟搞定,贴上来: #include&lt;iostream&gt; using namespace std; int n[100001]; int main(){ for(int i=0;i&lt;100001;i++) n[i]=1; n[0]=0; n[1]=0; for(...

wqisen's workspace 149

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CF773E Blog Post Rating

题意:有一篇博客。一共有n个人,心中有他们期望该博客得到的赞数a[i]。当某个时刻该博客的获赞数<a[i],则该人会使得赞数+1,当赞数>a[i],该人会使得赞数-1,当赞数=a[i],不做任何改变。 对于1<=k<=n,询问1~k个人按一定的顺序给该博客从0开始点赞或点踩,该博客的最大获赞数。 -1e5<=a[i]<=1e5,n<=1e5。...

b121382291的博客 555

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

CF773E Blog Post Rating(推导min的通项/线段树)

CF773E Blog Post Rating 现在有一个值F,每次如果序列加入一个数后重新排列,每次如果F小于期望值,就会+1,如果等于就不变,如果大于就-1,求解每一次加入后F的最大值。 这道题的确是非常的巧妙,尤其是对于答案的公式推导,显然如果只有一段可以看出是一个min的形式,但是当问题变为多段时就变得复杂,但是我们可以写出min形式的递推式,然后以此来得到通项式。 ...

xajd1906的博客 219

[线段树 杂题] Codeforces 806E VK Cup 2017 Round 3 E. Blog Post Rating

这个我们发现排好序后跑答案是最大的 然后就是维护一个支持插入的序列 我本来想把权值相同的压成一段 然后就gg 出门左转神犇学弟博客#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;

雯舞 736

codeforces 773C Epidemic in Monstropolis(贪心?构造?模拟?乱搞!)

C. Epidemic in Monstropolis time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There was an epidemic in Monstro

Chunzhen的博客 1341

Blog Post Rating CodeForces - 806E (线段树二分)

题目链接 题目大意: 有一个博客, 初始分数为$0$, 有$n$个人, 第$i$个人有一个期望值$a_i$, 如果第$i$个人浏览博客时,博客赞数高于$a_i$博客分数$-1$, 低于$+1$, 相等不变, 对于每个$i$, 求出$[1,i]$的人按任意顺序浏览博客后最大分数. 题解: 首先, 用贪心可以知道所有人按期望升序排列, 最后得分一定最大 由于期...

weixin_30387339的博客 287

【CodeForces773F】Test Data Generation

【题目链接】 点击打开链接 【思路要点】 题目给出的限制等价于: NNN 为奇数, aNa_NaN​ 为偶数, aNg\frac{a_N}{g}gaN​​ 为奇数。 考虑枚举 aNa_NaN​ 的因子 222 的个数,并令 ggg 也含有那么多因子 222 ,则问题转化为了:求有多少个长度为奇数的递增序列,满足最后一位也为奇数,且长度在 NNN 以内,值域在 VVV 以内。 记 odd...

cz_xuyixuan的博客 419

第一章 诸论 下

级数 LCS的动态规划思想 Fibonacci斐波那契数列 汉诺塔问题

Viator 959

codeforces第一次GYM经历

昨天参加了codeforces的GYM,从21.10——2.10,因为寝室会定时断电,所以我和队友只好在实验室打(同时也 是第一次在实验室住的经历,汗。。)。        a题很快就水过了,发现J题有人过,就去看J题,但是没咋看懂(题目描述的实在太奇葩,后面看懂了发现也是一 个水题),于是开始找其他题。这个时候门管来查房了(实验室晚上不让住,而且前天发生了有实验室电脑被偷的事 件,就更要

ilblue的博客 4613

Codeforces Round #773 (Div. 2)D,E

传送门 题目大意: 一个长为n(n2≤250000)n(n^2\leq250000)n(n2≤250000)的序列,每个元素ai(1≤ai≤109)a_{i}(1\leq a_{i}\leq 10^9)ai​(1≤ai​≤109) 可以执行若干次操作,每次在序列中的某个位置插入两个相同的数字,给出一组操作序列,使得操作后的序列可以划分为若干个长为偶数的段,每段长度为kik_{i}ki​,在该段内满足aj=aj+ki2a_{j}=a_{j+\frac {k_{i}}{2}}aj​=aj+2ki​​​,并给出最

Prgl的博客 786

CF773 E - Anonymity Is Important(stl迭代器的各种用法)

E - Anonymity Is Important 分析: 区间覆盖,set去重,剔除无效信息 输出有三种情况: NO:最好处理,在之前被删除过 YES:对于当前x,它前面一个,后面一个不与它共有一个有效区间,也就是说x本身有一个有效区间(有效区间是指可能有病人的区间) N/A:即其它情况,与其它(前或后)有重合区间 剔除无效信息:对于每一个点,至多两个区间对其有效,一个左一点,一个右一点 #include <bits/stdc++.h> #define int long

yezzz的博客 733

codeforces题目分类

多写写cf上的题吧。 以前写的题都没记录,从今天开始记录吧。 记录一下写过的题的做法和分类吧。388A(贪心) 388B(一个不错的构造题,二进制构造)

luotuoqingshan的博客 5614

Codeforces总结

2021年3月29日晚23:20,在看到舍友敲完codeforces div2的比赛的一题上床后,我的心里久久不能安下心,23:35我也打开了codeforces,找到了那场比赛,在看完题之后,发现A题目并不是太难,于是决定参加比赛,提交A题,此时23:50,当我奋斗了半个多小时后,已经是0:28,我赶紧下床打开了笔记本电脑准备提交,可当我提交的时候,提示我未报名不能参与提交,我的内心是崩溃的…不过也懂得了CF的一个规则,未报名不能提交… 在此期间有一个地方卡住我10几分钟 for(int s=n;s!=0

m0_55759099的博客 798
上一篇: [Codeforces 808F] [二分] [最小割] Card Game
下一篇: [Codeforces799F] [哈希] Beautiful fountains rows
LowestJN
博客等级 码龄10年 76粉丝 422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值