题目链接:点击查看

题目大意:现在有一个人,初始时有r元钱,现在有n个项目需要让他来解决,每个项目的门槛是a元钱,完成项目后的报酬是b元(报酬可以是负数),问能否在适当调整项目顺序后完成所有项目,能的话输出YES,否则输出NO

题目分析:我是在补题的时候做的这个题,所以就可以直接看到标签了,标签只写了是一个2100分的贪心,不过想了好久还只是想到了一点点部分,这个题目的核心是如何排序,只要排好序后,从头到尾按照题意扫描一遍就可以判断了

那么对于这个题目的排序,我们首先肯定是要优先拿报酬都是非负数的,这样才能让这个人的钱越来越多,则对于报酬都是正数的项目来说,最优解是让门槛较低的项目排在前面,这样就解决了报酬是正数的项目了

则剩下的就是报酬是负数的项目了,我们不能单纯对于门槛的大小来排序,随便找一组数据就hack掉了,比如:

2 10

10 -5

8 -1

所以肯定还是需要思考的,因为我们在完成项目后需要尽可能的让剩下的钱更多,那么就可以按照a+b作为权值进行降序排序,因为当这个人在完成当前项目的时候,钱一定是大于等于门槛的,我们不妨设当前的钱就是门槛,这样一来在完成当前项目后,剩下的钱就是a+b元了,这样就能简单证明出来了(好像不太严谨,但大概能说明这样排序的可行性了)

排完序之后扫一遍,按照规则判断就行了,规则就是这个人的钱每次必须都比门槛要高,并且钱不能出现负数

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=110;int n,r;struct Node
{int a,b,flag;//flag=0:b为正或零 flag=1:b为负 bool operator<(const Node& k)const{if(flag!=k.flag)return flag<k.flag;if(flag==0)//都是正数return a<k.a;//这里如果都是正数的话,那么b的大小就无所谓了,只需要让a升序排列就行了else//都是负数 {if(a+b!=k.a+k.b)//优先按照a+b降序排序return a+b>k.a+k.b;return a>k.a;//其次按照a较大的排序}}
}a[N];bool check()
{for(int i=1;i<=n;i++){if(r<a[i].a)//如果当前的钱不足以抵消当前任务的门槛return false;r+=a[i].b;if(r<0)//如果中途出现了负数return false;}return true;
}int main()
{
//  freopen("input.txt","r",stdin);
//    ios::sync_with_stdio(false);scanf("%d%d",&n,&r);for(int i=1;i<=n;i++){scanf("%d%d",&a[i].a,&a[i].b);if(a[i].b>=0)a[i].flag=0;elsea[i].flag=1;}sort(a+1,a+1+n);if(check())printf("YES\n");elseprintf("NO\n");return 0;
}

CodeForces - 1203F1 Complete the Projects (easy version)(贪心)相关推荐

  1. Codeforces Round #579 (Div. 3) F1. Complete the Projects (easy version) 排序 + 贪心

    传送门 文章目录 题意: 思路: 题意: 思路: 比较直观的想法就是对于bi≥0b_i\ge0bi​≥0的项目,我们将aia_iai​从小到大排序,让后依次加bib_ibi​,如果有取不到的,显然就无 ...

  2. Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心

    传送门 文章目录 题意: 思路: 题意: 思路: 排序方式跟easyeasyeasy版本的一样,但是hardhardhard版本是输出最多能选多少,所以我们对b<0b<0b<0的情况 ...

  3. E1. Rubik‘s Cube Coloring (easy version) 贪心,满二叉树(1300)

    题意 : 给定一个层数为k的满二叉树,结点编号为标准的层序遍历的编号 魔方有六个面,如图,每个面一个颜色 树上的结点的颜色也是这六个颜色之一,但是两个相邻结点的颜色必须是 魔方中,颜色相邻的两种颜色 ...

  4. codeforces:E1. Divisible Numbers (easy version)【数论 + 复杂度计算 + 分解质因数】

    目录 题目截图 题目分析 想法1:遍历所有可能的xy(tle) 想法2:遍历可能的x(accepted) 总结 题目截图 题目分析 想法1,遍历所有kab作为xy的所有可能值,找到其所有因子,然后看看 ...

  5. codeforces 1706.D1 Chopping Carrots (Easy Version)

    分析: 对于给定的一组序列a[], 我们可以暴力枚举a[]除以1到K 分别存储在vector<int>ver[maxn], vv 中:假设vv[i]是最小值,二分查找 ver[k]中第一个 ...

  6. CodeForces - 1543D1 RPD and Rap Sheet (Easy Version)(异或+交互)

    题目链接:点击查看 题目大意:交互题猜密码,设原密码为 xxx,猜的密码为 yyy,如果没猜到,密码会自适应变成 zzz,满足 x⊕z=yx \oplus z=yx⊕z=y ,最多猜 nnn 次 题目 ...

  7. Educational Codeforces Round 75 (Rated for Div. 2) E2. Voting (Hard Version) 贪心

    传送门 文章目录 题意: 思路: 题意: n≤2e5,m≤n,p≤1e9n\le2e5,m\le n,p\le 1e9n≤2e5,m≤n,p≤1e9 思路: 首先需要发现一些性质,假设preipre_ ...

  8. Codeforces Round #828 (Div. 3) E1. Divisible Numbers (easy version) 解题报告

    原题链接: Problem - E1 - Codeforces 题目描述: This is an easy version of the problem. The only difference be ...

  9. 【CodeForces 1255E1 --- Send Boxes to Alice [Easy Version]】

    [CodeForces 1255E1 --- Send Boxes to Alice [Easy Version]] Description This is the easier version of ...

最新文章

  1. 更司马懿学管理计算机,跟司马懿学管理(一)无悔的选择是好选择
  2. vue 怎么样不重复往数组里插入数据_前端数据结构与算法(1) -二分查找vs二叉树...
  3. Power BI Desktop 10月更新
  4. 为了有一些储蓄,把自己压榨到最狠的时候是怎样的?
  5. PbootCMS V1.1.4 正式发布
  6. 学python语言有前途吗-学习python的前景怎么样?
  7. 微软账号被暂时停用咋办_游戏账号交易要注意什么?买游戏账号有哪些可能会被找回去...
  8. Kicad快捷键大全
  9. 设计模式-第九篇之观察者模式
  10. 毕业论文:vrml设计的虚拟校园
  11. Android 集成Tinker的gradle脚本
  12. 单片机常用之晶振电路工作原理简述
  13. 信托购买高搜索产品容易推10元[奥运]门槛
  14. Flutter之微信支付实战模板
  15. 射频标签技术特征的分类
  16. 向日葵连接linux无桌面,远程桌面连接不上怎么解决?向日葵远程桌面控制怎么使用?...
  17. C / C++ 计算程序运行的时间
  18. 合泰杯——合泰单片机工程之点亮LED
  19. 【AD】Altium Designer Filter(过滤器)使用技巧
  20. 做金融学r还是python_Python与金融:为什么将Python用于金融

热门文章

  1. Sentinel隔离和降级
  2. hashCode和equals方法的关系
  3. 一条查询SQL 语句是如何执行的?
  4. 为什么需要Survivor区?只有Eden不行吗?
  5. ConcurrentHashMap的源码分析-put方法第二阶段
  6. parkAndCheckInterrupt
  7. J .U.C 简介-Lock
  8. Spring 框架中的单例Beans 是线程安全的么?
  9. 项目添加JWT工具类
  10. 常用的函数式接口_Supplier接口