当前位置: 首页 > article >正文

AcWing 4889. 空调II

考虑到空调的数量M<= 10,可以使用暴力枚举的方法,暴力枚举每个空调可以使用二进制枚举的方式来简化,用1/0来表示这个空调开/不开 ,然后枚举每一个牛的牛栏是否达到降温需求,若达到,就和答案取min



int n,m;
struct Cow
{
	LL s,t,c;
}cows[N];

struct Ac
{
	LL a,b,p,m;
}acs[N];

int w[N];
void solve()
{
	cin >> n >> m;
	for (int i = 0;i < n;i ++) 
	{
		int s,t,c; cin >> s >> t >> c;
		cows[i] = {s,t,c};
	}
	
	for (int i = 0;i < m;i ++)
	{
		int a,b,p,m; cin >> a >> b >> p >> m;
		acs[i] = {a,b,p,m};
	}

	LL ans = inf;
	for (int i = 0;i < 1 << m;i ++)
	{
		memset(w,0,sizeof w);//每次将牛栏的降温情况清空
		LL cost = 0;
		for (int j = 0;j < m;j ++)//枚举每个空调开不开
			if (i >> j & 1) 
			{
				int a = acs[j].a,b = acs[j].b,p = acs[j].p,m = acs[j].m;
				cost += m;
				for (int k = a;k <= b;k ++)
					w[k] += p;//降温
			}
		
		bool f = true;
		for (int i = 0;i < n;i ++)
		{
			int s = cows[i].s,t = cows[i].t,c = cows[i].c;
			for (int j = s;j <= t;j ++)
				if (w[j] < c)
				{
					f = false;
					break;
				}
		}
		
		if (f) ans = min(ans,cost);
	}	
	
	cout << ans << endl;
}


http://www.kler.cn/a/586591.html

相关文章:

  • Rust语言的信号量
  • 【STM32】USART串口协议串口外设-学习笔记
  • 【深度解析:以“不要的心态”获取所求的本质逻辑】
  • 反射、反射调用以及修改成员变量,成员方法,构造函数、反射的应用
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_11多功能组合的固定表头表格
  • 绿色高效运维:分布式光伏监控系统的全生命周期管理
  • 文件系统 linux ─── 第19课
  • 新手村:统计量均值、中位数、标准差、四分位数
  • 将pdf或者word转换成base64格式
  • 通达信软件+条件选股+code
  • 如何在github上参与开源项目
  • Java基础语法练习43(线程)
  • 网络实验操作-VLAN
  • lws-minimal-ws-server前端分析
  • 考研数学复习误区:如何避免无效学习?
  • 3.4 基于TSX的渲染函数类型安全实践
  • Julia语言的饼图
  • Java常见的几种内存溢出及解决方法
  • BSides-Vancouver-2018 ftp匿名访问、hydra爆破22端口、nc瑞士军刀、提权
  • C++类对象创建全解析:从构造函数到内存管理