zoukankan      html  css  js  c++  java
  • 2018 ICPC 徐州网络预赛 Features Track (STL map pair)

    【传送门】https://nanti.jisuanke.com/t/31458

    【题目大意】有N个帧,每帧有K个动作特征,每个特征用一个向量表示(x,y)。两个特征相同当且仅当他们在不同的帧中出现且向量的两个分量分别相等。求最多连续相同特征的个数?

    【题解】用一个map来维护帧中特征的信息,map中的键即读入的向量,因此用一个pair<int , int>表示,键的值也是一个pair,需要记录它当前已经连续了多少次,还需要记录它上一次出现的帧的位置。如果它上一帧没有出现过,那么它的连续次数就要被置成1;如果上次出现了,则继续累加。用ans维护某个键最大连续出现次数。

    map<pair<int ,int> , pair<int ,int>>

    map[ pair(x,y)].first为该特征(x.y)连续次数  

    map[ pair(x,y)].second为该特征上一次出现的帧序号,用于下一次判断连续性

    【AC代码】

    #include <cstdio>
    #include <cstring>
    #include <map>
    #include <iostream>
    #include <utility>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pii;
    map<pii , pii> mp; 
    int main(){
        int t;
        cin>>t;
        int n,k,x,y,ans ;
        while(t--){
            ans = -1;
            cin>>n;
            for(int i=1; i<=n; i++){
                cin>>k;
                for(int j=1; j<=k; j++){
                    cin>>x>>y;
                    if(mp[ pii(x,y) ].second == i - 1)    mp[ pii(x,y) ].first++;
                    else if(mp[ pii(x,y) ].second == i)    continue;
                    else    mp[ pii(x,y) ].first = 1;
                    ans = max(ans , mp[ pii(x,y) ].first);
                    mp[ pii(x,y) ].second = i;
                }
            }
            cout<<ans<<endl;
        }
    
        
        return 0;
    }
  • 相关阅读:
    收藏的一些前端学习的网址
    使用box-shadow 实现水波、音波的效果
    asyncjs,waterfall的使用
    兼容opacity的方法
    在php框架中写正规则表达式时的磕绊
    浏览器的渲染原理
    正规则表达式判断数字
    ie6,7,8不兼容rgba,写background时候不要写成rgba
    jquery-ias插件详解
    制作手机页面过程中遇到的一点问题
  • 原文地址:https://www.cnblogs.com/czsharecode/p/9615801.html
Copyright © 2011-2022 走看看