#include<iostream> using namespace std; int main() { char a[50001][16]; char b[50001][16]; int same[10001]={0,0}; int A,B,Q; int a1[10001],a2[10001],b1[10001],b2[10001]; char x[10001]; cin>>A>>B>>Q; for(int i=1;i<=A;i++) { for(int j=1;j<=B;j++) cin>>a[j]; } for(int i=1;i<=A;i++) for(int j=1;j<=B;j++) { b[j]='0'; if(a[j]=='0')same[1]++; } for (int i=1;i<=Q;i++) { cin>>a1>>a2>>b1>>b2; cin>>x; } for (int i=1;i<=Q;i++) { for(int j=a1;j<=a2;j++) { for(int k=b1;k<=b2;k++) { if(b[j][k]!=x) { b[j][k]=x; if(b[j][k]==a[j][k]) same++; else same--; } } } same[i+1]=same; } for(int i=1;i<=Q;i++) cout<<same<<endl; }
/**********************************************************/
本人初一新手,谁能帮我简化下算法时间(空间不要紧,距离题目要求上限少挺多)
/**********************************************************/
时间限制: 2 Sec 内存限制: 128 MB 题目描述 [color=rgba(0, 0, 0, 0.870588)]HRH有一天想在一张大的白纸上画画,他借了一台机器,这台机器需要输入五个参数才可以运行:a1,a2,b1,b2,x(1<=a1<=a2<=50000,1<=b1<=b2<=15,0<=x<=1),a1行到a2行,b1列到b2列,颜色变成x。而HRH心中有一幅理想图片的构成,想在请你算算每经过一次机器操作后,有多少个格子和他心中的图片格子颜色相同。
输入第一行 A B Q(A行B列Q个操作,Q<=10000) 之后A行目标画,每行B个数字连续输出 再之后Q个操作 输出每个操作数后的匹配数
输入
输出
样例输入17 15 101111111011111111111110001111111111100000111111111000000011111110000000001111111000000011111110000000001111100000000000111110000000001111100000000000111000000000000011100000000000111000000000000010000000000000001111110001111111111110001111111111110001111115 8 2 14 18 17 3 7 14 5 10 15 07 16 12 14 12 17 13 14 02 6 2 3 113 14 4 8 13 6 6 7 11 16 10 11 07 16 10 10 0样例输出113949591879391879393
|