又是道原题... (HDU 6313 Hack It , 多校 ACM 里面的题)

题目说构造一个 n * n 矩阵,染色点不得构成矩形...然后染色点个数至少 8 * n

然后我们生成一个数 m ,把矩阵分成 m * m 块 ,每块每行都至少要有 1 个 1 ,具体构造看代码:

	fp(i,0,m-1) fp(j,0,m-1) fp(k,0,m-1)
s[m*i+j][m*k+(j*k+i)%m]=1;

证明的话要用循环加群...具体证明可以康这里

总的来说就是抄 hdu ACM 上那题的代码就好了(玄学的构造法),要注意的就是 m 取值要是个质数,并且数字要足够大,所以要先筛出 1~100 的 质数就是了(我居然在质数上调了这么久)

//by Judge
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#define Rg register
#define fp(i,a,b) for(Rg int i=(a),I=(b)+1;i<I;++i)
using namespace std;
const int M=1003;
typedef int arr[M];
#ifndef Judge
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
char buf[1<<21],*p1=buf,*p2=buf;
inline int read(){ int x=0,f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f;
} char sr[1<<21],z[20];int C=-1,Z;
inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;}
int n,m,s[M][M];
inline void check(int n){ Rg int num=0;
fp(i,1,n) fp(j,1,n) num+=s[i][j];
if(num<n*8) return puts("Error"),void();
fp(r1,1,n) fp(r2,r1+1,n)
fp(c1,1,n) fp(c2,c1+1,n)
if(s[r1][c1]&&s[r2][c1]&&s[r1][c2]&&s[r2][c2])
return printf("%d , %d -> %d , %d\n",r1,c1,r2,c2),void();
puts("win");
}
int cnt; arr p,vis;
inline void prep(Rg int n){ vis[1]=1;
fp(i,2,n){ if(!vis[i]) p[++cnt]=i;
for(Rg int j=1;j<=cnt&&p[j]*i<=n;++j){
vis[i*p[j]]=1; if(!(i%p[j])) break;
}
}
}
int main(){ prep(100);
fp(stp,1,read()){ n=read(),m=sqrt(n);
while(vis[m]) ++m;
fp(i,0,n-1) fp(j,0,n-1) s[i][j]=0;
fp(i,0,m-1) fp(j,0,m-1) fp(k,0,m-1)
s[m*i+j][m*k+(j*k+i)%m]=1;
fp(i,0,n-1){
fp(j,0,n-1) sr[++C]=s[i][j]?'O':'.';
sr[++C]='\n';
if(C>1<<20) Ot();
}
} return Ot(),0;
}

最新文章

  1. svn检出的时候报 Unable to connect to a repository at URL错误(摘自CSDN)
  2. jQuery属性/CSS使用例子
  3. AT Tool --- android手机发送at指令
  4. 如何取消MSSQL自带智能提示步骤,使用第三方智能提示插件
  5. nohup后台运行jar
  6. 关于java多线程
  7. Mysql新建表,插入中文时报错“Incorrect string value: &#39;\xE4\xBD\xA0\xE5\xA5\xBD&#39; for column”问题
  8. LCT模板
  9. Google Android SDK开发范例------------20141119
  10. Java 流的概述及操作(转)
  11. [Python] heapq简介
  12. nodeJs express mongodb 建站(mac 版)
  13. 剑指offer(22)从上往下打印二叉树
  14. codeforces587a//Duff and Weight Lifting// Codeforces Round #326 (Div. 1)
  15. 小程序中this和that用法
  16. javascript奇技淫巧之位运算符
  17. 精伦盒子H1,插上USB,找不到对应的文件路径
  18. SpringBoot 之Quartz的使用
  19. 利用谷歌插件破解今日头条的新闻ajax参数加密,新手都能懂
  20. 使用OpenCV进行标定(转载)

热门文章

  1. Python模块:shutil、序列化(json&amp;pickle&amp;shelve)、xml
  2. Discuz! X2.5数据库字典【转载】
  3. HTML5学习之语义化标签
  4. Servlet开发(1)
  5. Add Two Numbers(链表)
  6. HashMap的工作原理以及代码实现,为什么要转换成红黑树?
  7. NOIP 2010 乌龟棋
  8. Java正则表达式过滤出字母、数字和中文
  9. [Maid] Write Tasks in Markdown with Maid
  10. Project Perfect让Swift在server端跑起来-Perfect in Visual Studio Code (四)