由于是校内训练赛 就不贴网址啦【贴了你也进不去2333
扫雷是T1嘛 反正就很水
先随机找几个点然后 枚举随机种子S是啥就可以了
然后这道题开启了机房疯狂hack的节奏QAQ
交互的本地测试可以直接把代码贴到grader后面就可以啦/xyx
#include "mine.h"#include#include #include #include #include #define inf 12251225#define ll long long#define mxn 40using namespace std;int vis[mxn][mxn],f[mxn][mxn]; // 9 unvisitedbool ban[mxn][mxn];int xx[8] = {-1,-1,-1,0,0,1,1,1};int yy[8] = {1,0,-1,1,-1,1,0,-1};void sweep(int W, int H, int K){ int times = 0; srand(time(0)); for(int i=0;i <= 10000;S++) { int cnt = 0,tmp = S; memset(ban,0,sizeof(ban)); while(cnt < K) { tmp = (ll)48271 * tmp % 2147483647; int r = (tmp/H)%W, c = tmp%H; if(!ban[r][c]) { ban[r][c] = 1; cnt++; } } int www = 0; for(int x=0;x =W||ty>=H||!ban[tx][ty]) continue; qaq++; } else qaq=-1; if(vis[x][y]!=9&&vis[x][y]!=qaq){www=1;break;} } if(!www) break; } for(int x=0;x
游戏有点神仙
就是我们通过比较前后两次的差来确定哪个是正确的
然后记录一个前缀和就可以减少后半部分的查询次数
然后通过多发爆oj以及按照得分更改查询次数【大雾 就可以阿掉这道题啦
#include#include "guess.h"#include #include #define N 1000using namespace std;std::string ans;int vis[1100][1100];int qry(int l,int r){ if(~vis[l][r]) return vis[l][r]; return vis[l][r] = query(l,r);}int f[2],pre[1100];std::string guess(){ memset(vis,-1,sizeof(vis)); ans = ''; for(int i=0;i<=50;i++) { f[0] = f[1] = 0; int r = N-1; while(abs(f[0] - f[1]) < 3) { int now = qry(i,r), nxt = qry(i+1,r); if(nxt <= now && now-nxt <=1) f[now-nxt] ++; r--; } ans += (f[0]>f[1]?'0':'1'); pre[i+1] = pre[i] + f[1]>f[0]; } for(int i=51;i f[1]?'0':'1'); pre[i+1] = pre[i] + f[1]>f[0]; } return ans;}
mmp为什么没有高亮QAQ