【题解】2019/10/9 日测试

今天又是自己被虐的一天

今天难度大概是省选难度-,noip+

x姓巨佬100+0+20

g姓巨佬100+10+0

窝:60+10+0

又被爆踩了。。。

先放题面吧

t1的话就是一个权值树状数组,先进行问题转化,将T从小到大排序,问题就成了sum(l)-n*t1-(n-1)*t2...1*tn

然后可以用线段树,权值树状数组,splay等维护

code:

#include<bits/stdc++.h>
#define re register
#define inc(i,j,k) for(re int i=j;i<=k;++i)
#define ll long long
using namespace std;
const int maxn=200010;
inline int read()
{
    re int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘) {if(ch==‘-‘) f=-1; ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘) {x=x*10+(ch^48); ch=getchar();}
    return x*f;
}
int n,m,L[maxn],T[maxn],tmp[maxn];
ll ans=0;
struct Tree
{
    ll t1[maxn<<1],t2[maxn];
    int lowbit(int x)
    {
        return (x&(-x));
    }
    void add(int x)
    {
        int k=x;
        for(;x<=maxn-10;x+=lowbit(x))
        {
            t1[x]++;
            t2[x]+=k;
        }
    }
    void remove(int x)
    {
        int k=x;
        for(;x<=maxn-10;x+=lowbit(x))
        {
            t1[x]--;
            t2[x]-=k;
        }
    }
    ll query(int x,int k)
    {
        ll ans=0;
        for(;x;x-=lowbit(x))
        {
            ans+= (k==1) ? t1[x] : t2[x];
        }
        return ans;
    }
}tt;
int main()
{
//    freopen("work.in","r",stdin);
//    freopen("work.out","w",stdout);
    n=read(); m=read();
    inc(i,1,n) L[i]=read(),T[i]=read(),ans+=L[i],tmp[i]=T[i];
    sort(tmp+1,tmp+1+n);
    inc(i,1,n) tt.add(tmp[i]),ans-=tt.query(tmp[i],2);
    printf("%lld\n",ans);
    inc(i,1,m)
    {
        int pos=read(),l=read(),t=read();
        ans+=(l-L[pos]),L[pos]=l;
        ans+=(ll)(n-tt.query(T[pos],1)+1)*T[pos];
        ans+=(ll)(tt.query(T[pos],2))-T[pos];
        tt.remove(T[pos]);
        T[pos]=t;
        tt.add(T[pos]);
        ans-=(ll)(n-tt.query(T[pos],1)+1)*T[pos];
        ans-=(ll)(tt.query(T[pos],2))-T[pos];
        printf("%lld\n",ans);
    }
}

t1存的是Tpos前面的系数

t2存的是k*tpos

这样在减去t2的过程中就可以相当于所有其他位的数统一移动了

t2,t3没改完。。。 也暂时没有题解

原文地址:https://www.cnblogs.com/ZzTzZ/p/11643651.html

时间: 2024-10-06 23:37:49

【题解】2019/10/9 日测试的相关文章

2019/10/2 图论测试小结

T1: 题意:求一棵树上两条点不交路径,使它们的点权之和最大: 思考过程:联想到了一个相似的问题——树上求k条边不交路径的最大边权和,想到了拆点为边,很快发现不对.考虑到仅有两条边于是先求出一条直径,再分类讨论看第二条路是否经过第一条直径,不经过则bfs求最大值,经过则对直径上每一个点求一个最长的.以它为端点的.不经过直径上点的链,然后贪心求最大值. 题解:同思路: T2: 题意:一个完全图,一课树,完全图上两点之间的距离等于树上两点之间的距离,在完全图上求最长哈密顿路径: 思考过程:没想拿满分

2019.10.22日上午学习内容

1.学习了a标签的使用方法及主要功能(超链接,下载,锚点). (1)超链接<a href="http://www.baidu.com">跳转到百度</a> (2)下载,网页能识别打开的,不能下载,如txt文件 ,图片文件,网页文件等:网页识别不了的可以下载,如压缩包等 <a href="..wenjian.rar">点击下载</a>一定要找好路径 (3)锚链接,主要是本网页内,回顶部回底部的练习 <div id=

9.9 日测试

本次测试我们使用Java编写了一个学生的成绩管理系统: 具体要求如下: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore, databasescore,softwarescore). 各成员的含义如下: 变量 stunumber 为字符串类型 String,用于存储学生的学号(有 8 位数字组成). 变量 name 为字符串类型 String,用于存储学

开发者常用的10大GUI测试框架

1.Abbot - Java GUI 测试框架 Abbot是一个基于GUI的简单的Java测试框架,它能够帮助开发者测试Java用户界面. 它提供事件自动生成和验证Java GUI组件,使您能够轻松地启动,探索和控制应用程序.开发者可通过脚本和编译代码两种方式来使用Abbot框架,这就是为什么它被认为是在开发者的系统测试和QA的功能测试中都能用到的最完美的GUI测试工具. 2.EggPlant - GUI自动化测试工具 EggPlant是一个QA的GUI自动化测试工具,它是为使专业商业软件的应用

2019.10.19初赛滚粗后的日子

写在故事的前面的话 人生中第一次考CSP-S,然后考得有点自闭,我想我写这篇blog并不是想要说AFO之类的话,相反,我觉得自己应该继续坚持下去的丫子.自己以前欠了很多知识,以前是自己初中时期的不认真,现在我就把自己当成是高一才学OI的萌新,忘记过去对自己的一些期望,重新开始自己的OI生涯. 2019.10.19 今天在自闭完了之后还是逐渐接受了初赛没有多大几率过的事实,开始复习起之前学的东西.首先,今天开始复习树形DP(入门).list如下: Park visit (已过) 没有上司的舞会 (

2019.10.27 头条面试准备

2019.10.27 头条面试准备 个人简历 2019.06 - 至今上海华为开发工程师 实习部门:5G开发部 项目:网站开发.运维开发.数据处理 2019.06至今华为实习 Python+Django+Javascript+Nginx+rabbitMQ+ELK 基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录.进程异常自动恢复.发送告警邮件,并且用 Web 界面进行展示和管理.整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定. 使用Python

离线赛 2019.10.31

2019.10.30 \[ Ameiyo \] A: 地精部落 : Dp , 前缀和优化 Dp B: 深入虎穴 : 图,结论题 C: 教义问答手册 : 分治,分块,Dp A 挺简单的一道 Dp ...看 这个博客 . B 其实可以用 dijsktra 做这道题,但是每次用来更新的都是自己的次小值. 因为当你走到当前点时,老虎会让你不能走最小值,所以是用次小值更新. 每次也是拿次小值最小的点出来更新. ll mi[N][2]; struct NODE { int id; ll w; inline

2019.10.21 csp-s模拟测试81 反思总结

T1: 把每一行状压,按行DP.设fi,j,k,i表示第几行,j是当前行的1覆盖状态,k是当前行选择按钮的状态.转移的时候枚举j和k,再枚举下一层的按钮选择情况l.如果l和j可以全覆盖当前层则转移合法,根据下一层选择l状态的代价进行转移.预处理一行每一种选法i可以覆盖到的状态di,各行选择按钮状态i对应的代价dpi,以及每一行的初始状态bi.转移时下一层的覆盖情况就是k|dl|bi+1.初始化第一层是所有选法i对应的代价,即f1,d[i]|b[1],i=dp1,i. 整个DP过程的复杂度是O(3

2019.10.26 csp-s模拟测试88 反思总结

今天的主人公是什么? 60.1K!!!! 先扔代码再更新防止我等会儿一上头不打算写完题解 T1: #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const double inf=214748364; int n,k; double a[100010],f[21][100010]; int main() { scanf("%d%d",&n