分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

bzoj1029: [JSOI2007]建筑抢修

发布时间:2023-09-06 01:50责任编辑:傅花花关键词:暂无标签

今天是真的萎,切不动题,瞎写陈年老题找自信。。。

强行一波贪心猛如虎

先按毁坏时间排序,枚举,能修的就修,修不了就把前面耗时最长的拿出来和当前比较,假如现在需要时间更短就换

总之就是维护修了ans个的最快时间

#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>#include<set>using namespace std;struct node{ ???int t,ed;}a[210000];bool cmp(node n1,node n2){return n1.ed<n2.ed;}multiset<int> s;int main(){ ???int n; ???scanf("%d",&n); ???for(int i=1;i<=n;i++)scanf("%d%d",&a[i].t,&a[i].ed); ???sort(a+1,a+n+1,cmp); ???????int now=0,ans=0; ???for(int i=1;i<=n;i++) ???{ ???????if(a[i].t+now<=a[i].ed) ???????{ ???????????now+=a[i].t; ???????????ans++; ???????????s.insert(a[i].t); ???????} ???????else ???????{ ???????????int q=*--s.end(); ???????????if(a[i].t<q) ???????????{ ???????????????int sum=s.count(q); ???????????????s.erase(q); ???????????????for(int j=1;j<sum;j++)s.insert(q); ???????????????s.insert(a[i].t); ???????????????now+=a[i].t-q; ???????????} ???????} ???} ???printf("%d\n",ans); ???return 0;}

bzoj1029: [JSOI2007]建筑抢修

原文地址:https://www.cnblogs.com/AKCqhzdy/p/8933430.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved