data structure 胱搞透房
来源:互联网 发布:2016新疆网络管制 编辑:程序博客网 时间:2024/06/04 17:44
import java.util.*;
import java.util.Map.Entry;
import com.sun.corba.se.spi.orbutil.fsm.Action;
//input file 1
// site ID, ad_min_price ad url
//input file 2
//ad_ID budgetforeachsite need_site_quantity site_id1 site id 2 site id 3
public class ads {
Map<Integer, Site> siteMap = new Hashtable<Integer, Site>();
Map<Integer, Ad> adMap = new Hashtable<Integer, Ad>();
Map<Integer, List<Ad>> auctionMap = new Hashtable<Integer, List<Ad>>();
public void fulfillData() {
// 输入siteMap的数据
// while(siteStream.hasNext()){
// Site site= siteStrem.next();
// siteMap.put(site.getSiteid(),site);
// }
// 输入adMap的数据
// while(AdStream.hasNext()){
// Ad ad= adStream.next();
// siteMap.put(site.getSiteid(),site);
// }
// 遍历adMap 把所有竞标需求都和site匹配上
Iterator<Integer> iter = adMap.keySet().iterator();
while (iter.hasNext()) { // 一次while循环处理一个ad
Integer ad_Id = iter.next();
Ad ad = adMap.get(ad_Id);
List<Integer> siteList = ad.getBiddingList();
for (Integer siteId : siteList) {
if (auctionMap.containsKey(siteId)) {
List<Ad> biddingAds = auctionMap.get(siteId);
biddingAds.add(ad);
auctionMap.put(siteId, biddingAds);
} else {
List<Ad> biddingList = new ArrayList<Ad>();
biddingList.add(ad);
auctionMap.put(siteId, biddingList);
}
}
}
}
public int Winner(String siteId) {
List<Ad> ads = auctionMap.get(siteId);
Collections.sort(ads, new SortByAuctionRule());
Site site = siteMap.get(siteId);
int bidder = ads.size();
if (bidder == 1) {
if (ads.get(0).getBudget() >= site.getAd_min_cost()) {
// 此时的真实成交价是 site的 min cost
return ads.get(0).getAdID();
} else {
return -1;
}
} else if (bidder < 1) {
// 没有符合条件的bidder
return -1;
} else {
if (ads.get(1).getBudget() >= site.getAd_min_cost()) {
// 此时的真实成交价是 ads.get(1)的budget
return ads.get(0).getAdID();
} else {
if (ads.get(0).getBudget() >= site.getAd_min_cost()) {
// 此时的真实成交价是 site的 min cost
return ads.get(0).getAdID();
} else { // 最高价格也达不到min cost 流拍
return -1;
}
}
}
}
private static final class SortByAuctionRule implements Comparator<Ad> {
public int compare(Ad o1, Ad o2) {
int compare = o2.getBudget() - o1.getBudget();
if (compare != 0) {
return compare;
} else {
return o1.getAdID() - o2.getAdID();
}
}
}
}
class Site {
private int siteID;
private int ad_min_cost;
private String URL;
public int getSiteID() {
return siteID;
}
public void setSiteID(int siteID) {
this.siteID = siteID;
}
public int getAd_min_cost() {
return ad_min_cost;
}
public void setAd_min_cost(int ad_min_cost) {
this.ad_min_cost = ad_min_cost;
}
public String getURL() {
return URL;
}
public void setURL(String uRL) {
URL = uRL;
}
}
class Ad {
private int adID;
private int budget;
private int site_Quantity;
private List<Integer> biddingList;
public int getAdID() {
return adID;
}
public void setAdID(int adID) {
this.adID = adID;
}
public int getBudget() {
return budget;
}
public void setBudget(int budget) {
this.budget = budget;
}
public int getSite_Quantity() {
return site_Quantity;
}
public void setSite_Quantity(int site_Quantity) {
this.site_Quantity = site_Quantity;
}
public List<Integer> getBiddingList() {
return biddingList;
}
public void setBiddingList(List<Integer> biddingList) {
this.biddingList = biddingList;
}
}
- data structure 胱搞透房
- Data Structure
- Data structure
- Data Structure
- Data structure
- Data structure
- data structure
- Data Structure
- Data structure
- Data Structure
- Data Structure
- Data Structure
- Data Structure
- Data structure alignmentData structure alignment
- Finish Data Structure Examination
- 【OPENGL】DEVMODE data structure
- Critical Data Structure -- sk_buff
- Data Structure数据结构
- MySQL 主从复制 详细讲解(二)快速实现
- IntelliJ IDEA 13 入门
- 程序媛的烦心事
- 在Android应用中实现查看“附近的人”的功能
- Ubuntu 12.04的SWAP设置
- data structure 胱搞透房
- 判断两个字符串是否相等
- python文件夹遍历,文件操作,获取文件修改创建时间<转>
- 1
- 转:90后妹纸学习日记
- std::string 变化大小写
- The beauty of python 1
- uva 269 - Counting Patterns(构造)
- 继承、重载、覆盖、多态