[USACO5.1]Starry Night
2017-08-30 15:01
429 查看
乍一看,好像很难的样子。
处理联通块+复制8份+判重
感觉随随便便就是
可以通过优化后两步来优化代码复杂度。
当然要用到一个神奇的思想
我们可以将一个点对一个星系的贡献为:它上下左右星星的个数+1与其它四个方向星星的个数+5的积
正确率比较高,不过还是A了
处理联通块+复制8份+判重
感觉随随便便就是
Lines:100+100+100
可以通过优化后两步来优化代码复杂度。
当然要用到一个神奇的思想
hash
我们可以将一个点对一个星系的贡献为:它上下左右星星的个数+1与其它四个方向星星的个数+5的积
正确率比较高,不过还是A了
#define N 510 map<int,int>t; int n,m,ap ,h ,pr ,p ,ax,_ ; int get(int x,int y) { if(!ap[x][y]||p[x][y]) return 0; p[x][y]=1; return get(x+1,y-1)+get(x+1,y)+get(x+1,y+1)+get(x,y-1)+get(x,y+1)+get(x-1,y-1)+get(x-1,y)+get(x-1,y+1)+h[x][y]; } void print(int x,int y,int k) { if(!ap[x][y]||pr[x][y]) return; pr[x][y]=k; print(x+1,y+1,k); print(x+1,y,k); print(x+1,y-1,k); print(x,y+1,k); print(x,y-1,k); print(x-1,y+1,k); print(x-1,y,k); print(x-1,y-1,k); } int main() { m=read(); n=read(); fr(i,1,n) { char c=getchar(); while(c<'0'||c>'1') c=getchar(); fr(j,1,m) { ap[i][j]=c-48; c=getchar(); } } fr(i,1,n) fr(j,1,m) h[i][j]=(ap[i-1][j]+ap[i+1][j]+ap[i][j-1]+ap[i][j+1]+1)*(ap[i-1][j-1]+ap[i-1][j+1]+ap[i+1][j-1]+ap[i+1][j+1]+5); fr(i,1,n) fr(j,1,m) if(ap[i][j]&&(!pr[i][j])&&(!p[i][j])) { int k=get(i,j); if(t[k]) k=t[k]; else { t[k]=++ax; k=t[k]; } print(i,j,k+'a'-49); } fr(i,1,n) { fr(j,1,m) putchar(pr[i][j]+48); putchar('\n'); } return 0; }
相关文章推荐
- USACO 5.1 Starry Night
- USACO 5.1 Starry Night(模拟题)
- Starry Night_usaco 5.1_bfs+暴力
- USACO Section 5.1 Starry Night
- USACO 5.1 Starry Night
- 洛谷Luogu-2749 [USACO5.1]夜空繁星Starry Night(DFS+判重) HQG_AC的博客
- USACO Section 5.1 Starry Night - 有点麻烦写的题..
- usaco 5.1 Starry Night(BFS+枚举)
- USACO 5.1 fencing the cows——计算几何/凸包模板
- [USACO5.1]Fencing the Cows
- C++——【USACO 5.1.2】——Starry Night
- 【USACO 5.1.2】Starry Night
- USACO Section 5.1 Fencing the Cows(凸包)
- usaco-5.1-theme-passed
- usaco5.1.2 Starry Night
- USACO Starry Night 解题报告
- USACO 5.1 music theme
- USACO Section 5.1 Musical Themes(枚举)
- [luogu2742]:[USACO5.1]圈奶牛Fencing the Cows
- P2742 [USACO5.1]圈奶牛Fencing the Cows