Problem A Spotlights
这题是Codeforces 729B。
题目描述
给出一个 01 矩阵,每个 0 的上下左右四个方向上有 1 的方向数称为它的价值,请你求出这个矩阵中所有 0 的价值之和。
代码
#include
using namespace std;
const int MAXN=1005;
int main(){
#ifndef OFF_LINE
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
#endif
ios::sync_with_stdio(false);
int n,m,ans=0;
bool a[MAXN][MAXN];
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!a[i][j]){
//Left
for(int x=i-1;x>0;x--){
if(a[x][j]){
ans++;
break;
}
}
//Right
for(int x=i+1;x<=n;x++){
if(a[x][j]){
ans++;
break;
}
}
//Up
for(int x=j-1;x>0;x--){
if(a[i][x]){
ans++;
break;
}
}
//Left
for(int x=j+1;x<=m;x++){
if(a[i][x]){
ans++;
break;
}
}
}
}
}
cout<
Problem B
这题是Codeforces 582B。
代码
#include
#include
#include
#include
#include
using namespace std;
int a[10005],f[10005],b[305];
int main()
{
int n,t,i,j;
cin>>n>>t;
int len=n*min(n,t);
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
b[a[i]]++;
}
int mxa=1;
for(i=n+1;i<=len;i++)
a[i]=a[i-n];
for (i=1;i<=len;i++)
{
f[i]=1;
for (j=i-1;j>=max(i-n,1);j--)
{
if (a[i]>=a[j])
f[i]=max(f[i],f[j]+1);
}
mxa=max(mxa,f[i]);
}
if (n>=t)
cout<
Problem C
这题是Codeforces 580D。
此处评论已关闭