175 条题解
-
0HBat LV 8 @ 2015-10-05 23:55:43
数据**#1**
和
#3
是怎么回事????
#include <iostream>
#include <vector>
#include <cstdio>using namespace std;
int main()
{
long long int n,m;
vector<char>mapp;
vector< vector<char> >maap;
cin>>n>>m;
long long int i,j;
int fh=0;
for(j=0;j<n;++j)
{
mapp.push_back('a');
}
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
{
cin>>mapp[j];
if(mapp[j]=='#')fh++;
}
maap.push_back(mapp);
}
if(m>=n)
{
cout<<fh;
return 0;
}
static long long int x,y;
long long int i1,j1;
static long long int ans;
static long long int w;
for(i=0;y<n;++i)
{
y=i+m;
for(j=0;x<n;++j)
{
x=j+m;
for(i1=i;i1<y;++i1)
{
for(j1=j;j1<x;++j1)
{
if(maap[i1][j1]=='#')w++;
}
}
ans=ans>w? ans:w;
w=0;
}
}
cout<<ans;
return 0;
} -
02015-09-26 18:16:12@
评测结果
编译成功测试数据 #0: Accepted, time = 15 ms, mem = 98356 KiB, score = 20
测试数据 #1: Accepted, time = 0 ms, mem = 98356 KiB, score = 20
测试数据 #2: Accepted, time = 15 ms, mem = 98356 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 98352 KiB, score = 20
测试数据 #4: Accepted, time = 16 ms, mem = 98352 KiB, score = 20
Accepted, time = 46 ms, mem = 98356 KiB, score = 100
代码
#include<iostream>
#include<fstream>
#include<windows.h>
#include<string>
#include<algorithm>
using namespace std;
char map[10000][10000];
int sum(int x,int y,int n)
{
int i,j,s=0;
for(i=x;i<x+n;i++)
{
for(j=y;j<y+n;j++)
{
if(map[i][j]=='#')s++;
}
}
return s;
}
int main()
{
int m,n,i,j,max=0;
cin>>m>>n;
for(i=0;i<m;i++)cin>>map[i];
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
if(max<sum(i,j,n))max=sum(i,j,n);
}
}
cout<<max<<endl;
return 0;
}
vijos第十题纪念 -
02015-09-04 21:59:49@
水题,更水的数据。。。。。
var n,m,i,j,k,l,h,max,s:longint;
c:array[1..10000,1..10000]of char;
x:string;
begin
readln(n);readln(m);
for i:=1 to n do begin
readln(x);
for j:=1 to n do c[i,j]:=x[j];
end;
if n=m then begin
for i:=1 to n do
for j:=1 to n do
if c[i,j]='#' then inc(max);
end else
for i:=1 to n-m+1 do
for j:=1 to n-m+1 do begin
s:=0;
for h:=i to i+m-1 do
for l:=j to j+m-1 do begin
if c[h,l]='#' then inc(s);
end;
if s>max then max:=s;
end;
write(max);
end. -
02015-08-28 12:34:53@
感觉和去年noip普及组最后一题有点像
不过数据简单很多,暴力搜索,我记得noip那道题还是剪枝优化了一堆才50分
###Block Code
m = int(raw_input())
n = int(raw_input())
base = []for i in range(m):
base.append(raw_input())ans = 0
for i in range(m-n+1):
for j in range(m-n+1):
cnt = 0
for i1 in range(i,i+n):
cnt += base[i1].count('#',j,j+n)
if cnt > ans:
ans = cntprint ans
-
02015-08-01 13:36:59@
暴搜,easy,纪念40AC
var a:array[1..10000,1..10000]of char;
n,m,i,j,p,q,ans,max:longint;
begin
readln(m,n);
for i:=1 to m do begin
for j:=1 to m-1 do read(a[i,j]);
readln(a[i,m]);
end;
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do begin
ans:=0;
for p:=i to i+n-1 do
for q:=j to j+n-1 do
if a[p,q]='#' then inc(ans);
if ans>max then max:=ans;
end;
writeln(max);
end. -
02015-06-07 13:32:57@
这题数据真水……目测m,n不超过100?我的O(n^4)都过了,还是秒杀……
注意一下核弹炸的范围可以大于基地的范围
测试数据 #0: Accepted, time = 15 ms, mem = 98616 KiB, score = 20
测试数据 #1: Accepted, time = 3 ms, mem = 98616 KiB, score = 20
测试数据 #2: Accepted, time = 0 ms, mem = 98616 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 98616 KiB, score = 20
测试数据 #4: Accepted, time = 15 ms, mem = 98616 KiB, score = 20
Accepted, time = 33 ms, mem = 98616 KiB, score = 100block code
代码
var
map:array[1..10000,1..10000] of char;
i,j,k,l:longint;
m,n:longint;
tmp:longint;
ans:Longint;
begin
readln(m);
readln(n);
for i:=1 to m do
begin
for j:=1 to m do read(map[i,j]);
readln;
end;
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do
begin
tmp:=0;
for k:=i to i+n-1 do
for l:=j to j+n-1 do
if map[k,l]<>'.' then inc(tmp);
if tmp>ans then ans:=tmp;
end;
writeln(ans);
end. -
02015-03-20 09:17:12@
#include<stdio.h>
char base[10000][10000];
int main()
{
int n,m,i,j,k,l;
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
{
scanf("%s",base[i]);
}
i=0,j=0;
int count=0,ans=0;
while(i+n<=m)
{
for(k=i;k<i+n;k++)
{
for(l=0;l<n;l++)
{
if(base[k][l]=='#')count++;
}
}
if(count>ans)ans=count;
i++;
count=0;
}
while(j+n<=m)
{
for(k=0;k<n;k++)
{
for(l=j;l<j+n;l++)
{
if(base[k][l]=='#')count++;
}
}
if(count>ans)ans=count;
j++;
count=0;
}
printf("%d",ans);
return 0;
}
这题很水啊。。。 -
02015-02-16 14:34:49@
#include <iostream>
using namespace std;
const int maxx = 10001;
int maze[maxx][maxx];
int main(){
int m, n, s, max = 0;
char c;
cin >> m >> n;
for (int i = m; i >= 1; i--){
for (int j = m; j >= 1; j--){
cin >> c;
if (c == '#'){
maze[i][j] = 1;
}
maze[i][j] += maze[i + 1][j] + maze[i][j + 1] - maze[i + 1][j + 1];
}
}
for (int i = 1; i <= m - n + 1; i++){
for (int j = 1; j <= m - n + 1; j++){
s = maze[i][j] - maze[i + n][j] - maze[i][j + n] + maze[i + n][j + n];
if (max < s){
max = s;
}
}
}
cout << max << endl;}
这数据有问题,我用从前往后累加,从后往前计算就WA,从后往前累加,从前往后计算就AC。。。
-
02015-02-01 11:37:27@
评测结果
编译成功foo.pas(21,8) Warning: Variable "max" does not seem to be initialized
测试数据 #0: Accepted, time = 0 ms, mem = 392128 KiB, score = 20
测试数据 #1: Accepted, time = 0 ms, mem = 392132 KiB, score = 20
测试数据 #2: Accepted, time = 0 ms, mem = 392128 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 392128 KiB, score = 20
测试数据 #4: Accepted, time = 0 ms, mem = 392132 KiB, score = 20
Accepted, time = 0 ms, mem = 392132 KiB, score = 100 -
02015-02-01 11:36:50@
var
m,n,i,j,i1,j1,o,max:longint;
u:string;
s:array[1..10000,1..10000] of longint;
begin
readln(m);
readln(n);
for i:=1 to m do
begin
readln(u);
for j:=1 to m do
if u[j]='.' then s[i,j]:=1;
end;
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do
begin
o:=0;
for i1:=i to i+n-1 do
for j1:=j to j+n-1 do
if s[i1,j1]<>1 then o:=o+1;
if o>max then max:=o;
end;
writeln(max);
end.
超级小白 -
02014-11-02 10:15:56@
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn=10001;
int ans=0,m,n,con,temp,b[maxn][maxn];
char a[maxn][maxn];int main()
{
memset(b,0,sizeof(b));
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
scanf("%s",&a[i][1]);
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
con=0;
for(int p=1;p<=i;p++)
for(int q=1;q<=j;q++)
if(a[p][q]=='#') con++;
b[i][j]=con;
}
for(int i=1;i<=m-n+1;i++)
for(int j=1;j<=m-n+1;j++)
{
temp=b[i+n-1][j+n-1]-b[i-1][j-1]-b[i+n-1][j-1]-b[i-1][j+n-1];
if(temp>ans) ans=temp;
}
printf("%d",ans);
return 0;
} -
02014-03-21 20:39:28@
水水水 数据弱爆了 枚举过
var f,m,n,max,i,j:longint;a:array[0..10000,0..10000]of char;
function pd(p,q:longint):longint;
var s,x,y:longint;
begin
s:=0;
for x:=p-n+1 to p do
for y:=q-n+1 to q do
if a[x,y]='#'then inc(s);
exit(s);
end;
begin
readln(m);readln(n);max:=0;
for i:=1 to m do
begin
for j:=1 to m do read(a[i,j]);
readln;
end;
for i:=n to m do
for j:=n to m do
begin
f:=pd(i,j);
if f>max then max:=f;
end;
writeln(max);
end. -
02014-01-22 23:37:55@
代码块tab键缩进也没用无语了。
-
02014-01-22 23:37:10@
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
测试数据 #1: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
测试数据 #2: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 8312 KiB, score = 20
测试数据 #4: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
Accepted, time = 0 ms, mem = 8316 KiB, score = 100
代码
#include <iostream>
using namespace std;
int m,n,i,j;
__int64 ans;
char ch;
__int64 a[1001][1001];
int main(){
while(cin>>m>>n){
ans=0;
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
cin>>ch;
if(ch=='#')
a[i][j]=a[i][j-1]+a[i-1][j]-a[i-1][j-1]+1;
else
a[i][j]=a[i][j-1]+a[i-1][j]-a[i-1][j-1];
if(i>=n&&j>=n&&ans<a[i][j]-a[i-n][j]-a[i][j-n]+a[i-n][j-n])
ans=a[i][j]-a[i-n][j]-a[i][j-n]+a[i-n][j-n];
}
}
cout<<ans<<endl;
}
return 0;
} -
02014-01-22 23:35:22@
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
测试数据 #1: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
测试数据 #2: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 8312 KiB, score = 20
测试数据 #4: Accepted, time = 0 ms, mem = 8316 KiB, score = 20
Accepted, time = 0 ms, mem = 8316 KiB, score = 100
代码
#include <iostream>
using namespace std;
int m,n,i,j;
__int64 ans;
char ch;
__int64 a[1001][1001];
int main(){
while(cin>>m>>n){
ans=0;
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
cin>>ch;
if(ch=='#')
a[i][j]=a[i][j-1]+a[i-1][j]-a[i-1][j-1]+1;
else
a[i][j]=a[i][j-1]+a[i-1][j]-a[i-1][j-1];
if(i>=n&&j>=n&&ans<a[i][j]-a[i-n][j]-a[i][j-n]+a[i-n][j-n])
ans=a[i][j]-a[i-n][j]-a[i][j-n]+a[i-n][j-n];
}
}
cout<<ans<<endl;
}
return 0;
} -
02013-10-25 19:00:26@
0.0,数据好弱啊……
-
02013-10-22 12:44:02@
大水题..
编译成功
测试数据 #0: Accepted, time = 0 ms, mem = 98404 KiB, score = 20
测试数据 #1: Accepted, time = 0 ms, mem = 98412 KiB, score = 20
测试数据 #2: Accepted, time = 0 ms, mem = 98412 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 98412 KiB, score = 20
测试数据 #4: Accepted, time = 0 ms, mem = 98412 KiB, score = 20
Accepted, time = 0 ms, mem = 98412 KiB, score = 100
#include <iostream>
using namespace std;
int m, n;
char baseMap[10000][10000];//
// 统计x,n+x,y,n+y正方形内有多少房屋
//
int CountHouse(int x, int y)
{
int i, j, housesTotal = 0;
for (i = x; i < (n + x); i++) {
for (j = y; j < (n + y); j++) {
if (baseMap[i][j] == '#')
housesTotal++;
}
}
return housesTotal;
}int main()
{
int i, j;//
// 读入数据
//
cin >> m;
cin >> n;
for (i = 0; i < m; i++) {
cin >> baseMap[i];
}//
// 基地矩形变长 - 炸弹矩形边长 = 搜索偏移
//
int Distance = m - n;
// 特判:如果n>m那么所有房屋都会被炸
if (Distance < 0)
Distance = 0;//
// 搜索所有可炸的正方形领域,取房屋数最大值
//
int HousesTotal, MaxHousesTotal = 0;
for (i = 0; i <= Distance; i++) {
for (j = 0; j <= Distance; j++) {
HousesTotal = CountHouse(i, j);
if (HousesTotal > MaxHousesTotal) {
MaxHousesTotal = HousesTotal;
}
}
}//
// 输出结果
//
cout << MaxHousesTotal;return 0;
} -
02013-10-20 19:07:23@
出题目的脑子怎么了,m<10000,尼玛,还1s,N^2的读入就超时了!
-
02013-07-18 20:00:06@
FU %%% CK!!!!!!!第三组数据是长10宽8的,做测试数据的脑子进农夫山泉了吧
-
02013-03-31 09:27:49@
#include<iostream>
#include<stdio.h>
using namespace std;int main()
{
char **a;
int m,n,i,j,k,s;
int sum=0; // 统计符合条件的个数
int max=-1; //最大的个数是max
cin>>m;
cin>>n;
a=new char*[ m+1 ];
for( i=0; i<=m; i++)
a[i]=new char[ m+1 ];for( i=1; i<=m; i++) //输入数据
for( j=1; j<=m; j++)
cin>>a[i][j];for( k=1; k<=m-n+1; k++) //正方形n开始第一个的横坐标
{
for( s=1; s<=m-n+1; s++) //正方形n开始第一个的纵坐标
{
sum=0;
for( i=k; i<=k+n-1; i++) // 对正方形n中的所有符合条件的元素求和
for( j=s; j<=s+n-1; j++)
{
if( a[i][j]=='#' )
sum++;
}if( max<sum ) { max=sum; }
}
}cout<<max;
return 0;
}测试数据 #0: Accepted, time = 15 ms, mem = 228 KiB, score = 20
测试数据 #1: Accepted, time = 15 ms, mem = 228 KiB, score = 20
测试数据 #2: WrongAnswer, time = 30 ms, mem = 228 KiB, score = 0
测试数据 #3: Accepted, time = 15 ms, mem = 228 KiB, score = 20
测试数据 #4: Accepted, time = 14 ms, mem = 228 KiB, score = 20不知怎样改才能通过第二的数据,求大神指点