ACM-ICPC 2018徐州地区ネットワーク予選F GI(更新継続)

3198 ワード

/*************************  F. Features Track  *****************************

  :https://nanti.jisuanke.com/t/31458

  :   1 n,n ,    k      k  ,      k  , 
              

  :map pair     int,        ,             
      

****************************************************************************/
#include
using namespace std;

map,int>mp1,mp2;
/** mp1    ,mp2           */

int main()
{
    int t;
    cin>>t;
    while(t--){
        int n,Max=0;
        scanf("%d",&n);
        mp1.clear();mp2.clear();
        for(int i=1;i<=n;i++){
            int k;
            scanf("%d",&k);
            while(k--){
                int x,y;
                scanf("%d%d",&x,&y);
                if(mp2[make_pair(x,y)]==i) continue;
                else if(mp2[make_pair(x,y)]==i-1||mp1[make_pair(x,y)]==0){
                    mp1[make_pair(x,y)]++;
                    mp2[make_pair(x,y)]=i;
                }
                else{
                    mp1[make_pair(x,y)]=1;
                    mp2[make_pair(x,y)]=i;
                }
                Max=max(Max,mp1[make_pair(x,y)]);
            }
        }
        printf("%d
",Max=Max<2?0:Max); } return 0; }
/*************************   G. Trace  **********************************

  :https://nanti.jisuanke.com/t/31459

  :n  ,        ,     (0,0)      ,      
   ,       ,          ,x,y            xy

  :set+  
    1. x,y    x  ,y  ,   set,s1  x     ,s2  y     
    2.          ,      ,  lower_bound        ,   
  ,  ans;

for(int i=n-1;~i;--i){
    auto it=s1.lower_bound(x[i]);
    ans+=x[i]-*--it;
    s1.insert(x[i]);
    it=s2.lower_bound(y[i]);
    ans+=y[i]-*--it;
    s2.insert(y[i]);
}
    :
    1.s1.lower_bound()     set    ,     ,      x[i] set    ,
  set            ,  --it   x[i]        ,*--it    
    2.auto              ,           
    set::iterator it;
    3.    ,            ,         ,          ,  ans

*************************************************************************/
#include
using namespace std;
#define ll long long

const int maxn = 1e5+5;
int x[maxn],y[maxn];
sets1,s2;

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i

 
/********************************   I. Characters with Hash  *****************************

  :https://nanti.jisuanke.com/t/31461

  :    n       ,      ,                     ,
        ,    0,         ,    0,       

  :
    1.         ,       1  2,           1 2  
    2.            0 ,ans=1,     1;

******************************************************************************************/
#include
using namespace std;

int main()
{
    int t;
    cin>>t;
    while(t--){
        int n,ans,s=0;
        char x,a[1000005];
        cin>>n>>x>>a;
        for(int i=0;i