ABC 378

A - Pairing

题目描述

在这里插入图片描述
简明题意:给你四个数字,找出能两两匹配的对数。

Code

#include <bits/stdc++.h>
#define int long long
using namespace std;
//=================
const int N=1e4+10;
int a[10];
int m,cnt;
//=================
void solve(){
    int cnt=0;
    for(int i=1;i<=4;i++){
        cin>>m;
        a[m]++;
    }
    for(int i=1;i<=4;i++){
        cnt+=a[i]/2;
    }
    cout<<cnt<<endl;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    solve();
    return 0;
}

B - Garbage Collection

题目描述

在这里插入图片描述
(一道简单的模拟题)
简明题意:对于每个日期,找出在它之后第一个(包括自己本身)模t余d的数字。

Code

#include <bits/stdc++.h>
#define int long long
using namespace std;
//=================
const int N=1e4+10;
struct point{
    int q,r;
}a[110];
int n,Q,t,d;
//=================

void solve(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].q>>a[i].r;
    }
    cin>>Q;
    while(Q--){
        cin>>t>>d;
        if(d%a[t].q<=a[t].r){
            cout<<(d/a[t].q)*a[t].q+a[t].r<<endl;
        }else{
            cout<<(d/a[t].q+1)*a[t].q+a[t].r<<endl;
        }
    }
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    solve();
    return 0;
}

C - Repeating

题目描述

在这里插入图片描述
简明题意:

Code

注意标记和更新即可,一道比较简单的题

#include <bits/stdc++.h>
#define int long long
using namespace std;
//=================
const int N=2e5+10;
int n;
map<int,int>mp;
int a[N],b[N];
//=================
void solve(){
    cin>>n;
    mp.clear();
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(mp.count(a[i])==0){
            b[i]=-1;
        }else{
            b[i]=mp[a[i]];
        }
        mp[a[i]]=i;
    }
    for(int i=1;i<=n;i++){
        cout<<b[i]<<" ";
    }cout<<endl;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    solve();
    return 0;
}

D - Count Simple Paths

问题描述

在这里插入图片描述

Code

一道dfs的题目,对于每个可以没被标记的点,往下深搜。

#include <bits/stdc++.h>
#define int long long
using namespace std;
//=================
const int N=2e5+10;
int n,m,k;
vector<string>s;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int vis[20][20];
//=================

int dfs(int x,int y,int k){
    if(k==0)return 1;
    int c=0;
    vis[x][y]=1;
    for(int i=0;i<4;i++){
        int to_x=x+dx[i];
        int to_y=y+dy[i];
        if(to_x>=0 && to_x<n && to_y>=0 && to_y<m && s[to_x][to_y]=='.' && !vis[to_x][to_y]){
            c+=dfs(to_x,to_y,k-1);
        }
    }
    vis[x][y]=0;
    return c;
}
void solve(){
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        string ss;
        cin>>ss;
        s.push_back(ss);
    }
    int cnt=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(s[i][j]=='.'){
                cnt+=dfs(i,j,k);
            }
        }
    }
    cout<<cnt<<endl;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    solve();
    return 0;
}	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值