Regionals 2004 Asia - Beijing Argus 小根堆

2024-09-09 07:08

本文主要是介绍Regionals 2004 Asia - Beijing Argus 小根堆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击打开链接


小根堆


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.StringTokenizer;public class Main {public static void main(String[] args) {new Task().solve() ;  }	
}class Task{InputReader in = new InputReader(System.in) ;PrintWriter out = new PrintWriter(System.out) ;void solve(){size = 0 ;while(! "#".equals(in.next())){push(new Node(in.nextInt() , in.nextInt())) ;       	 }	int k = in.nextInt() ;while(k-- > 0){Node now = top() ;out.println(now.id) ;push(new Node(now.id , now.period , now.period + now.time)) ;}out.flush() ;}Node[] node = new Node[30008] ;int size ;void push(Node nd){node[++size] = nd ;int i = size ;while(i > 0){if((i>>1) <= 0) break ;if(node[i>>1].compareTo(node[i]) > 0){Node t = node[i] ;node[i] = node[i>>1] ;node[i>>1] = t ;i >>= 1 ;}else break ;}}Node top(){Node ret = node[1] ;node[1] = node[size--] ;int i = 1 ;while(i <= size){int nxid = i<<1 ;if(nxid > size) break ; if((i<<1|1) <= size){if(node[i<<1].compareTo(node[i<<1|1]) > 0)nxid = i<<1|1 ;}if(node[nxid].compareTo(node[i]) < 0){Node t = node[i] ;node[i] = node[nxid] ;node[nxid] = t ;i = nxid ;}else break ;} return ret ;}class Node implements Comparable<Node>{long period ;long time ;int id ;Node(int id , long period){this.id = id ;this.time = this.period = period  ;}Node(int id , long period, long time) {this.period = period;this.time = time;this.id = id;}	@Overridepublic int compareTo(Node o) {if(time == o.time) return Integer.compare(id , o.id) ;return Long.compare(time , o.time) ;}@Overridepublic String toString() {return "Node [period=" + period + ", time=" + time + ", id=" + id+ "]";}}}class InputReader {  public BufferedReader reader;  public StringTokenizer tokenizer;  public InputReader(InputStream stream) {  reader = new BufferedReader(new InputStreamReader(stream), 32768);  tokenizer = new StringTokenizer("");  }  private void eat(String s) {  tokenizer = new StringTokenizer(s);  }  public String nextLine() {  try {  return reader.readLine();  } catch (Exception e) {  return null;  }  }  public boolean hasNext() {  while (!tokenizer.hasMoreTokens()) {  String s = nextLine();  if (s == null)  return false;  eat(s);  }  return true;  }  public String next() {  hasNext();  return tokenizer.nextToken();  }  public int nextInt() {  return Integer.parseInt(next());  }  public long nextLong() {  return Long.parseLong(next());  }  public double nextDouble() {  return Double.parseDouble(next());  }  public BigInteger nextBigInteger() {  return new BigInteger(next());  }  }  


这篇关于Regionals 2004 Asia - Beijing Argus 小根堆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150490

相关文章

2014 Asia AnShan Regional Contest 题解

B:5071Chat 暴力模拟即可。注意Bye的时候先和always on top说bye。还有注意long long。 代码如下: #include <set>#include <cstdio>#include <cstring>#include <algorithm>using namespace std ;#pragma comment(linker, "/ST

MySQL 报 Unknown or incorrect time zone: 'Asia/Shanghai' 错

一般是因为mysql中缺少了关于timezone的表 可以到http://dev.mysql.com/downloads/timezones.html下载对应版本的sql语句 一般是下载posix标准的那张表 解压之后, 再终端 登陆mysql 查看mysql的版本在终端直接 输入 mysql -V //未登录进mysql的时候 mysql -u root -p密码use mys

HDU 5444 Elven Postman (2015 ACM/ICPC Asia Regional Changchun Online)

【题目链接】:click here~~ 【题目大意】: HDU 5444 题意:在最初为空的二叉树中不断的插入n个数。对于每个数,从根节点开始判断,如果当前节点为空,就插入当前节点,如果当前节点不为空,则小于当前节点的值,插入右子树,否则插入左子树。 接着q次询问,每次询问一个值在二叉树中从根节点开始的查找路径。 3 直接用二叉树模拟整个插入和询问的过程 代码:

数据结构 之 堆(完全二叉树、大根堆、小根堆)

堆是一种完全二叉树结构,这意味着它具有完全二叉树的性质,其中一点如下所示: 设完全二叉树的一元素编号为i,1 <= I <= n,n为元素总数。有以下关系成立:1、如果i=1,则该元素为二叉树的根节点,若i>1,则其父节点的编号为(int)(i/2);2、如果2*i > n,则该元素无左孩子。否则,其左孩子的编号为2 * i;3、如果1 + 2*i > n ,则该元素无右孩子,否则,其右孩

2024“华为杯”第二十一届中国研究生数学建模竞赛2004-2023华为杯数学建模优秀论文(见文末)

2024“华为杯”第二十一届中国研究生数学建模竞赛&2004-2023华为杯数学建模优秀论文(见文末) 各研究生培养单位: 中国研究生数学建模竞赛(以下简称“竞赛”)是教育部学位管理与研究生教育司指导,中国学位与研究生教育学会、中国科协青少年科技中心主办的“中国研究生创新实践系列大赛”主题赛事之一,是一项面向在校研究生进行数学建模应用研究与实践的学术竞赛活动,是广大在校研究生提高建立数学模

2004年 联想员工亲历联想大裁员:公司不是我的家 (网易裁员事件相关文章)

今天,恐怕是联想历史上规模最大的一次大裁员。我们部门9个人,今天送走了三个,还有三个要转岗,剩下三个。整个研究院走了30多人,转岗20多人。这是我经历的第二次所谓战略性调整,有很多感触,却又好像什么都堵在心里,说不出来。干脆简单记录下这段往事,提醒自己。     [联想精细化裁员]      昨天晚上,研究院秘密召开紧急会议。有20多位“责任经理”参加,我才清楚了整个裁员过程。3月6日启动计

2004年-2022年 全国31省市场分割指数数据

市场分割指数在经济学领域是一个关键的概念,特别是在评估不同区域市场一体化水平时。陆铭等学者深入研究了市场分割问题,并对市场分割指数给出了定义:它是一个衡量在相同时间点不同区域或同一区域在不同时间点的某类商品相对价格差异的指标。这个指数反映了市场内部各部分之间的分离程度,以及市场一体化的水平。 陆铭的研究表明,市场分割与资源配置的效率之间存在明显的负相关关系。具体来说,市场分割指数与资源配置效率的

2015 ACM/ICPC Asia Regional Shenyang Online

题目在这里 Shenyang Online1001 Traversal1002 Best Solver1003 Minimum Cut1004 Dividing This Product1005 Excited Database1006 Fang Fang简单题1007 Matches Puzzle Game1008 Hold Your Hand1009 Stability1010 Jesus

2015 ACM/ICPC Asia Regional Changchun Online

弱菜目前只做了9个,5个签到题。题目链接 Changchun Online 1001 Alisha’s Party 简单题,优先队列搞搞就行了。 1002 Ponds 简单题 1003 Aggregated Counting 感觉有点绕的题目,把连续出现相同次数的数字看成一段,最多50w段,然后预处理一下前缀和。 1004 Clock Adjusting 待补 1005 Travel 离线并查集

大根堆 小根堆

转:小根堆大根堆  堆(Heap)分为小根堆和大根堆两种,对于一个小根堆,它是具有如下特性的一棵完全二叉树:       (1)若树根结点存在左孩子,则根结点的值(或某个域的值)小于等于左孩子结点的值(或某个域的值);       (2)若树根结点存在右孩子,则根结点的值(或某个域的值)小于等于右孩子结点的值(或某个域的值);       (3)以左、右孩子为根的子树又各是一个堆。