UVA1598

news/2024/12/4 3:54:03/

思路:每个优先级队列分别存储sell和buy,每个指令后都判断是否产生交易

package test;import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.TreeSet;public class Test{	static class Com{static int id = -1;static {id++;}int q = 0;		}static class Sell extends Com{int p,q;int sid = id; public Sell(int p, int q) {super();this.p = p;this.q = q;}		}static class Buy extends Com{int p,q;int bid = id; public Buy(int p, int q) {super();this.p = p;this.q = q;}		}public static void main(String[] args) {Comparator<Com> OrderIsdn =  new Comparator<Com>(){@Overridepublic int compare(Com o1, Com o2) {if(o1.q < o2.q) return 1;return -1;}};  Queue<Sell> priorityQueue =  new PriorityQueue<Sell>(100,OrderIsdn);  Queue<Buy> priorityQueue2 =  new PriorityQueue<Buy>(100,OrderIsdn);  Scanner sc = new Scanner(System.in);String line = null;System.out.println("input:");while(!"".equals((line=sc.nextLine().toLowerCase()))){if(line.startsWith("buy")){int p = Integer.valueOf(line.substring(3, line.indexOf(" ")));int q = Integer.valueOf(line.substring(line.indexOf(" ")+1));priorityQueue2.add(new Buy(p, q));}else if(line.startsWith("sell")){int p = Integer.valueOf(line.substring(4, line.indexOf(" ")));int q = Integer.valueOf(line.substring(line.indexOf(" ")+1));priorityQueue.add(new Sell(p, q));}else if(line.startsWith("cancel")){int i = Integer.valueOf(line.substring(line.indexOf(" ")+1));boolean flag = false;for(Sell s:priorityQueue){if(s.sid==i){priorityQueue.remove(s);flag = true;break;}}if(!flag){for(Sell s:priorityQueue){if(s.sid==i){priorityQueue.remove(s);break;}}}}for(Iterator<Buy> buys = priorityQueue2.iterator();buys.hasNext();){Buy temp = buys.next();for(Iterator<Sell> sells = priorityQueue.iterator();sells.hasNext();){Sell s = sells.next();if(temp.q>=s.q){if(s.p >= temp.p){s.p -= temp.p;							buys.remove();break;}else if(s.p < temp.p){temp.p -= s.p;sells.remove();					}}else{break;}}}						}	sc.close();}
}



http://www.ppmy.cn/news/521532.html

相关文章

hdu1698

/* 分析&#xff1a; 线段树水题&#xff0c;成段更新成段查询(总共只查询一次)。 线段树学的太菜了&#xff0c;被这水题虐了&#xff0c;弄了一上午- -I 2012-07-10 */ #include"stdio.h"struct segtree {int l,r;int mid;int val;int flag; }T[300011];void build…

HDU 1598

将边先排序&#xff0c;然后从最小的边开始枚举&#xff0c;当发现需要查找的两个点在一个并查集里面的时候就计算差值&#xff0c;并与min比较。 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring>using namespace std…

UVA1599

题目&#xff1a;https://vjudge.net/problem/UVA-1599 思路&#xff1a;先反向做一次bfs&#xff0c;求出各点到终点经过的最少结点数量。然后正向做一次bfs&#xff0c;每次都选取颜色最小的路径&#xff0c;同时要保证距离的值刚好减1&#xff0c;如果有多条路可以走&#…

UVa1589

/* 题意很简单&#xff0c;就是黑方只剩下一个将&#xff0c;红方还有很多子&#xff0c;而且当前的残局是红方正在将军&#xff0c;判断红方是否已经将死黑方 红方只有四种棋子&#xff0c;帅&#xff0c;车&#xff0c;炮&#xff0c;马&#xff0c;因此按照每个棋子的运算…

hdu1789

/* 分析&#xff1a; 简单贪心&#xff0c;一开始没想到思路。 很直观的&#xff0c;第一步按照score从大到小排序&#xff0c;如果score 相等&#xff0c;则按照deadline从小到大排。 然后开始选择&#xff0c;让当前的课排在其deadline上面&#xff0c;如果 这一天已经被占用…

Zcmu1538

水题来一波 1538: 随机数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 789 Solved: 617 [Submit][Status][Web Board] Description 有一个rand(n)的函数&#xff0c;它的作用是产生一个在[0,n)的随机整数。现在有另外一个函数&#xff0c;它的代码如下&#xff1a; i…

联发科八核芯片MT6599 起步赢高通,辉达NVIDIA

中国手机品牌大厂中兴近期推出的四核U985智能手机销售优于预期&#xff0c;市场近期传出&#xff0c;中兴领先同业为明年推出的八核智能手机命名为“阿帕奇’&#xff0c;而联发科尚未公开推出的八核手机芯片MT6599&#xff0c;打败高通、辉达NVIDIA成为阿帕奇的核心芯片。 据了…

%u96E8%u540E%u5929%u775B%u7684%u6837%u5B50

%u96E8%u540E%u5929%u775B%u7684%u6837%u5B50%u3000 %u50CF%u6253%u5F00%u5F69%u7ED8%u7684%u6F06%u76D2%u91CC%u9762%u6709%u79CB%u51AC%u6DE1%u9752%u7684%u5929%u6C14%u3000 转载于:https://blog.51cto.com/29017/3869