[loj3342]制作菜品


1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 505
4 set<pair<int,int> >s;
5 int t,n,m,k,d[N],vis[N];
6 bitset<N*N*20>f[N];
7 void work(int m){
8 for(int i=1;i<=m;i++){
9 int x=(*s.begin()).second;
10 s.erase(s.begin());
11 if (d[x]>=k){
12 printf("%d %d",x,k);
13 d[x]-=k;
14 if (d[x])s.insert(make_pair(d[x],x));
15 }
16 else{
17 int y=(*(--s.end())).second;
18 s.erase(--s.end());
19 printf("%d %d %d %d",x,d[x],y,k-d[x]);
20 d[y]-=k-d[x];
21 if (d[y])s.insert(make_pair(d[y],y));
22 d[x]=0;
23 }
24 if (i!=m)printf("\n");
25 }
26 }
27 int main(){
28 freopen("dish.in","r",stdin);
29 freopen("dish.out","w",stdout);
30 scanf("%d",&t);
31 bool flag=0;
32 while (t--){
33 if (flag)printf("\n");
34 flag=1;
35 scanf("%d%d%d",&n,&m,&k);
36 for(int i=1;i<=n;i++)scanf("%d",&d[i]);
37 if (n-1<=m){
38 for(int i=1;i<=n;i++)s.insert(make_pair(d[i],i));
39 work(m);
40 continue;
41 }
42 memset(vis,0,sizeof(vis));
43 for(int i=0;i<=n;i++)f[i].reset();
44 f[0][n*k]=1;
45 bool flagg=0;
46 for(int i=1;i<=n;i++){
47 f[i]=f[i-1];
48 if (d[i]>=k)f[i]|=(f[i-1]<<d[i]-k);
49 else f[i]|=(f[i-1]>>k-d[i]);
50 if (f[i][(n-1)*k]){
51 flagg=1;
52 for(int j=i,t=(n-1)*k;j;j--)
53 if (f[j-1][t-(d[j]-k)]){
54 vis[j]=1;
55 t-=d[j]-k;
56 }
57 for(int j=1;j<=n;j++)
58 if (vis[j])s.insert(make_pair(d[j],j));
59 work(s.size()-1);
60 printf("\n");
61 for(int j=1;j<=n;j++)
62 if (!vis[j])s.insert(make_pair(d[j],j));
63 work(s.size()-1);
64 break;
65 }
66 }
67 if (!flagg)printf("-1");
68 }
69 return 0;
70 }
[loj3342]制作菜品的更多相关文章
- 洛谷 P6775 - [NOI2020] 制作菜品(找性质+bitset 优化 dp)
题面传送门 好久没写过题解了,感觉几天没写手都生疏了 首先这种题目直接做肯定是有些困难的,不过注意到题目中有个奇奇怪怪的条件叫 \(m\ge n-2\),我们不妨从此入手解决这道题. 我们先来探究 \ ...
- P6775-[NOI2020]制作菜品【贪心,dp】
正题 题目链接:https://www.luogu.com.cn/problem/P6775 题目大意 \(n\)种原材料,第\(i\)个有\(d_i\)个,\(m\)道菜品都需要\(k\)个原料而且 ...
- [NOI2020] 制作菜品
看懂题目是生产第一要素. 考虑\(m = n - 1\)则必定有解.我们每次选择最小的和最大的拼在一起即可. 当\(m\)大于\(n\),那么我们只要每次选择最大的给他消掉即可. \(m = n - ...
- 用POLARDB构建客到智能餐饮系统实践
在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中.智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点.本文中果仁软件联合创始人& ...
- Activity 学习(二) 搭建第一个Activity流程框架
本次示例使用的IDER测试完成 测试背景 : xx饿了去饭店吃饭 需要先和服务员点餐 点完餐后服务员将菜品传递给厨师制作 制作完成后吃饱 一 :创建流程图 创建上一篇测试成功出现的BpmnFil ...
- NOI2020网上同步赛 游记
Day1 预计得分:\(32pts\)(我裂开了--) T1 美食家 表示考试的时候想到了关于矩阵快速幂的想法,甚至连分段后怎么处理都想好了,但是没有想到拆点,还有不知道怎么处理重边(这个考虑是多余的 ...
- NOI2020 同步赛划水记
因为太菜了没去现场参加 NOI 就算去了估计也只能混个Fe(雾) "两天都会各有一道签到题,争取拿到70分.剩下的题每道题打30分暴力.每天130分,就能稳拿Ag了."--ls D ...
- [HNOI 2015]菜肴制作
Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...
- 【AR实验室】ARToolKit之制作自己的Marker/NFT
0x00 - 前言 看过example后,就会想自己动动手,这里改改那里修修.我们先试着添加自己喜欢的marker/nft进行识别. 比如我做了一个法拉利的marker: 还有网上找了一个法拉利log ...
随机推荐
- MySQL数据库建表命名的坑
今天建了一张表,表名为--inOut: 然后再使用中发现怎么都是SQL错误: 然后在Navacat上发现 这是一个关键词! 如果非要继续使用,只能这样: 类似的坑还有user等.
- DRF的action装饰器
1.action装饰器 Django默认的路由分发规则决定了视图函数只能以get.post等请求方式命名,如果想要使用自定义的方式命名,我们可以使用action去映射请求方法名与自定义方法 view. ...
- pycharm环境下配置scrap爬虫环境
[写在开头] 参考文章后面给出了备注信息,是在解决这个问题的时候,查找的比较有亮点的参考文章,如果本文章写的不太清楚的,可以去原文章进行查看.下面列举的四个文章有参考的成分也有验证的成分,解决办法重点 ...
- Convolutional Neural Network-week2编程题2(Residual Networks)
1. Residual Networks(残差网络) 残差网络 就是为了解决深网络的难以训练的问题的. In this assignment, you will: Implement the basi ...
- 利用DMA实现采样数据的直接搬运存储
尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的操作 ...
- 洛谷 P4587 [FJOI2016]神秘数
大鸽子 llmmkk 正在补8.3号咕掉的题 时隔两个月,再看到这道题,我又是一脸懵,这种思维的培养太重要了 链接: P4587 题意: 给出 \(n\) 个点的序列,\(m\) 次询问区间神秘数. ...
- [转]DDR内存条rank的概念和区分
1:什么是RANK? 答:CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据.可是,单个内存颗粒的位宽仅有4bit.8bit或16bit, ...
- AXI协议中的模棱两可的含义的解释(Cachable和Bufferable)
转载:https://blog.csdn.net/hit_shaoqi/article/details/53243173 Cachable和Bufferable 一个Master发出一个读写的requ ...
- git安装心得
每天码代码打卡任务,老师需要我们提交链接,这就需要我们把自己打的代码文件上传到GitHub上来,以此获得链接. 自己是一个新人,安装git也是什么都不懂(跟着网上的教程也总是能出错) 安装正常操作:h ...
- python3 调用 centos 常用系统命令
一.创建目录 1 import os 2 3 base_path = '/data/sw_backup' 4 addr= 'FT' 5 ip='192.168.1.1' 6 path = base_p ...