以下,6道WA
#a题,数组开的太小,自己却一直没发现,没过,实际把下标开的大一点就ac
,不细心,受到他人ac题,自己为了赶时间,结果越忙越乱
#c题,自己想的太多(无关的东西),一直觉得是c++的IO输出流影响时间,各种优化cin,cout换成printf,scanf,又换成getchar。觉得这是瓶颈,却没看到本质,只要稍微想想数学知识就能解决,一直陷入打表的执念,却没着手做,超时。以后要考虑数学知识优化,而不是一味用语法知识。
还有,自以为是地调用clock函数算时间,觉得用管道输入5组数据才耗时不到100ms就以为算法没问题,实际上真实测试数据IO量远远大于5组。
#e题 这道题想想是真的亏,当时所有思路正确,就是觉得自己dfs还不太熟,就想先放着以后再做。。。。考完前20分钟没考虑这题,一直调试a,c还有h,讽刺的是这3道,一道也没ac。。还是多练题,熟了自然就有自信做。dfs做题过少(位运算枚举只是看过源码,甚至自己都没敲过一遍)
#g题,题意理解错误,虽然现在看着简单,但不亏,自己读题马虎,必须得改!
#h题 这题是我太傻,头铁浪费时间也没做出来
以下放出我的头铁代码感受一下hhh
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1005
using namespace std;
char a[maxn][maxn];
int main(){
int n;
char c;
cin>>n;
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
cin>>a[i][j];
}
}
while(cin>>c){
if(c=='1'){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][j]=='M')
a[i][j]='3';
else if(a[i][j]=='W')
a[i][j]='E';
else if(a[i][j]=='3')
a[i][j]='W';
else if(a[i][j]=='E')
a[i][j]='M';
else if(a[i][j]=='|')
a[i][j]='-';
else if(a[i][j]=='-')
a[i][j]='|';
}
}
}
if(c=='2'){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][j]=='M')
a[i][j]='W';
else if(a[i][j]=='W')
a[i][j]='M';
else if(a[i][j]=='3')
a[i][j]='E';
else if(a[i][j]=='E')
a[i][j]='3';
}
}
}
if(c=='3'){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][j]=='M')
a[i][j]='E';
else if(a[i][j]=='W')
a[i][j]='3';
else if(a[i][j]=='3')
a[i][j]='M';
else if(a[i][j]=='E')
a[i][j]='W';
else if(a[i][j]=='|')
a[i][j]='-';
else if(a[i][j]=='-')
a[i][j]='|';
}
}
}
if(c=='4'){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][j]=='E')
a[i][j]='3';
else if(a[i][j]=='W')
a[i][j]='3';
else if(a[i][j]=='3')
a[i][j]='M';
else if(a[i][j]=='E')
a[i][j]='W';
else if(a[i][j]=='|')
a[i][j]='-';
else if(a[i][j]=='-')
a[i][j]='|';
}
}
}
if(c=='5'){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][j]=='M')
a[i][j]='W';
else if(a[i][j]=='W')
a[i][j]='M';
else if(a[i][j]=='3')
a[i][j]='E';
else if(a[i][j]=='E')
a[i][j]='3';
}
}
}
if(c=='6'){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][j]=='M')
a[i][j]='3';
else if(a[i][j]=='W')
a[i][j]='E';
else if(a[i][j]=='3')
a[i][j]='W';
else if(a[i][j]=='E')
a[i][j]='M';
else if(a[i][j]=='|')
a[i][j]='-';
else if(a[i][j]=='-')
a[i][j]='|';
}
}
}
}
int first = 1;
for(int i =0;i<n;i++){
if(first) first = 0;
else cout<<endl;
for(int j = 0;j<n;j++){
printf("%c",a[i][j]);
}
}
return 0;
}
《代码》
------实际上6种操作都可以由第1重复若干次得到,且4次一循环(我太嫩)
#J题 这题自己当时直接放弃(觉得一定是压轴题,就没太费时间看)倒是无怨无悔。
总结()
不管怎么样,这都是一次宝贵的经验,让我真正看清楚自己的不足。好高骛远+不勤加练习+轻视水题。
我还有时间,才大一上学期,没必要强迫自己将那么多知识学完,或许,比起不切实际地看数论,图论,红黑树,高级DP.还不如先把水题刷好,打好基础。虽然结果很惨痛,但认清了自己,以后有了切实的目标,加油吧。