当前位置: 首页 > news >正文

ZQC的游戏 题解

前言

这题题意描述不是很清楚啊,所以我找了个有权限的人把题面改了改,应该还是比较清楚了。

感觉这道题挺妙的,就来写一篇题解。

思路

首先,根据贪心思想,我们会将 1 1 1 号点半径以内能吃的都吃了,假设吃完之后它的重量为 s u m sum sum

那么,为了让它成为最大的,第 i i i 个人吃的重量必须满足 e a t i ≤ s u m − w i eat_i \le sum-w_i eatisumwi

那么既然如此,我们就可以考虑建一个网络,对于第 i i i 个人,将他与他半径以内能吃的东西连一条容量为极大值的边,随便找一个入点 s s s 和汇点 t t t。显然,对于第 i i i 个人, s s s 就向他连一条容量为 s u m − w i sum-w_i sumwi 的边(显然,如果更大,那么第一个点就不是最大的了),并对于任意一个球,向汇点连一条边,容量为 w i w_i wi(每个吃的只能被吃一次)。由于每个能吃的球,必须被吃完,所以必须要保证这个网络的最大流是满流(即最大流等于网络中每个球的重量之和),否则,球就吃不完,不满足题意,故第一个节点也就成不了最大的重量。

注意事项:有些球对于所有的人他都吃不到,要自动忽略这些点。

代码

#include<bits/stdc++.h>
using namespace std;
#define maxn 805
#define maxe 40005
int n,m,s,t;
int nx[maxn],ny[maxn],nw[maxn],r[maxn];
int x[maxn],y[maxn],w[maxn];
bool vis[maxn];
struct node
{int tar,nxt;long long num,nu2;
}arr[maxe<<1];
int fst[maxn],cnt=1;
void adds(int x,int y,long long z)
{arr[++cnt].tar=y,arr[cnt].nxt=fst[x],fst[x]=cnt,arr[cnt].num=z;
}
double dis(int x,int y,int z,int w)//求两点距离
{return sqrt((x-z)*(x-z)+(y-w)*(y-w));
}
namespace ISAP//板子
{int dis[maxn],now[maxn],gap[maxn];long long flow;void get_augmentpath(){memset(dis,0x3f,sizeof(dis));memset(now,0,sizeof(now));memset(gap,0,sizeof(gap));queue<int> p;p.push(t);dis[t]=0;now[t]=fst[t];gap[0]=1;while(!p.empty()){int x=p.front();p.pop();for(int i=fst[x];i;i=arr[i].nxt){int j=arr[i].tar;if(dis[j]==0x3f3f3f3f){p.push(j);now[j]=fst[j];dis[j]=dis[x]+1;gap[dis[j]]++;}}}return;}long long dfs(int x,long long sum){if(x==t){flow+=sum;return sum;}long long l=0;for(int i=now[x];i;i=arr[i].nxt){now[x]=i;int j=arr[i].tar;long long k=arr[i].num;if(k>0&&dis[j]==dis[x]-1){long long used=dfs(j,min(k,sum-l));if(used){arr[i].num-=used;arr[i^1].num+=used;l+=used;}if(l==sum) return l;}}--gap[dis[x]];if(!gap[dis[x]]) dis[s]=n+1;++dis[x];gap[dis[x]]++;return l;}int output(){flow=0;get_augmentpath();while(dis[s]<n) memcpy(now,fst,sizeof(now)),dfs(s,LONG_LONG_MAX);return flow;}
}
void input()
{memset(vis,0,sizeof(vis));cnt=1;memset(fst,0,sizeof(fst));//初始化scanf("%d%d",&n,&m);set<int> pqr;//储存那些节点没有被遍历到long long sum=0,leftsum=0;//sum表示总和,leftans表示网络中球的重量之和for(int i=1;i<=n;++i) scanf("%d%d%d%d",&nx[i],&ny[i],&nw[i],&r[i]);for(int i=1;i<=m;++i) scanf("%d%d%d",&x[i],&y[i],&w[i]),pqr.insert(i);s=n+m+1,t=n+m+2;//入点和汇点sum+=nw[1];for(int i=1;i<=m;++i){if(dis(nx[1],ny[1],x[i],y[i])<=r[1]){pqr.erase(pqr.find(i));vis[i]=true;sum+=w[i];}}for(int i=2;i<=n;++i) for(int j=1;j<=m;++j) if(dis(nx[i],ny[i],x[j],y[j])<=r[i]) if(pqr.count(j)) pqr.erase(pqr.find(j));for(int i=2;i<=n;++i){if(sum-nw[i]<0)//如果已经不行了,那就自动忽略{puts("qaq");return;}adds(s,i,sum-nw[i]),adds(i,s,0);//入点和人连边}for(int i=2;i<=n;++i){for(int j=1;j<=m;++j){if(dis(nx[i],ny[i],x[j],y[j])<=r[i])adds(i,j+n,0x3f3f3f3f3f3f3f3f),adds(j+n,i,0);//人与球连边}}for(int i=1;i<=m;++i) if((!pqr.count(i))&&(!vis[i])) adds(i+n,t,w[i]),adds(t,i+n,0),leftsum+=w[i];n=n+m-1;//ISAP一定要改n的值哦int shit=ISAP::output();
//	cout<<shit<<endl;if(shit==leftsum) puts("ZQC! ZQC!");else puts("qaq");
}
signed main()
{int tt;cin>>tt;while(tt--){input();}return 0;
}

相关文章:

ZQC的游戏 题解

前言 这题题意描述不是很清楚啊&#xff0c;所以我找了个有权限的人把题面改了改&#xff0c;应该还是比较清楚了。 感觉这道题挺妙的&#xff0c;就来写一篇题解。 思路 首先&#xff0c;根据贪心思想&#xff0c;我们会将 1 1 1 号点半径以内能吃的都吃了&#xff0c;假…...

24考研数据结构-第一章 绪论

数据结构 引用文章第一章&#xff1a;绪论1.0 数据结构在学什么1.1 数据结构的基本概念1.2 数据结构的三要素1.3 算法的基本概念1.4 算法的时间复杂度1.4.1 渐近时间复杂度1.4.2 常对幂指阶1.4.3 时间复杂度的计算1.4.4 最好与最坏时间复杂度 1.5 算法的空间复杂度1.5.1 空间复…...

Gitlab 备份与恢复

备份 1、备份数据&#xff08;手动备份&#xff09; gitlab-rake gitlab:backup:create2、备份数据&#xff08;定时任务备份&#xff09; [rootlocalhost ]# crontab -l 00 1 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create 说明&#xff1a;每天凌晨1点备份数据…...

数据库—用户权限管理(三十三)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、用户权限类型 ​三、用户赋权 四、权限删除 五、用户删除 前言 数据库用户权限管理是指对数据库用户的权限进行控制和管理&#xff0c;确保用户只能执…...

C语言【怎么定义变量?】

变量定义的目的是向编译器说明在哪里创建变量的存储&#xff0c;并指明如何创建变量的存储方式。变量定义会明确指定一个数据类型&#xff0c;并包含一个或多个变量的列表。例如&#xff1a; type variable_list; 在这里&#xff0c;"type"必须是一个合法的C数据类…...

vue中使用vab-magnifier实现放大镜效果

效果图如下&#xff1a; 1. 首先&#xff0c;使用npm或yarn安装vab-magnifier插件&#xff1a; npm install vab-magnifier或 yarn add vab-magnifier2. 在Vue组件中引入vab-magnifier插件&#xff1a; import VabMagnifier from vab-magnifier; import vab-magnifier/lib…...

无涯教程-jQuery - Highlight方法函数

Highlight 效果可以与effect()方法一起使用。这将以特定的颜色突出显示元素的背景&#xff0c;默认为黄色(yellow)。 Highlight - 语法 selector.effect( "highlight", {arguments}, speed ); 这是所有参数的描述- color - 高亮显示颜色。默认值为"#fff…...

【bar堆叠图形绘制】

绘制条形图示例 在数据可视化中&#xff0c;条形图是一种常用的图表类型&#xff0c;用于比较不同类别的数据值。Python的matplotlib库为我们提供了方便易用的功能来绘制条形图。 1. 基本条形图 首先&#xff0c;我们展示如何绘制基本的条形图。假设我们有一个包含十个类别的…...

ORACLE数据库灾难恢复

一&#xff1a;RMAN恢复 .1 创建测试用户&#xff0c;授权&#xff0c;分配测试表空间&#xff0c;给测试数据 –创建测试用户&#xff1a; SQL> alter session set containerPRODPDB; Session altered. SQL> SQL> show con_name; CON_NAME PRODPDB SQL> cre…...

base和正则备份

js图片网络地址转file文件_朱1只的博客-CSDN博客 JavaScript 图片url地址转base64_图片地址转base64_vanora1111的博客-CSDN博客 前端常用正则表达式(详细版)_前端正则表达式匹配字符串_Ultraman_agul的博客-CSDN博客...

ArcGIS Engine 与 Visual Studio版本对照表

通过C#对于Arcgis的二次开发&#xff0c;需要Visual Studio版本需要与ArcGIS Engine对应&#xff0c;Visual Studio版本的或高或低都不能使ArcObjects SDK for microsoft.Net framework安装成功。下面是各个版本的对照表。 序号ArcEngine版本visual Studio版本Network版本110.…...

JPA连接达梦数据库导致auto-ddl失效问题解决

现象&#xff1a; 项目使用了JPA&#xff0c;并且auto-ddl设置的为update&#xff0c;在连接达梦数据库的时候&#xff0c;第一次启动没有问题&#xff0c;但是后面重启就会报错&#xff0c;发现错误为重复建表&#xff0c;也就是说已经建好的表没有检测到&#xff0c;…...

【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型

【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型 版本更新&#xff1a; 2023/7/29版本&#xff1a; 1.增加自定义参数&#xff0c;方便直接套数据运行。 pre_num3;%预采样数据个数 learn_pr0.85; %训练数据比例&#xff08;不包括预采样数…...

Vue 常用指令 v-on 自定义参数,事件修饰符

自定义参数就是可以在触发事件的时候传入自定义的值。 文本框&#xff0c;绑定了一个按钮事件&#xff0c;对应的逻辑是sayhi&#xff0c;现在无论按下什么按钮都会触发这个sayhi。但是实际上不是所有的按钮都会触发&#xff0c;只会限定某一些按钮&#xff0c;最常见的按钮就…...

重要通知|关于JumpServer开源堡垒机V2版本产品生命周期的相关说明

JumpServer&#xff08;https://github.com/jumpserver&#xff09;开源项目创立于2014年6月&#xff0c;已经走过了九年的发展历程。经过长期的产品迭代&#xff0c;JumpServer已经成为广受欢迎的开源堡垒机。 JumpServer堡垒机遵循GPL v3开源许可协议&#xff0c;是符合4A&a…...

下载快 kaggle output

下载快 kaggle output 文档&#xff1a;下载快 kaggle output.note 链接&#xff1a;http://note.youdao.com/noteshare?id0e89033f5675252add0a39ee97b6f060&sub63D673D0AD224FC581CC30627B4E2ED8 添加链接描述 但是 数据集下载慢 input 里面下载数据集 也是慢的 数据集…...

结构型设计模式-1.代理设计模式

结构型设计模式-1.代理设计模式 结构型设计模式&#xff1a;利用类与类之间的关系&#xff08;继承、组合&#xff09;&#xff0c;形成一种类与类之间的结构&#xff0c;通过这种结构提高代码的可拓展性、可维护性和可重用性。 一、简介 代理设计模式&#xff08;Proxy Des…...

Python(四十九)获取列表指定元素的索引

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...

年轻人的第一套海景房

前段时间新房装修&#xff0c;我把书房设计成工作室的风格&#xff0c;并自己装配了一台电脑&#xff0c;本文是对电脑选购与装配的一则经验贴&#xff0c;仅包含我对计算机硬件的浅薄理解。 配件选购 装机契源 事实上&#xff0c;很多电脑店都提供装配和测试服务&#xff0c…...

Vue输入内容/链接生成二维码

方式一&#xff1a;qrcode&#xff08;无 icon 图标&#xff09; npm i qrcodejs2 --save完整代码 <template><div class"flex-box"><div>qrcode&#xff08;无 icon 图标&#xff09;</div><div class"qr-code" ref"qrCo…...

Gitee与奇安信代码卫士的Java安全扫描实战指南

1. 为什么Java项目需要安全扫描&#xff1f; 最近几年&#xff0c;随着数字化转型加速&#xff0c;Java应用的安全问题越来越受到重视。我见过太多因为代码漏洞导致的数据泄露事件&#xff0c;很多都是因为开发过程中忽视了基础的安全检查。就拿去年某知名电商平台的用户信息泄…...

Python胶水代码变高性能引擎(Mojo原生编译实战手记)

第一章&#xff1a;Python胶水代码变高性能引擎&#xff08;Mojo原生编译实战手记&#xff09;Python 以其简洁语法和丰富生态成为数据科学与系统集成的“胶水语言”&#xff0c;但其解释执行机制常在数值计算、实时推理等场景遭遇性能瓶颈。Mojo 作为新兴的系统级编程语言&…...

OpenClaw安全加固指南:Phi-3-vision本地化部署的权限控制

OpenClaw安全加固指南&#xff1a;Phi-3-vision本地化部署的权限控制 1. 为什么需要安全加固&#xff1f; 上周我在调试一个自动处理发票的OpenClaw流程时&#xff0c;差点酿成大祸。这个流程需要读取财务部门的加密压缩包&#xff0c;解压后提取PDF发票进行OCR识别&#xff…...

seo优化机构怎样选择才合适_什么是seo优化机构

SEO优化机构怎样选择才合适_什么是SEO优化机构 在当今的数字化时代&#xff0c;拥有一个高效的网站已经不再是企业竞争力的唯一标准&#xff0c;更重要的是这个网站能够在搜索引擎上获得良好的排名。这就是搜索引擎优化&#xff08;SEO&#xff09;的重要性所在。选择一个合适…...

程序员体检报告暗语:甲状腺结节=加班等级说明书

一、当体检报告出现“甲状腺结节”翻开软件测试工程师的体检报告&#xff0c;“甲状腺结节”已成为高频词。医学定义中&#xff0c;甲状腺结节是甲状腺细胞异常增生形成的肿块&#xff0c;随吞咽移动&#xff0c;临床检出率超20%&#xff08;数据来源&#xff1a;2023年《中国甲…...

连续“罢工“后编码风格突变!释放多个Agent相关岗位,DeepSeek大招来了?

文章目录前言编码风格突变&#xff0c;像换了个脑回路疯狂招兵买马&#xff0c;一口气放出17个Agent岗位Vibe Coding是个啥&#xff1f;给大脑装上灵活的"手脚"DeepSeek到底在憋什么大招&#xff1f;写在最后前言 你有没有试过&#xff0c;正在跟AI聊得火热&#xf…...

iPhone上跑Transformer太慢?试试EfficientFormer-L1,实测延迟比MobileViT快一倍

iPhone端Transformer模型加速实战&#xff1a;EfficientFormer-L1性能优化解析 移动端AI开发者常面临一个核心矛盾&#xff1a;如何在有限的计算资源下&#xff0c;既保持模型精度又实现实时推理&#xff1f;传统方案往往需要在MobileNet等轻量卷积网络和视觉Transformer&#…...

IDEA插件MyBatisX实战:3分钟搞定SpringBoot项目CRUD代码生成

MyBatisX插件全流程实战&#xff1a;SpringBoot项目CRUD代码生成效率革命 在快节奏的企业级开发中&#xff0c;重复编写基础CRUD代码就像在键盘上跳机械舞——动作标准却毫无新意。当项目包含20张以上数据表时&#xff0c;手动创建Entity、Mapper、Service等层级代码会消耗开发…...

导入MotorCAD API(需先安装MotorCAD的Python接口)

基于Motorcad的4极6槽 内转子采用内插式磁钢 3000rpm 输出转矩 2.6Nm 效率93%外径 94mm 轴向长度70mm 功率800w 直流母线380V 永磁同步电机&#xff08;永磁直流无刷&#xff09;模型(PMSM或者是BLDC) 最近捣鼓了个小功率PMSM模型&#xff0c;用MotorCAD搭了个4极6槽内插式的&a…...

深入Fly-By拓扑:为什么你的LPDDR4必须做Write Leveling?一次讲清时钟与数据对齐的核心原理

深入Fly-By拓扑&#xff1a;为什么你的LPDDR4必须做Write Leveling&#xff1f;一次讲清时钟与数据对齐的核心原理 在4266 Mbps的高速数据传输场景下&#xff0c;LPDDR4内存子系统如同一条需要精确调谐的八车道高速公路。当信号传输速率突破4GT/s时&#xff0c;皮秒级的时序偏差…...