2023年少年宫中级A1班

已结束 IOI 开始于: 2023-12-17 16:00 200 小时 主持人: 20

考试时间:16:10 - 17:30

T2:


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <algorithm>
#include <string>
#include <queue>
using namespace std;
const int N = 1e2 + 10;
const int INF = 0x3f3f3f3f;
int n, m;
int dir[8][2]= {{-1, -1}, {-1, 0},{-1, 1}, {1, -1}, {1, 0}, {1, 1},{0, 1},{0, -1}}; 
char map[N][N];
queue<pair<int, int> >q;
bool inArea(int x, int y){
	return x >= 1 && x <= n && y >= 1 && y <= m;
}
void bfs(int x, int y){
	q.push(make_pair(x, y));
	while(!q.empty()){
		int a = q.front().first;
		int b = q.front().second;
		q.pop();
		for(int i = 0; i < 8; i ++){
			int newx = a + dir[i][0];
			int newy = b + dir[i][1];
			if(inArea(newx, newy) && map[newx][newy] == 'W'){
				q.push(make_pair(newx, newy));
				map[newx][newy] = '.';
			}
		}
	}
}

int main(){


	cin >> n >> m;
	int ans = 0;
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= m; j ++){
			cin >> map[i][j]; 
		}
	}
	
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= m; j ++){
			if(map[i][j] == 'W'){
				bfs(i, j);
				ans ++;
			} 
		}
	}
	cout << ans;

	return 0;
}

T3

int dfs(int n){
	if(n == 1) return 1;
	if(mp[n] == 0) {
		mp[n] = 1;
		for(int i = 2; i * i <= n; i ++){
			if(n % i == 0){
				if(i * i == n){
					mp[n] += dfs(i);
				}else{
					mp[n] += (dfs(i) + dfs(n / i));
				}
				
			}
		}
	}
	return mp[n];
}

题目

请参加比赛来查看题目。
状态
已结束
规则
IOI
题目
3
开始于
2023-12-17 16:00
结束于
2023-12-26 0:00
持续时间
200 小时
主持人
参赛人数
20