本文共 3889 字,大约阅读时间需要 12 分钟。
7600B的代码量,不说啥了,现场能不能做出来还要看运气.
2Y,第一次忘记输出t16,WA了。。。
代码如下:
#include #include #include #include #include using namespace std;struct point{ int x,y; bool operator<(const point&c) const { if (x!=c.x) return x ID;map >row,col,k1,k2;int _count[100005],cnt_ID,horse[100005],cnt_horse,ans[20];int dx[8]= {-2,-2,-1,-1,1,1,2,2},dy[8]= {1,-1,2,-2,2,-2,1,-1};int main(){ int i,j,T,n; scanf("%d",&T); for (int kcase=1; kcase<=T; ++kcase) { scanf("%d",&n); memset(_count,0,sizeof(_count[0])*n); ID.clear(); row.clear(); col.clear(); k1.clear(); k2.clear(); cnt_horse=cnt_ID=0; char c,ch; point p; mark m; int x,y; for (i=0; i (); if (!col.count(y)) col[y]=vector (); if (!k1.count(x+y)) k1[x+y]=vector(); if (!k2.count(x-y)) k2[x-y]=vector(); m.id=i,m.p=y; row[x].push_back(m); m.p=x; col[y].push_back(m); k1[x+y].push_back(m); k2[x-y].push_back(m); } for (map >::iterator it=row.begin(); it!=row.end(); it++) sort(row[it->first].begin(),row[it->first].end()); for (map >::iterator it=col.begin(); it!=col.end(); it++) sort(col[it->first].begin(),col[it->first].end()); for (map >::iterator it=k1.begin(); it!=k1.end(); it++) sort(k1[it->first].begin(),k1[it->first].end()); for (map >::iterator it=k2.begin(); it!=k2.end(); it++) sort(k2[it->first].begin(),k2[it->first].end());// printf("row :\n");// for (map >::iterator it=row.begin(); it!=row.end(); it++)// {// printf("%d : ",it->first);// for (i=0; i first].size(); ++i)// printf(" %d",row[it->first][i].id);// printf("\n");// }// for (map >::iterator it=col.begin(); it!=col.end(); it++)// sort(col[it->first].begin(),col[it->first].end());// for (map >::iterator it=k1.begin(); it!=k1.end(); it++)// sort(k1[it->first].begin(),k1[it->first].end());// for (map >::iterator it=k2.begin(); it!=k2.end(); it++)// sort(k2[it->first].begin(),k2[it->first].end()); for (map >::iterator it=row.begin(); it!=row.end(); it++) { int size=row[it->first].size(); for (i=0; i first][i].id].role=='K') { if (i && row[it->first][i-1].p==row[it->first][i].p-1) ++_count[row[it->first][i-1].id]; if (i first][i+1].p==row[it->first][i].p+1) ++_count[row[it->first][i+1].id]; } else if (information[row[it->first][i].id].role=='R' || information[row[it->first][i].id].role=='Q') { if (i) ++_count[row[it->first][i-1].id]; if (i first][i+1].id]; } } } for (map >::iterator it=col.begin(); it!=col.end(); it++) { int size=col[it->first].size(); for (i=0; i first][i].id].role=='K') { if (i && col[it->first][i-1].p==col[it->first][i].p-1) ++_count[col[it->first][i-1].id]; if (i first][i+1].p==col[it->first][i].p+1) ++_count[col[it->first][i+1].id]; } else if (information[col[it->first][i].id].role=='R' || information[col[it->first][i].id].role=='Q') { if (i) ++_count[col[it->first][i-1].id]; if (i first][i+1].id]; } } } for (map >::iterator it=k1.begin(); it!=k1.end(); it++) { int size=k1[it->first].size(); for (i=0; i first][i].id].role=='K') { if (i && k1[it->first][i-1].p==k1[it->first][i].p-1) ++_count[k1[it->first][i-1].id]; if (i first][i+1].p==k1[it->first][i].p+1) ++_count[k1[it->first][i+1].id]; } else if (information[k1[it->first][i].id].role=='B' || information[k1[it->first][i].id].role=='Q') { if (i) ++_count[k1[it->first][i-1].id]; if (i first][i+1].id]; } } } for (map >::iterator it=k2.begin(); it!=k2.end(); it++) { int size=k2[it->first].size(); for (i=0; i first][i].id].role=='K') { if (i && k2[it->first][i-1].p==k2[it->first][i].p-1) ++_count[k2[it->first][i-1].id]; if (i first][i+1].p==k2[it->first][i].p+1) ++_count[k2[it->first][i+1].id]; } else if (information[k2[it->first][i].id].role=='B' || information[k2[it->first][i].id].role=='Q') { if (i) ++_count[k2[it->first][i-1].id]; if (i first][i+1].id]; } } } for (i=0; i
转载于:https://www.cnblogs.com/Chierush/archive/2013/06/05/3118173.html