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;
    }
    
  • 相关阅读:
    [LeetCode] Reverse Linked List II
    [LeetCode] Reverse Linked List
    [LeetCode] Palindrome Linked List
    人工智能之一《tensorflow》
    计算机视觉之《OpenCV开发环境搭建》
    Android Automotive开发之一《编译自己的SDK 》 // TOBEDONE
    Android Automotive开发之一《环境: JDK7&JDK8切换 》
    Android Auto开发之一《开始学习Auto 》
    网络安全之证书、密钥、密钥库等名词解释
    Android开发笔记之《特斯拉-Tesla 代码分析》
  • 原文地址:https://www.cnblogs.com/Idi0t-N3/p/14770571.html
Copyright © 2011-2022 走看看