51,680
社区成员
发帖
与我相关
我的任务
分享
1、

#include <bits/stdc++.h>
using namespace std;
int st[102][102] = {0};
int a[102][102] = {0};
int n, m;
int t, k;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
void turn(int x, int y)
{
for(int i = 0; i < 4; i++)
{
int ax = x + dx[i];
int ay = y + dy[i];
if(ax >= 1 && ax <= n && ay >= 1 && ay <= m && st[ax][ay] == 0)
{
st[ax][ay] = 1;
a[ax][ay] = 1;
}
}
}
int main()
{
int res = 0;
cin >> n >> m;
cin >> t;
while(t --)
{
int x, y;
cin >> x >> y;
st[x][y] = 1;
}
cin >> k;
while(k --)
{
for(int i = 1; i <= 100; i++)
for(int j = 1; j <= 100; j++)
{
if(st[i][j] == 1 && a[i][j] != 1)
{
turn(i, j);
a[i][j] = 0;
}
}
}
for(int i = 1; i <= 100; i++)
for(int j = 1; j <= 100; j++)
{
if(st[i][j])
{
res++;
}
}
cout << res << endl;
return 0;
}
2、
#include <iostream>
using namespace std;
int arr[10001];
int n, big = 0;
void dfs(int x, int index, int cnt) {
if (cnt > n) return;
if (x == index) {
big = big > cnt ? big : cnt;
return;
}
dfs(arr[x], index, cnt + 1);
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> arr[i];
}
for (int i = 1; i <= n; ++i) {
dfs(arr[i], i, 1);
}
cout << big << endl;
return 0;
}
3、

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 5050;
int f[N][N];
const int mod = 1000000007l;
string s;
int n;
LL solve()
{
memset(f, 0, sizeof f);
f[0][0] = 1;
for(int i = 1; i <= n; i++)
{
if(s[i - 1] == '(')
{
for(int j = 1; j <= n; j++)
f[i][j] = f[i - 1][j - 1];
}
else
{
f[i][0]=(f[i-1][1]+f[i-1][0])%mod;
for(int j=1;j<=n;j++)
f[i][j]=(f[i-1][j+1]+f[i][j-1])%mod;
}
}
for(int i=0;i<=n;i++)
if(f[n][i])
return f[n][i];
return -1;
}
int main()
{
cin >> s;
n = s.size();
LL x = solve();
reverse(s.begin(),s.end());
for(int i=0;i<n;i++){
if(s[i]==')')
s[i]='(';
else
s[i]=')';
}
LL y=solve();
cout<<(x*y)%mod;
return 0;
}