• Codeforce Round #546(Div2)


      这次开VP做的..

    C:

      知识点get:

      对于同一副对角线的矩阵元素ai,j和bi,j,满足:i+j相等

      题意:给两个矩阵A,B;对A的每次变换可以选择A的任意一个正方形子矩阵T使其行列互换(Ti,j =>Tj,i)问A是否可以经过若凡此变换成为矩阵B

      比赛的时候这题不会(当时只想着如何对主对角线操作了,还异或了一下看哪些是变化的...),赛后看题解发现,因为每次变换都是以主对角线为对称轴,那么无论怎么变换,同一条副对角线上的数只会改变顺序,不会改变数,所以对每条副对角线排序看一下变换前后是不是全等就OK,(牛批网友真是牛批orz....)

      代码如下:

      

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,m;
     4 const int maxn=5e2+5;
     5 int a[maxn][maxn],b[maxn][maxn];
     6 int vis[maxn][maxn];
     7 vector<int>v1[maxn*2],v2[maxn*2];
     8 int main()
     9 {
    10     ios::sync_with_stdio(0);
    11     cin>>n>>m;
    12     for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) cin>>a[i][j];
    13     for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) cin>>b[i][j];
    14     for(int i=1;i<=n;++i)
    15     {
    16         for(int j=1;j<=m;++j)
    17         {
    18             v1[i+j].push_back(a[i][j]);
    19             v2[i+j].push_back(b[i][j]);
    20         }
    21     }
    22     for(int i=2;i<=n+m;++i)
    23     {
    24         sort(v1[i].begin(),v1[i].end());
    25         sort(v2[i].begin(),v2[i].end());
    26         for(int j=0;j<v1[i].size();++j)
    27         {
    28             if(v1[i][j]!=v2[i][j])
    29             {
    30                 cout<<"NO";
    31                 return 0;
    32             }
    33         }
    34     }
    35     cout<<"YES";
    36 }

      D:疯狂xjb理解错题意的一道题emmmm

      正确题意:对于序列n给定1~n的一个全排列代表位置i有编号为ai的一个同学,已知小明在队伍的最后一个. 给你m个数对(u,v),表示编号为u和v的两个同学可以交换(只有两人相邻的时候才可以交换),

      求:小明最多可以前进多少步

      一开始写了个dij最长路...然后发现有环最长路会无限循环?(这东西都忘了,我真是个弟弟...)

      牛批网友做法:

      

    代码如下:

     1 #include<bits/stdc++.h>
     2 #define pii pair<int,int>
     3 using namespace std;
     4 const int maxn=3e5+5;
     5 int n,m;
     6 map<pii,int>ma;
     7 int pul[maxn];
     8 int main()
     9 {
    10     ios::sync_with_stdio(0);
    11     cin>>n>>m;
    12     for(int i=1;i<=n;++i) cin>>pul[i];
    13     for(int i=1;i<=m;++i)
    14     {
    15         int a,b;cin>>a>>b;
    16         ma[make_pair(a,b)]=1;
    17     }
    18     vector<int>v;
    19     v.push_back(pul[n]);
    20     int ans=0;
    21     for(int i=n-1;i>=1;--i)
    22     {
    23         int flag=0;
    24         for(auto t:v)
    25         {
    26             if(ma[make_pair(pul[i],t)]==0)
    27             {
    28                 flag=1;
    29                 break;
    30             }
    31         }
    32         if(flag) v.push_back(pul[i]);
    33         else
    34         {
    35             ++ans;
    36         }
    37         
    38     }
    39     cout<<ans<<endl;
    40 }
  • 相关阅读:
    Java——Java重写和重载
    Java——继承
    Java——Java异常(不完整)
    Java——Stream、File、IO
    前端规范整理
    网站前端优化 -saveForSelf
    PhoneGap与WAP站静态化
    js执行顺序
    前端优化-内容优化-郑钧
    HTTP协议-标签简介
  • 原文地址:https://www.cnblogs.com/codeoosacm/p/10700893.html
Copyright © 2020-2023  润新知