题意:

派会上有n种食物,每种食物有wi份。有m个朋友,每一个朋友有两种他喜欢吃的食物xi,yi。你需要判断他的朋友是否都能吃到食物。如果都能吃到食物,那么要输出朋友来的顺序,不能的话输出“DEAD”。

如果一个朋友来的时候发现两种他喜欢的食物都有,那么他会两种食物都吃一份,如果仅有一种食物还有,那么就只吃一份这种食物。

题解:

首先先预处理一下每一种食物有多少人要吃,我们设某种食物的需求量为needi份,如果某种食物的needi<=wi,那么只要喜欢第i种食物的人永远不可能没有食物吃。那么我们可以使用贪心策略,既然这些人什么时候都有吃的东西,那么我们就最后再通知他来派会,同时这些人对其他食物的需求我们可以消除掉,因为另一种食物有没有都不重要了。就一直这样判断看最后还有没有人没有加入到通知到派会,如果没有的话就输出“ALIVE”并输出序列

其次就是这道题的数据较大,所以暴力方法就不可行,我们就可以采用建图方式来解决问题,具体方法见代码

代码:

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string>
5 #include<queue>
6 #include<string.h>
7 #include<map>
8 #include <iostream>
9 #include <math.h>
10 using namespace std;
11 typedef long long ll;
12 #define maxn 300005
13 #include<vector>
14 struct node
15 {
16 int id,x;
17 };
18 vector<node>e[maxn];
19 queue<int>q;
20 int d[maxn],w[maxn],ans[maxn],vis[maxn];
21 int main()
22 {
23 int n,m;
24 scanf("%d %d",&n,&m);
25 for(int i=1;i<=n;i++)
26 scanf("%d",&w[i]);
27 for(int i=1;i<=m;i++)
28 {
29 int x,y;
30 scanf("%d %d",&x,&y);
31 e[x].push_back({i,y});
32 e[y].push_back({i,x});
33 d[x]++;d[y]++;
34 }
35 for(int i=1;i<=n;i++)
36 {
37 if(d[i]<=w[i])
38 {
39 q.push(i);
40 }
41 }
42 int f=m;
43 while(!q.empty())
44 {
45 int i=q.front();
46 q.pop();
47 //printf("i=%d\n",i);
48 for(int k=0;k<e[i].size();++k)
49 {
50 node j=e[i][k];
51 if(vis[j.id]==1)
52 continue;
53 vis[j.id]=1;
54 d[j.x]--;
55 //printf("j.id=%d j.x=%d\n",j.id,j.x);
56 if(d[j.x]<=w[j.x]) q.push(j.x);
57 ans[f--]=j.id;
58
59 }
60 }
61 if(f)
62 {
63 printf("DEAD\n");
64 return 0;
65 }
66 printf("ALIVE\n");
67 for(int i=1;i<=m;i++)
68 {
69 printf("%d",ans[i]);
70 printf("%c",i==n?'\n':' ');
71 }
72 }

Codeforces Round #652 (Div. 2) E. DeadLee 贪心的更多相关文章

  1. Codeforces Round #652 (Div. 2) E. DeadLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/E 题意 Lee 有 $n$ 种不同种类的食物和 $m$ 个朋友,每种食物有 $w_i$ 个,每个朋友 ...

  2. Codeforces Round #652 (Div. 2) C. RationalLee 贪心

    题意: t组输入,你有n个数,还有k个朋友,每一个朋友需要wi个数.意思就是你要给第i个朋友分配wi个数,输入保证w1+w2+...+wk=n 一个朋友的兴奋值是你分配给他的数中最大值加上最小值的和( ...

  3. Codeforces Round #652 (Div. 2) C. RationalLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/C 题意 将 $n$ 个数分给 $k$ 个人,每个人分 $w_i$ 个数($\sum_{i = 1}^ ...

  4. Codeforces Round #202 (Div. 1) A. Mafia 贪心

    A. Mafia Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/348/problem/A D ...

  5. Codeforces Round #382 (Div. 2)B. Urbanization 贪心

    B. Urbanization 题目链接 http://codeforces.com/contest/735/problem/B 题面 Local authorities have heard a l ...

  6. Codeforces Round #164 (Div. 2) E. Playlist 贪心+概率dp

    题目链接: http://codeforces.com/problemset/problem/268/E E. Playlist time limit per test 1 secondmemory ...

  7. Codeforces Round #180 (Div. 2) B. Sail 贪心

    B. Sail 题目连接: http://www.codeforces.com/contest/298/problem/B Description The polar bears are going ...

  8. Codeforces Round #192 (Div. 1) A. Purification 贪心

    A. Purification Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/probl ...

  9. Codeforces Round #274 (Div. 1) A. Exams 贪心

    A. Exams Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/problem/A Des ...

随机推荐

  1. SpringBoot配置文件(1)

    配置文件 1.配置文件 SpringBoot使用一个全局的配置文件 application.properties application.yml 配置文件名是固定的: 他的作用是修改SpringBoo ...

  2. 【Java并发集合】ConcurrentHashMap源码解析基于JDK1.8

    concurrentHashMap(基于jdk1.8) 类注释 所有的操作都是线程安全的,我们在使用时无需进行加锁. 多个线程同时进行put.remove等操作时并不会阻塞,可以同时进行,而HashT ...

  3. SpringBoot魔法堂:@MatrixVariable参数注解使用详解

    前言 RFC3986定义URI的路径(Path)中可包含name-value片段,扩充了以往仅能通过查询字符串(Query String)设置可选参数的囧境. 假如现在需要设计一个用于"搜索 ...

  4. 使用 C# 9 的records作为强类型ID - JSON序列化

    在本系列的上一篇文章中,我们注意到强类型ID的实体,序列化为 JSON 的时候报错了,就像这样: { "id": { "value": 1 }, "n ...

  5. JavaScript入门-对象

    js对象 本篇主要介绍js里如何创建对象,以及for循环访问对象的成员... 什么是对象? 对象,并不是中文里有男女朋友意思,它是从英文里翻译来的,英文叫[Object],目标,物体,物品的意思. 在 ...

  6. 【Linux】用yum来下载rpm,而不安装

    方法一:yum yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的. $ sudo yum install --download ...

  7. ctfhub技能树—web前置技能—http协议—响应包源代码

    打开靶机环境 查看网页是一个贪吃蛇小游戏 根据提示查看源码 发现flag 至此HTTP协议结束

  8. 关于请求接口报4XX错误,给广大前端同胞进行伸冤澄清,请相信它不一定都是前端的错

    关于请求接口报4XX错误,给广大前端同胞进行伸冤澄清,请相信它不一定都是前端的错 首先确保接口没有写错,参数按照后台要的写,确保自己也没有写错,若页面还是报4xx错误,请站出来大胆的质疑后端,干什么吃 ...

  9. [Usaco2008 Mar]River Crossing渡河问题

    题目描述 Farmer John以及他的N(1 <= N <= 2,500)头奶牛打算过一条河,但他们所有的渡河工具,仅仅是一个木筏. 由于奶牛不会划船,在整个渡河过程中,FJ必须始终在木 ...

  10. 24V降压3.3V芯片,低压降线性稳压器

    PW6206系列是一款高精度,高输入电压,低静态电流,高速,低压降线性稳压器具有高纹波抑制.在VOUT=5V&VIN=7V时,输入电压高达40V,负载电流高达300mA,采用BCD工艺制造.P ...