NOIP模拟 NYG的背包 [高山算法]
来源:互联网 发布:菜鸟网络 工作强度 编辑:程序博客网 时间:2024/04/30 05:52
终于我的贪心过了,方法与题解不同,我每次记录历史最高值h,若当前x<=h则可以,然后判定几个特殊条件,AC了。
高山算法是什么?自行百度,本人无厘头命名,貌似是时间空间最优的方法。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 100005;struct data{ long long x,y; bool operator < (const data &rhs)const{ return x<rhs.x||(x==rhs.x&&(y-x)>(rhs.y-rhs.x)); }}a[N];inline void read(long long &res){ static char ch;long long flag=1; while((ch=getchar())<'0'||ch>'9')if(ch=='-')flag=-1;res=ch-48; while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-48;res*=flag;}long long t,n,w,h,flag,b;int main(){ freopen("backpack.in","r",stdin); freopen("backpack.out","w",stdout); read(t); while(t--){ read(n),read(w);h=w; for(register int i=1;i<=n;i++)read(a[i].x),read(a[i].y); sort(a+1,a+1+n),flag=1;b=0x3f3f3f3f; for(register int i=1;i<=n;i++){ if(h<a[i].x){cout<<"No"<<endl;flag=0;break;} w-=a[i].x;w+=a[i].y; h=max(h,w);b=min(b,a[i].y); } if(flag){ if(w<b)cout<<"No"<<endl; else cout<<"Yes"<<endl; } } return 0;}
阅读全文
0 0
- NOIP模拟 NYG的背包 [高山算法]
- 【NOIP2017提高A组模拟9.5】NYG的背包
- NYG的背包 (贪心)
- 【jzoj5346】【NOIP2017提高A组模拟9.5】【NYG的背包】【贪心】
- NYG的动态数点
- (noip 模拟 gift)<丧病背包>
- noip模拟赛(10.4) 背包(pack)
- NOIP模拟 乘积【状压dp+多组背包】
- 20151004的NOIP模拟赛
- 20151005的NOIP模拟赛
- 20151006的NOIP模拟赛
- 20151007的NOIP模拟赛
- 20151017的NOIP模拟赛
- 20151024的NOIP模拟赛
- 20151031的NOIP模拟赛
- 【NOIP模拟】我的天
- 【NOIP模拟】天使的分裂
- NOIP模拟 路径统计 【弗洛伊德算法】
- python中的一个好用的文件名操作模块glob
- 为何无法正确执行git reset –hard HEAD^
- hdu 5391 素数测试
- spring mvc 入门
- hadoop参考代码
- NOIP模拟 NYG的背包 [高山算法]
- Linux --- sort命令
- centos7上matplotlib 无法绘图,报错先ImportError: No module named Tkinter,后_tkinter.TclError: no display name
- 查看设备挂载信息
- 确定比赛名次(拓扑排序)
- 修改caffe源代码从添加loss(层)函数开始
- C# 获取本机IP
- jave面试总结
- Android M Multi-Network Solution