又是道原题... (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;
}

codechef: ADAROKS2 ,Ada Rooks 2的更多相关文章

  1. Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs

    题意 定义 $F_n$ 为 $$F_n = \left\{\begin{matrix}0, n=0\\ 1, n=1 \\F_{n-1} + F_{n-2}, n > 1\end{matrix} ...

  2. Codechef:Fibonacci Number/FN(二次剩余+bsgs)

    题面 传送门 前置芝士 \(bsgs\),\(Cipolla\) 题解 因为题目保证\(p\bmod 10\)是完全平方数,也就是说\(p\bmod 5\)等于\(1\)或\(-1\),即\(5\)是 ...

  3. codechef: BINARY, Binary Movements

    非常有毛病的一道题,我一个一个读字符死活过不去,改成整行整行读就 A 了... 做法就是...最小点覆盖... 我们发现可以把一个点向上跳看做被吃掉了,然后最顶层的点是无法向上跳所以不能被吃掉,然后被 ...

  4. MongoDB学习笔记五:聚合

    『count』count是最简单的聚合工具,返回集合中的文档数量:> db.foo.count()0> db.foo.insert({"x" : 1})> db. ...

  5. python学习:修改字符串大小写

    修改字符串大小写 函数:title()字符串首字母大写,upper()字符串全部大写,lower()字符串全部小写. 代码举例: name = "ada lovelace"prin ...

  6. Python的进阶:copy与deepcopy区别

    copy()与deepcopy()之间的区分必须要涉及到python对于数据的存储方式. 首先直接上结论: —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以 ...

  7. uva11134 - Fabled Rooks(问题分解,贪心法)

    这道题非常好,不仅用到了把复杂问题分解为若干个熟悉的简单问题的方法,更是考察了对贪心法的理解和运用是否到位. 首先,如果直接在二维的棋盘上考虑怎么放不好弄,那么注意到x和y无关(因为两个车完全可以在同 ...

  8. 【题解】ADAGRAFT - Ada and Graft [SP33331]

    [题解]ADAGRAFT - Ada and Graft [SP33331] 传送门:\(\text{Ada and Graft}\) \(\text{[SP33331]}\) [题目描述] 给出一颗 ...

  9. [转]SIP穿越NAT&FireWall解决方案

    原文链接(也是转载)http://blog.csdn.net/yetyongjin/article/details/6881491.我修改了部分错字.   SIP从私网到公网会遇到什么样的问题呢? 1 ...

随机推荐

  1. [luoguP2617] Dynamic Ranking(树状数组 套 主席树 + 离散化)

    传送门 BZOJ上是权限题,洛谷赞啊. 求区间 K 大数很简单. 但是如果修改某个数的话,那么就得把这个数及后面所建的主席树都更新一遍 nlogn,显然不行. 所以可以在外面套一个树状数组来优化,树状 ...

  2. ACM组队安排-——杭电校赛(递推)

    #include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #in ...

  3. 何为幻读?MySQL又是如何解决幻读的?

    一.什么是幻读 在一次事务里面,多次查询之后,查询的结果集的个数不一致的情况叫做幻读.而多出来或者少的哪一行被叫做 幻行 二.为什么要解决幻读 在高并发数据库系统中,需要保证事务与事务之间的隔离性,还 ...

  4. Servlet中操作数据库

    以下内容引用自http://wiki.jikexueyuan.com/project/servlet/database-access.html: 前提先新建数据库及插入模拟数据: create tab ...

  5. Oracle建表提示SQL 错误: ORA-00904: : 标识符无效

    Oracle建表提示: 错误报告:SQL 错误: ORA-00904: : 标识符无效00904. 00000 -  "%s: invalid identifier"*Cause: ...

  6. Mysql的timestamp类型,自动记录数据的更新时间

    datetime也可以设置自动更新的

  7. 搭建wamp php环境

    点击下载wamp,wamp是一个集成环境,在安装过程中,我们要选择默认的浏览器以及默认的文本编辑器,安装步骤如下: 第一步,选择默认的浏览器(填写默认的浏览器可执行路径就行) 第二步,选择默认的文本编 ...

  8. Mybatis的配置文件和映射文件具体解释

    一.Mybatis的全局配置文件 1.SqlMapConfig.xml是mybatis的全局配置文件.配置内容例如以下: properties(属性) settings(全局配置參数) typeAli ...

  9. 开源 免费 java CMS - FreeCMS2.1 会员3.9我的收藏

    项目地址:http://www.freeteam.cn/ 我的收藏 从左側管理菜单点击我的收藏进入.在这里能够查看当前登录会员的全部收藏记录. 查看收藏 点击标题能够查看收藏内容. 删除收藏 选择收藏 ...

  10. 在弱网传输的情况下,是怎么做到节约流量的(面试小问题,Android篇)

    立即毕业了,在毕业之际.我辞掉了曾经的实习工作,主要是工作内容不太感兴趣.近期在找工作.主要是找Java和Android方面的工作.自以为学得不错.可是面试屡屡受挫. 先提一下问到的一些问题吧. 第一 ...