国科信息学薪火计划模拟赛Round3题解
A. 扫雷
看着无从下手,其实答案就在题目给的信息里面。A[i][j]表示A[i][j]表示A[i][j]表示以(i,j)(i,j)(i,j)为中心的3×33\times33×3格子里面雷的数量
我们只需要合适地枚举出所有块,凑满整个大矩阵,就知道一共有多少个雷了。
这个因为N,MN,MN,M 数据比较随机,所以枚举的时候要讨论一下,从哪里开始枚举,有规律地控制枚举,从而达到快速计算的目的。
#include<bits/stdc++.h>
using namespace std;
int n,m,a[201][201],k[201],l[201],cnt1,cnt2,ans;
int main(){ 参考代码 请不要抄代码 freopen("mine.in","r",stdin);freopen("mine.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];} }if(n%3==0||n%3==2){for(int i=2;i<=n;i+=3){k[++cnt1]=i;}}else if(n%3==1){for(int i=1;i<=n;i+=3){k[++cnt1]=i;}}if(m%3==0||m%3==2){for(int i=2;i<=m;i+=3){l[++cnt2]=i;}}else if(m%3==1){for(int i=1;i<=m;i+=3){l[++cnt2]=i;}}for(int i=1;i<=cnt1;i++){for(int j=1;j<=cnt2;j++){ans+=a[k[i]][l[j]];}}cout<<ans;return 0;
}
B. 打游戏
看着题目描述很罗嗦,看着就很难,其实很简单。一定要耐心读题。
题目就两类,主动被动。直接计算出相互攻击致死要多少轮,作比较就行了。
#include<bits/stdc++.h>
using namespace std;
int N;int main()
{freopen("gaming.in","r",stdin);freopen("gaming.out","w",stdout);int i,j,k;int CD,ATK,HP;scanf("%d",&N);scanf("%d%d%d",&CD,&ATK,&HP);for(i=1;i<=N;i++){int TYPEi,CDi,ATKi,HPi;scanf("%d%d%d%d",&TYPEi,&CDi,&ATKi,&HPi);if(TYPEi){int x=HPi/ATK;if(HPi%ATK) x++;int time=(x-1)*CD;x=time/CDi+1;printf("%d ",x*ATKi>=HP?1:0);}else{int x=HPi/ATK;if(HPi%ATK==0) x--;printf("%d ",x*ATKi>=HP?1:0);}}
}
C. 排列
暴力写法就是枚举区间长度,对于每个区间去sortsortsort一下判断是不是有这么个排列
怎么进一步优化呢?如果存在一段区间长度为MMM并且是MMM的排列,那么数字111到MMM 下标的极差肯定也是M−1M-1M−1,根据这个特点来维护来判断,就可以了。
#include<bits/stdc++.h>
//#define int long long
using namespace std;
inline int read()
{ int t=1,tot=0;char ch=getchar();while (ch<'0'||ch>'9'){ if (ch=='-')t=-1;ch=getchar();}while (ch>='0'&&ch<='9'){ tot=tot*10+ch-'0';ch=getchar();}return tot*t;
}
inline void write(int x)
{if(x<0){x*=-1;putchar('-');}if(x>9) write(x/10);putchar(x%10+'0');
}
int n,a[100005],mx,mi=INT_MAX;
signed main()
{freopen("permutation.in","r",stdin);freopen("permutation.out","w",stdout);n=read();for(int i=1;i<=n;i++) a[read()]=i;for(int i=1;i<=n;i++){mx=max(mx,a[i]),mi=min(mi,a[i]);putchar(mx-mi+1<=i?'1':'0');}return 0;
}
E. 抽鬼牌
感兴趣的同学试试看