1. 程式人生 > >[cf]Codeforces Round #546 (Div. 2)

[cf]Codeforces Round #546 (Div. 2)

display close long long style none -i for 石頭 ack

solved 3

A(簽到)

題意:

簽到

技術分享圖片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define pb push_back
#define mp make_pair
#define LL long long
#define nd second
#define st first

#define pii pair<int , int> 

const int N = 2e2+7;

int n;

pii a[N];

int main(){ cin>>n; rep(i,n){ int l,r; cin>>l>>r; a[i]=mp(l,r); } int x; cin>>x; rep(i,n){ if(a[i].nd>=x){ cout<<n-i+1; return 0; } } }
View Code

B(思維)

題意:

有線性排列的n個洞,開始時每個洞口有一塊石頭,每個洞口裏有一個金幣,當洞口沒有石頭時可以取出金幣,開始時在第k個洞口。

1取出金幣 2把當前洞口的一塊石頭扔到其他任意一個洞口 3移動一步 都視為一次操作。

求取出所有金幣最少的操作數。

顯然取完第一個洞口之後,所有的石頭就可以扔到第一個洞口上,因此只需要移n+1塊石頭,取金幣要n次操作,移動只需要遍歷一遍所有洞口,根據初始位置可以直接算出。

技術分享圖片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define
pb push_back #define mp make_pair #define LL long long #define nd second #define st first #define pii pair<int , int> const int N = 2e2+7; int n,k; int main(){ cin>>n>>k; int ans=n*2+1; ans+=min(n-1+k-1,n-k+n-1) ; cout<<ans; }
View Code

C(思維)

題意:

給出矩陣A,B,可以無限次地轉置任意一個A的子方陣,問A是否可以變換為B。

觀察知方陣的轉置等價於若幹次交換副對角線上相鄰的兩個數,即左下和右上交換,也就是每條副對角線上的元素都是可以任意交換的,因此只需要判斷A和B的每一條副對角線上是否含有完全相同的數即可。

技術分享圖片
 #include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define pb push_back
#define mp make_pair
#define LL long long
#define nd second
#define st first

#define pii pair<int , int> 

const int N = 2e4+7;

vector<int> a[N];
vector<int> b[N];

int main(){
    int n,m;
    cin>>n>>m;
    rep(i,n)
    rep(j,m){
        int x;
        cin>>x;
        a[i+j].pb(x);
    }
    
    rep(i,n)
    rep(j,m){
        int x;
        cin>>x;
        b[i+j].pb(x);
    }
    
    for(int i=2;i<=n+m;i++){
        sort(a[i].begin(),a[i].end());
        sort(b[i].begin(),b[i].end());
        for(int j=0;j<a[i].size();j++)if(a[i][j]!=b[i][j]){
            cout<<"NO";
            return 0;
        }
    }
    cout<<"YES";
    
} 
View Code

[cf]Codeforces Round #546 (Div. 2)