zoukankan      html  css  js  c++  java
  • HDU 3193

    最近做题心不在焉,总是犯很低级错误,而且debug也很久,需要非常关注改进这方面的问题。

    题目思路还是比较巧妙的,只需要先对酒店排出关于价格的一个偏序,然后,遍历过程中,查看价格低于(严格小于)当前酒店的酒店中距离是否也严格低于当前酒店。编码一定要注意细节,这次因为sparse table第二个维度开的不够一直WA,若是poj Runtime Error还能查出,可是这次就被一直卡,对于数据范围预估是后面训练一直需要注意的一点

    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <string>
    #include <vector>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <string>
    #include <stack>
    #include <map>
    #include <set>
    #include <deque>
    using namespace std;
    
    const int maxn= 1e4+5;
    
    struct Record
    {
    	int p, d;
    }htl[maxn];
    int mm[maxn], dv[maxn][20];
    vector<int> ans;
    
    void InitRMQ(int n, Record b[])
    {
    	mm[0]= -1;
    	for (int i= 1; i<= n; ++i){
    		mm[i]= i & (i-1) ? mm[i-1] : mm[i-1]+1;
    		dv[i][0]= b[i].d;
    	}
    	for (int j= 1; j<= mm[n]; ++j){
    		for (int i= 1; i+(1<<j)-1<= n; ++i){
    			dv[i][j]= min(dv[i][j-1], dv[i+(1<<(j-1))][j-1]);
    		}
    	}
    }
    int Query(int l, int r)
    {
    	int k= mm[r-l+1];
    	return min(dv[l][k], dv[r-(1<<k)+1][k]);
    }
    bool cmp(Record lhs, Record rhs)
    {
    	return lhs.p< rhs.p || (lhs.p== rhs.p && lhs.d < rhs.d);
    }
    
    int main()
    {
    	int n;
    	while (~scanf("%d", &n)){
    		ans.clear();
    		for (int i= 1; i<= n; ++i){
    			scanf("%d %d", &(htl[i].p), &(htl[i].d));
    		}
    		sort(htl+1, htl+1+n, cmp);
    		InitRMQ(n, htl);
    
    		int id= 1;
    		for (int i= 1; i<= n; ++i){
    			if (htl[i].p!= htl[id].p){
    				id= i;
    			}
    			if (1== id || htl[i].d<= Query(1, id-1)){
    				ans.push_back(i);
    			}
    		}
    		int sz= ans.size();
    		printf("%d
    ", sz);
    		for (int i= 0; i< sz; ++i){
    			printf("%d %d
    ", htl[ans[i]].p, htl[ans[i]].d);
    		}
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    四、持久层框架(Hibernate)
    三、持久层框架(Hibernate)
    二、持久层框架(Hibernate)
    一、持久层框架(Hibernate)
    一、Redis的数据类型
    数组元素必须具有相同的数据类型?--不一定哦
    equals()源代码及释义
    古罗马皇帝凯撒加密军事情报
    String中重要方法与字段
    《大道至简》第四章
  • 原文地址:https://www.cnblogs.com/Idi0t-N3/p/14770571.html
Copyright © 2011-2022 走看看