题意:

给你一个\(n*n\)的矩阵A,其中有\(T\)个元素不为零。定义矩阵内元素\((x,y)\)的能量值

\(E[x][y]=\sum_{i=1}^{x}\sum_{j=1}^{y}[A[i][j]>0]\)

有\(m\)个询问\((x,y,d)\),每次询问是否存在二元组\((x',y')\)满足 \(x'=x\) 或 \(y'=y\) ,使得

\(E[x'][y']*A[x'][y']>=d\)

如果存在,则\(ans1++,ans2+=min(E[x'][y'])\)。否则将 \(A[x][y]\) 修改为零。最后输出\(ans1\)和\(ans2\)。

题解:

暴力出奇迹!

我们注意到这道题的时限是5秒,并且还开O2,因此我们只需要打一个优雅的暴力然后卡一波常数即可通过此题。

我们对每一行和每一列都开一个树状数组,维护第\(i\)行(列)前j个数中,不为零的元素个数。对于每一个询问,我们暴力枚举每一个可行元素,用树状数组查询其能量值,求出符合条件的最小能量值。对于修改,我们只需要修改两个树状数组即可。时间复杂度\(O(mnlogn)\)

代码如下:

#include<bits/stdc++.h>
#define LL long long
using namespace std; const int N=1000+50,M=1000000+50;
int n,T,m,a[N][N],R[N][N],C[N][N];
LL d[M]; inline int read(){
int x=0,f=1;char ch;
for(ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
for(;isdigit(ch);ch=getchar())x=(x<<3)+(x<<1)+ch-'0';
return x*f;
}
inline int lowbit(int x){
return x&(-x);
}
inline void Add(int F[],int x,int val){
for(;x<=n;x+=lowbit(x))F[x]+=val;
}
inline int Query(int F[],int x){
int ans=0;
for(;x;x-=lowbit(x))ans+=F[x];
return ans;
} int main(){
n=read(),T=read();
for(register int i=1;i<=T;++i){
int x=read(),y=read(),w=read();
a[x][y]=w;
Add(R[x],y,1);Add(C[y],x,1);
}
m=read();
for(register int i=1;i<=m;++i)d[i]=1LL*read();
int ans1=0;LL ans2=0;
for(register int i=1;i<=m;++i){
int x=read(),y=read();
int flag=0,mincost=1e9;
for(register int j=1,cost=0;j<=n;++j){
cost+=Query(R[j],y);
if(a[j][y] && 1LL*cost*a[j][y]>=d[i]){
flag=1;mincost=cost;break;
}
}
for(register int j=1,cost=0;j<=n;++j){
cost+=Query(C[j],x);
if(a[x][j] && 1LL*cost*a[x][j]>=d[i]){
flag=1;mincost=min(mincost,cost);break;
}
}
if(flag)++ans1,ans2+=1LL*mincost;
else{
if(a[x][y]){
a[x][y]=0;
Add(R[x],y,-1);Add(C[y],x,-1);
}
}
}
printf("%d\n%lld\n",ans1,ans2);
return 0;
}

ETO的公开赛T4《对抗水滴》 题解(BY 萌萌哒123456 )的更多相关文章

  1. ETO的公开赛T2《宏聚变》 题解(BY 萌萌哒123456 )

    我们注意到这道题中最多有 $(n+q)$ 个数被加入,而每个数最多被删除一次,因此每次操作 $O(logn)$的复杂度是可以接受的. 我们对于$1..100000$之间每个数分别开一个set,维护这个 ...

  2. ETO的公开赛T3《寻星》 题解(BY 超級·考場WA怪 )

    题解 寻星 题意:给定一个有向带权图,定义从一点到另一点的某条路径长为路径上所有边权的最大值,并给定四个点编号w,t1,t2,t3. 求出一个点s,使它在到t1,t2,t3三点最短路径最大值最大或者根 ...

  3. ETO的公开赛T1《矿脉开采》题解(正解)(by Zenurik)

    作为T1,当然是越水越好啦qwq 显然经目测可得,那个所谓的质量评级根本就没卵用,可以直接\(W_i = W_i^{V_i}\)累积到利润里面. 这样,本问题显然是一个"子集和"问 ...

  4. ETO的公开赛T1《矿脉开采》题解(另类版)

    这道题别看是签到题,写起来一点不简单 出题人的正解是双向搜索 我们把物品分成两半 每一半分别跑搜索 答案存下来,用个双指针合并即可 然后我构造了两组数据卡掉了他,不得不缩小数据范围 但我这里为什么要致 ...

  5. ETO的公开赛T5《猎杀蓝色空间号》题解

    这道题别看题面这么长,其实题意很简单 就是让你求从起点开始的最长合法区间 合法的要求有两个:兜圈子和直飞 且这两个条件相互独立 (也就是说兜圈子的末尾不会对下面可能出现的直飞造成影响) 举个例子: 1 ...

  6. 6.12友谊赛T4城市交通费题解

    与普通的最短路径不同的是,题目中新引入了一个计入总体的费用——城市建设费.由于城市建设费由整体的某最大值决定,导致解没有最优子结构的性质,给思维带来难度. 既然最棘手的是城市建设费,我们就对它分类讨论 ...

  7. [V&N2020 公开赛] Web misc部分题解

    0x00 前言 写了一天题目,学到了好多东西, 简单记录一下 0x01 Web HappyCTFd 直接使用网上公开的cve打: 解题思路:先注册一个admin空格账号,注意这里的靶机无法访问外网,邮 ...

  8. T4 分配时间 题解

    问题描述 小王参加的考试是几门科目的试卷放在一起考,一共给 t 分钟来做.他现在已经知道每 门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他 算一下他最高能得几分.总分 ...

  9. LibreOJ β Round #2

    题解: 都是不错的技巧题目 t1暴力就不说了 t2dp是比较显然的 然后发现都是0,1用bitset优化 代码非常短 t3容易发现这个东西在不断合并 于是我们想到启发式合并 存疑:splay启发式合并 ...

随机推荐

  1. 动态网页开发jsp

    1.动态网页的优势?    ①交互性:即网页会根据用户的要求和选择而动态改变和显示内容.    ③自动更新:即无需改变页面代码,便会自动生成新的页面内容.    ④随机性:即当不同的时间.不同的人访问 ...

  2. Java笔记之Scanner先读取一个数字,在读取一行字符串方法分析

    问题:大家在学习Java读取数据的时候一般都是使用Scanner方法读取数据,但是其中有一个小问题大家可能不知道, 就是我们在使用scanner的时候如果你先读取一个数字,在读取一行带有空格的字符串, ...

  3. oracle学习篇一:sqlplus常用命令

    1.程序运行--> cmd --> sqlplus 登陆普通用户:scott/brant;普通管理员用户登陆:system/brant;高级管理员用户登陆:1>先切换其他用户:SQL ...

  4. mysql四-1:单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

  5. 21_AOP_Advice增强2(异常、引介)

    [异常抛出增强] 异常抛出异常最适合的应用场景:事务管理. 当参与事务的某个Dao发生异常时,事务管理器就必须回滚事务. [异常抛出增强 例子] [操作数据库的Dao类:PersonDao.java] ...

  6. ArcGIS Engine从服务器(ArcSDE geodatabases)读取数据

    从远程服务器读取数据进行处理,直接贴代码: public class ConnectDB { private static String SERVER = "xxx.xxx.xxx.xxx& ...

  7. scala之Duration

    import scala.concurrent.duration._ val duration = Duration(100, MILLISECONDS) val duration = Duratio ...

  8. 再学UML-Bug管理系统UML2.0建模实例(二)

    2.3 BMS顺序图(需求模型)       在UML中,我们将顺序图分为两类,一类用于描述系统需求,构造系统的需求模型(分析模型):另一类用于指导设计与实现,构造系统的实现模型(设计模型).     ...

  9. php连接MySQL分析

    Mysql:在PHP脚本中操作MySQL数据库的的几个步骤如下: 1.连接MySQL数据库服务器,并判断是否连接正确 2.选择数据库,并设置字符集(可选) 3.执行SQL命令 4.处理结果集 5.关闭 ...

  10. 《浪潮之巅》(第2版):精彩的IT商战史

    2011年看过第一版.以为看新版会跳过大部分看过的内容,结果发现还是从头到尾看了一遍,2011年看过的内容已经记不太确切了:) 另外IT的历史太精彩了,许多故事都知道,再看还是挺有意思.当然作者的文字 ...