热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

E.DeadLee:思维导图与拓扑结构的深度解析

题目E.DeadLee:思维导图与拓扑结构的深度解析问题描述:给定n种食物,每种食物的数量由wi表示。同时,有m位朋友,每位朋友喜欢两种特定的食物x和y。目标是通过合理分配食物,使尽可能多的朋友感到满意。本文将通过思维导图和拓扑排序的方法,对这一问题进行深入分析和求解。

题:https://codeforces.com/contest/1369/problem/E

题意:有n种食物,wi 表示第 i 种食物的个数,m个朋友,喜欢俩种食物x和y(x,y<=n),确定朋友吃食物的顺序,每次要是还有喜欢的食物就会吃一个(要是x和y都有则都吃x和y),让每个朋友都能吃到至少一个喜欢的食物

分析:很容易想到,要是需求小于等于 wi ,则第 i 种食物即使全部想要吃它的朋友都有吃到它那也是成立的 ,就不存在分配排序问题。那么我们可以安排这部分到最后,因为前面人即使把其他吃完也能保证能吃到第 i 种食物。

   为了方便处理,我们把x和y处理成无向图的边,需求就是度数d,而处理,虽然要把di<=wi的放在后面,我们可以先处理这部分,最后答案翻转即可,而核心部分的贪心就类似拓扑图去处理,每次选择合法部分(di<=wi)将连着 i 的度数-1。


技术图片技术图片

#include
using namespace std;
typedef
long long ll;
const int mod=1e9+7;
const int M=2e5+5;
#define pb push_back
#define MP make_pair
int w[M],du[M],book[M];
vector

int,int> >g[M];
vector
<int>ans;
queue
<int>que;
int main(){
int n,m;
scanf(
"%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf(
"%d",&w[i]);
for(int x,y,i=1;i<=m;i++){
scanf(
"%d%d",&x,&y);
g[x].pb(MP(y,i));
g[y].pb(MP(x,i));
du[x]
++,du[y]++;
}
for(int i=1;i<=n;i++)
if(du[i]<=w[i])
que.push(i);
while(!que.empty()){
int now=que.front();
que.pop();
for(auto it:g[now]){
int v=it.first,id=it.second;
if(book[id])
continue;
book[id]
=1;
ans.pb(id);
if(--du[v]==w[v])
que.push(v);
}
}
if(ans.size()<m)
return puts("DEAD"),0;
puts(
"ALIVE");
reverse(ans.begin(),ans.end());
for(auto it:ans)
printf(
"%d ",it);
return 0;
}


View Code

 

E. DeadLee(思维,拓扑图处理)



推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • 本指南详细介绍了如何利用华为云对象存储服务构建视频点播(VoD)平台。通过结合开源技术如Ceph、WordPress、PHP和Nginx,用户可以高效地实现数据存储、内容管理和网站搭建。主要内容涵盖华为云对象存储系统的配置步骤、性能优化及安全设置,为开发者提供全面的技术支持。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 数字资产量化交易通过大数据分析,以客观的方式制定交易决策,有效减少人为的主观判断和情绪影响。本文介绍了几种常见的数字资产量化交易策略,包括搬砖套利和趋势交易,并探讨了量化交易软件的开发前景。 ... [详细]
  • 自定义滚动条美化页面内容
    当页面内容超出显示范围时,为了提升用户体验和页面美观,通常会添加滚动条。如果默认的浏览器滚动条无法满足设计需求,我们可以自定义一个符合要求的滚动条。本文将详细介绍自定义滚动条的实现过程。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 两个条件,组合控制#if($query_string~*modviewthread&t(&extra(.*)))?$)#{#set$itid$1;#rewrite^ ... [详细]
  • 本文详细介绍了DMA控制器如何通过映射表处理来自外设的请求,包括映射表的设计和实现方法。 ... [详细]
  • 解决Win10下MySQL连接问题:Navicat 2003无法连接到本地MySQL服务器(10061)
    本文介绍如何在Windows 10环境下解决Navicat 2003无法连接到本地MySQL服务器的问题,包括启动MySQL服务和检查配置文件的方法。 ... [详细]
  • 使用Jsoup解析并遍历HTML文档时,该库能够高效地生成一个清晰、规范的解析树,即使源HTML文档存在格式问题。Jsoup具备强大的容错能力,能够处理多种异常情况,如未闭合的标签等,确保解析结果的准确性和完整性。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
author-avatar
hro5028136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有