ETO的公开赛T4《对抗水滴》 题解(BY 萌萌哒123456 )
题意:
给你一个\(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 )的更多相关文章
- ETO的公开赛T2《宏聚变》 题解(BY 萌萌哒123456 )
我们注意到这道题中最多有 $(n+q)$ 个数被加入,而每个数最多被删除一次,因此每次操作 $O(logn)$的复杂度是可以接受的. 我们对于$1..100000$之间每个数分别开一个set,维护这个 ...
- ETO的公开赛T3《寻星》 题解(BY 超級·考場WA怪 )
题解 寻星 题意:给定一个有向带权图,定义从一点到另一点的某条路径长为路径上所有边权的最大值,并给定四个点编号w,t1,t2,t3. 求出一个点s,使它在到t1,t2,t3三点最短路径最大值最大或者根 ...
- ETO的公开赛T1《矿脉开采》题解(正解)(by Zenurik)
作为T1,当然是越水越好啦qwq 显然经目测可得,那个所谓的质量评级根本就没卵用,可以直接\(W_i = W_i^{V_i}\)累积到利润里面. 这样,本问题显然是一个"子集和"问 ...
- ETO的公开赛T1《矿脉开采》题解(另类版)
这道题别看是签到题,写起来一点不简单 出题人的正解是双向搜索 我们把物品分成两半 每一半分别跑搜索 答案存下来,用个双指针合并即可 然后我构造了两组数据卡掉了他,不得不缩小数据范围 但我这里为什么要致 ...
- ETO的公开赛T5《猎杀蓝色空间号》题解
这道题别看题面这么长,其实题意很简单 就是让你求从起点开始的最长合法区间 合法的要求有两个:兜圈子和直飞 且这两个条件相互独立 (也就是说兜圈子的末尾不会对下面可能出现的直飞造成影响) 举个例子: 1 ...
- 6.12友谊赛T4城市交通费题解
与普通的最短路径不同的是,题目中新引入了一个计入总体的费用——城市建设费.由于城市建设费由整体的某最大值决定,导致解没有最优子结构的性质,给思维带来难度. 既然最棘手的是城市建设费,我们就对它分类讨论 ...
- [V&N2020 公开赛] Web misc部分题解
0x00 前言 写了一天题目,学到了好多东西, 简单记录一下 0x01 Web HappyCTFd 直接使用网上公开的cve打: 解题思路:先注册一个admin空格账号,注意这里的靶机无法访问外网,邮 ...
- T4 分配时间 题解
问题描述 小王参加的考试是几门科目的试卷放在一起考,一共给 t 分钟来做.他现在已经知道每 门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他 算一下他最高能得几分.总分 ...
- LibreOJ β Round #2
题解: 都是不错的技巧题目 t1暴力就不说了 t2dp是比较显然的 然后发现都是0,1用bitset优化 代码非常短 t3容易发现这个东西在不断合并 于是我们想到启发式合并 存疑:splay启发式合并 ...
随机推荐
- RestTemplate请求出现401错误
最近遇到一个请求API接口总是报401 Unauthorized错误,起初是认为这个是平台返回的,后来用Postman请求,发现平台其实返回的是一串json,里面带有一些权限验证失败的消息,但到我们代 ...
- HttpClient请求工具类
package com.yangche.utils; import org.apache.http.NameValuePair; import org.apache.http.client.Clien ...
- 【Spring Cloud】与Spring Boot版本匹配关系
Spring Cloud版本演进情况如下: 版本名称 版本Finchley snapshot版Edgware snapshot版Dalston SR1 当前最新稳定版本Camden SR7 稳定版本B ...
- SQLAlchemy的使用---增删改查
#通过SQLAlchemy对数据库进行增删改查 # 想要操作数据库 先要打开数据库连接 from create_table import engine # 创建会话 - 打开数据库连接 from sq ...
- html5 填表 表单 input output 与表单验证
1.<output> Js计算结果 <form oninput="res.value = num1.valueAsNumber*num2.valueAsNumber ...
- JavaScript入门几个概念
JavaScript入门几个概念 刚刚入门JavaScript的时候,搞懂DOM.BOM以及它们的对象document和window很有必要. DOM是为了操作文档出现的API,document是它的 ...
- MongoDB(online) 优化
MongoDB(online) 优化 1. find.findOne 2. 操作 vip_emp_relation 的一个公共方法 3. 查询记录数 4. save.insert 5. 总结 1. f ...
- ASP.NET MVC Tips
1. _ViewStart.cshtml会在调用每个页面的时候执行,我们可以在页面内设置Layout页面,也可以在这个页面写一些逻辑来根据不同的情况引用不同的Layout页面,详情请参考此处:
- Vbox安装CentOS7及网络配置
安装CentOS7及网络配置 Vbox和其他虚拟机一样,安装完成一个虚拟机,需要配置网络才能实现物理主机和虚拟机之间的访问.虚拟主机和Internet(外网)的访问 1.设置Vbox全局网络 单击主界 ...
- vue项目运行报错:Module bulid failed: Error: Node Sass does not yet support your current environment
出错起因: 从GitLab clone项目 --> 用 npm install 命令下载依赖包 --> #npm run dev,报错 错误截图: 解决方法: 思路:单独 i ...