Description

  Sidney想去Gandtom家玩。但Sidney家和Gandtom家之间是高低不平、坑坑洼洼的土路。所以他需要用他的背包装几袋稀的泥,在路上铺平一些干的土,使路变成平整的泥土,才能到Gandtom家见到Gandtom。 
  已知现在有袋稀的泥,第袋稀的泥的质量为。初始时,第个分组只有第袋稀的泥。接下来Sidney每一次会把质量最小(如果质量相同取编号小的)的两组稀的泥合并成一组。新的分组的质量为原来两分组质量的和,编号为原来两组稀的泥的编号的较小者的编号。 
  试求Sidney经过次操作后,第袋稀的泥在第几组中。

Input

第一行有一个整数,表示组数。 
每组数据第一行有两个正整数, ,。表示稀的泥的袋数与询问的次数。 
每组数据第二行有个正整数,第个代表。 
接下来有行,每行有两个非负整数,   
题目保证。

Output

每组数据输出行。 
第行表示Sidney经过次操作后,第袋稀的泥在第几组中。

Sample Input


5 7 
1 2 3 4 5 
1 2 
2 1 
2 2 
2 3 
2 4 
3 5 
4 5

Sample Output







1

Note

第一次操作后。第1、2袋稀的泥在第1组中,第3袋稀的泥在第3组中,第4袋稀的泥在第4组中,第5袋稀的泥在第5组中。 
第二次操作后。第1、2、3袋稀的泥在第1组中,第4袋稀的泥在第4组中,第5袋稀的泥在第5组中。 
第三次操作后。第1、2、3袋稀的泥在第1组中,第4、5袋稀的泥在第4组中。 
第四次操作后。第1、2、3、4、5袋稀的泥在第1组中。

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int N=1e6+5;
typedef pair <int,int> P;int F[N],w[N];
int getf(int x)
{if(x==F[x])return x;return F[x]=getf(F[x]);
}
int main(){int i,T,n,m,t,q;scanf("%d",&T);priority_queue<P, vector<P>, greater<P> > Q;while(T--){while(!Q.empty())Q.pop();scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&w[i]);F[i]=i;Q.push(P(w[i],i));}int now=0;for(i=1;i<=m;i++){scanf("%d%d",&t,&q);for(now;now<t;now++){P s1=Q.top();Q.pop();P s2=Q.top();Q.pop();P s3=P(s1.first+s2.first,min(s1.second,s2.second));Q.push(s3);int p1=getf(s1.second);int p2=getf(s2.second);if(p1<p2)F[p2]=p1;elseF[p1]=p2;}printf("%d\n",getf(q));}}return 0;
}

转载于:https://www.cnblogs.com/87hbteo/p/8946590.html

SOJ 4583 动态规划之分组背包相关推荐

  1. 【动态规划】分组背包 (ssl 2291)

    分组背包分组背包分组背包 Description 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].这些物品被划分为若干组,每组中的物品互相冲突,最多选一件.求解将哪些物品装 ...

  2. 【动态规划】分组背包

    问题: 有N件物品,告诉你这N件物品的重量以及价值,将这些物品划分为K组,每组中的物品互相冲突,最多选一件,求解将哪些物品装入背包可使这些物品的费用综合不超过背包的容量,且价值总和最大. 算法: 首先 ...

  3. 信息学奥赛一本通 1272:【例9.16】分组背包

    [题目链接] ybt 1272:[例9.16]分组背包 [题目考点] 1. 动态规划:分组背包 [解题思路] 分组背包问题,特点是:每组中的物品最多可以取一件 1. 状态定义 集合:放入背包的物品方案 ...

  4. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  5. LeetCode 第 59 场力扣夜喵双周赛(最短路径数+迪杰斯特拉、动态规划+最长公共前缀问题) / 第255场周赛(二进制转换,分组背包,子集还原数组(脑筋急转弯))

    第 59 场力扣夜喵双周赛 两道400多五百,后两道都写出代码来了,但是都有问题,哭辽- 还有刚开始第一道测试好慢,搞心态了 5834. 使用特殊打字机键入单词的最少时间 有一个特殊打字机,它由一个 ...

  6. 洛谷P1757 通天之分组背包 [2017年4月计划 动态规划06]

    P1757 通天之分组背包 题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品 ...

  7. P1757 通天之分组背包(动态规划 分组背包)

    思路:这就是一个分组背包的模板题 #include <bits/stdc++.h> using namespace std; int v,n,t; int x,tot=0; int g[2 ...

  8. 动态规划问题之背包模型(18题)

    背包问题是动态规划问题的一大类型,下面我们对这个进行总结. 以 Acwing y中总结的 几个类型,我写了几个题解 应用知识点 01背包.完全背包 空间压缩的写法 多维费用的背包问题,以及状态的不同表 ...

  9. 完全背包问题+01背包问题+分组背包+多重背包 总结

    背包问题都涉及到动态规划,利用dp进行更加优化的计算. 一.01背包 最基本的是01背包问题,题目一般类似:"在一定数目物品内,挑选总重量不超过一定数目的物品,其中每个物品只能选一次,求背包 ...

最新文章

  1. 计算机视觉常用图像数据集标记平台
  2. python获得命令行参数的方法
  3. 联想B450系列安装XP且开启AHCI
  4. spring的service不启动事务的配置。
  5. 使用Docker堆栈部署的微服务-WildFly,Java EE和Couchbase
  6. 控制附件的大小 php,wordpress如何修改默认上传附件限制大小
  7. 【报告分享】2019年中国智能门锁发展与应用白皮书.pdf
  8. SQL Server Management Studio中SQL代码段
  9. 网页读不出php语句,php - phpmyadmin显示代码而不是网页 - 堆栈内存溢出
  10. 科大讯飞:5年内 科技会场没机器人端茶倒水就太low了
  11. 任天堂Wii有一些伟大的Wii游戏为Wii控制台你有此致
  12. 微信隐藏功能系列:微信怎么恢复聊天记录?3步完成修复
  13. Welcome to MySQL Workbench:MySQL 复制表
  14. 如何查看计算机关闭原因,电脑总是自动重启关机怎么样查找原因
  15. Mac OS Android Studio 启动模拟器失败
  16. 固定资产减值准备、累计折旧
  17. 报错JDBC Connection [com.mysql.jdbc.JDBC4Connection@184c65da] will not be managed by Spring
  18. 服务器无线信号差怎么办,wifi隔墙信号不好怎么办
  19. 【巨人的肩膀上制造世界】——2——Unity3D实用插件之QHierarchy,更方便的管理你的层级面板,全中文教程!
  20. Cloudcompare点云渲染的多种方式

热门文章

  1. iphone OS、Android、Blackberry OS与Palm OS的比较
  2. iMAX B6AC充电的时报错:BATTERY CHECK LOW VOLTAGE
  3. 基于 Apache Kylin 的微博舆情实时分析(内含 Demo)
  4. 英勇地死去 VS 卑贱地活着
  5. lsmod,insmod
  6. R语言ggplot2可视化:使用patchwork包将多个ggplot2可视化结果组合起来、使用plot_spacer函数在组合结果图像中的指定位置加入空白区域(不包含任何内容,纯粹空白图)
  7. SAP MM 因物料有负库存导致MMPV开账期失败问题之对策
  8. c语言大作业 模拟泊松分布,怎样用C语言模拟泊松分布
  9. 林期苏曼属性标签编辑_标签设计软件如何设置条码文字分段显示
  10. practice是什么意思_practice是什么意思