zzulioj 小火山专题
来源:互联网 发布:网络销售适合什么人做 编辑:程序博客网 时间:2024/04/27 20:11
1908: 小火山的围棋梦想
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 307 Solved: 80
SubmitStatusWeb Board
Description
小火山最近喜欢上了围棋。
对于围棋,其实小火山是一窍不通的。现在棋盘上,有很多小火山的棋子。 如果棋盘上有这样的一个位置, 那么这个位置也会变成小火山
的棋子;这样的位置是指小火山的棋子将该位置围起来。
现在,小火山想知道实际棋盘是什么样子的。 你快来帮帮他吧!
Input
输入第一行是一个整数T(T <= 30), 表示一共有T组数据。
每组数据,第一行为两个整数n, m(1 <= n, m <= 25), 随后一个n*m的矩阵代表棋盘,其中"."是代表没放棋子的位置, "*"代表小火山的棋子。
Output
对于每组数据输出一个n*m的棋盘, 代表实际的棋盘。
Sample Input
2
3 3
***
*.*
***
4 4
.*..
*.*.
*.*.
.*..
Sample Output
Case 1:
***
***
***
Case 2:
.*..
***.
***.
.*..
HINT
Source
zzuli
ps:dfs搜索.
#include<stdio.h>#include<string.h>int dir[4][4]={{1,0},{0,1},{0,-1},{-1,0}},vis[100][100];char a[110][110];int m,n,flag=0;void dfs(int x,int y){ int xx,yy; for(int i=0;i<4;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; if(a[xx][yy]=='*'||vis[xx][yy]) continue; if(xx<1||xx>=m-1||yy<1||yy>=n-1) { flag=0;//出界还没遇到*说明没被包围,记录flag=0,去除标记 return ; } vis[xx][yy]=1;//标记查过的四个方向,防止重复查询 dfs(xx,yy);//向外搜索,直到找到包围的* if(!flag)//可以优化,减小时间复杂度 return ; }}int main(){ int t,z=0,i,j; scanf("%d",&t); while(t--) { z++; scanf("%d%d",&m,&n); for(i=0; i<m; i++) {scanf("%s",a[i]); } printf("Case %d:\n",z); for(i=1; i<m-1; i++) {for(j=1; j<n-1; j++) { if(a[i][j]=='.') { flag=1; memset(vis,0,sizeof(vis));//每次清零,使查过的可以继续查询 dfs(i,j); if(flag)//标记成功的把.改为* a[i][j]='*'; } } } for(i=0;i<m;i++) { printf("%s\n",a[i]); } }}
1905: 小火山的跳子游戏
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 460 Solved: 105
SubmitStatusWeb Board
Description
小火山和火山火山在一块玩跳子游戏。规则如下:
1:跳子的起始位置为0,棋盘大小从1到N
2:每次跳子跳k步。 例如当前位置为i, 那么下一步为i + k
3:跳子过程中,碰到1或N则往回跳。例如当前位置为4, N = 6, K = 5的
时候, 那么下次跳子, 应该是 5, 6, 5 ,4, 3。最后落在3的位置, 再一次
跳子为2 1 2 3 4。最后落在4的位置;
现在小火山想知道经过任意次跳子最后能否将这个棋盘上的每个数字都走过。
Input
输入第一行是一个整数T(T <= 20000), 表示一共有T组数据。
每一组数据都有两个整数N, K(1 <= K ,N <= 5000)
Output
对于每组数据,如果可以将这个棋盘上的每个数字都走过则输出"Yes", 否则输出"No"
Sample Input
26 42 1
Sample Output
NoYes
HINT
Source
zzuli
#include<stdio.h>int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}int main(){ int t,n,m; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); int k=gcd((n-1),m); if(k==1&&m%2!=0)//若m,n互质且m为奇数输出yes; printf("Yes\n"); else printf("No\n"); }}
1913: 小火山的计算能力
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 481 Solved: 125
SubmitStatusWeb Board
Description
别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。
Input
首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。
Output
输出运算结果。
Sample Input
21+12+1-1
Sample Output
22
HINT
Source
zzuli
#include<stdio.h>#include<string.h>char a[120];int main(){ int t,f=2; long long sum; scanf("%d",&t); while(t--) { scanf("%s",a); int l=strlen(a); a[l]='='; long long num=0; sum=0; f=2; for(int i=0;i<=l;i++) { if(a[i]>='0'&&a[i]<='9'&&f==2) {sum=sum*10+(a[i]-'0'); } if(a[i]>='0'&&a[i]<='9'&&f==1) { sum=sum*10-(a[i]-'0'); } if(a[i+1]=='+'||a[i+1]=='-'||a[i+1]=='=') num+=sum; if(a[i]=='-') {f=1; sum=0; } if(a[i]=='+') {f=2; sum=0; } } printf("%lld\n",num); }}
0 0
- zzulioj 小火山专题
- 【zzulioj 1913 小火山的计算能力】
- zzulioj 1913: 小火山的计算能力
- ZZULIOJ 1913: 小火山的计算能力
- zzulioj -- 小火山的跳子游戏
- 小火山的围棋梦想ZZULIOJ
- zzulioj 1913 小火山的计算能力
- zzulioj -- 1908 小火山的围棋梦想
- 【zzulioj 1908 小火山的围棋梦想】
- 【zzulioj 1907 小火山的宝藏收益 】
- zzulioj 1912: 小火山的爱情密码
- zzulioj-1904-小火山的股票交易【DP】
- 【zzulioj 1912 小火山的爱情密码】
- 【zzulioj 1904: 小火山的股票交易】
- 【zzulioj 1909: 小火山的友情距离】
- zzulioj 多校训练2(小火山专场)
- ZZULIOJ 1905: 小火山的跳子游戏
- ZZULIOJ (1913: 小火山的计算能力)
- spark神图
- ionic开发中遇到的坑
- MongoDB for Java
- Bootstrap之轮播 carousel
- zzulioj 1913 小火山的计算能力
- zzulioj 小火山专题
- redis扩展下载
- JavaEE程序猿之面向过程还是面向对象
- windows7 64位 svn出现javahl jni not available
- HDU-1257 最少拦截系统(LIS)
- 加速Android Studio的Gradle构建速度
- 大数据系列修炼-Scala课程10
- Eclipse 安装反编译插件jadclipse
- 说说base64位编码。