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;
}