http://acm.hdu.edu.cn/showproblem.php?pid=5100

在比赛时没看懂题就没看,结束之后,看了解题报告才知道怎么做。

解题报告:

首先,若n<k,则棋盘连一个1×k的矩形都放不下,输出0。
我们只需要考虑n≥k的情况。将棋盘类似于黑白染色,按(i+j)模k划分等价类,给每个格子标一个号。
标号之后,会注意到每条从左下到右上的斜线数字都是相同的,那么对于s×s的格子,其内部数字有且恰好有2s−1种,所以当s<=k2的时候,内部数字有floor(k2)∗2−1<k种,所以不能有更佳的方案。
从而证明最优的方案一定是仅剩下一个s×s的正方形区域没有被覆盖到,其中s≤k2。
而令l=n mod k之后,根据l大小的不同,可以构造出中心为l×l或(k−l)×(k−l)的风车形图案,又通过上面证明这个l(或k−l)就是之前的s,所以是最优的。
所以令l=n mod k,如果l≤k2,最多可覆盖的格子数即为n2−l2,否则为n2−(k−l)2,显然这样的方案是可以构造出来的(风车形)。 这个题的一个论文:http://www.matrix67.com/blog/archives/5900
 #include<stdio.h>

 int main()
{
int t,n,k;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d%d",&n,&k);
if(n<k)
{
printf("0\n");
}
else
{
int x=n%k;
if(x<=k/)
{
printf("%d\n",n*n-x*x);
}
else
{
printf("%d\n",n*n-(k-x)*(k-x));
}
}
}
}
return ;
}
 

hdu 5100 Chessboard的更多相关文章

  1. HDU 5100 Chessboard 用 k &#215; 1 的矩形覆盖 n &#215; n 的正方形棋盘

    pid=5100">点击打开链接 Chessboard Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  2. URAL —— 1255 & HDU 5100——Chessboard ——————【数学规律】

    用 k × 1 的矩形覆盖 n × n 的正方形棋盘 用 k × 1 的小矩形覆盖一个 n × n 的正方形棋盘,往往不能实现完全覆盖(比如,有时候 n × n 甚至根本就不是 k 的整倍数). 解题 ...

  3. hdu 5100 Chessboard (额,,,,,就叫它趣味数学题吧)

    题意: 用K*1的砖块去覆盖N*N的大矩形,问最多能覆盖多少块. 详细证明:(转载自matrix67) Matrix67: The Aha Moments 趣题:用 k × 1 的矩形覆盖 n × n ...

  4. HDU 2414 Chessboard Dance (力模拟)

    主题链接:HDU 2414 Chessboard Dance 意甲冠军:鉴于地图,>,<,^,v的方向,字母相当于是箱子,箱子能够推出边界.人保证不会做出边界.以下输入指令,依照指令走,输 ...

  5. BestCoder17 1001.Chessboard(hdu 5100) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5100 题目意思:有一个 n * n 的棋盘,需要用 k * 1 的瓷砖去覆盖,问最大覆盖面积是多少. ...

  6. hdu 5100 n*n棋盘放k*1长方条最多覆盖面积

    http://acm.hdu.edu.cn/showproblem.php?pid=5100 给一个n*n的棋盘,问用k*1的长方条最多能覆盖多大的面积(k个单位都必须完全覆盖上去) 首先,若n< ...

  7. HDU 5100

    http://acm.hdu.edu.cn/showproblem.php?pid=5100 用1*k方格覆盖n*n方格 有趣的一道题,查了下发现m67的博客还说过这个问题 其实就是两种摆法取个最大值 ...

  8. POJ 3344 &amp; HDU 2414 Chessboard Dance(模拟)

    题目链接: PKU:http://poj.org/problem? id=3344 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2414 Descrip ...

  9. HDU 1838 Chessboard

    dp[i][j]表示以(i,j)为右下角所含棋盘的最大规模, 如果 s[i][j] == s[i-1][j-1] && s[i][j] != s[i-1][j] && ...

随机推荐

  1. windows7实用快捷键 分类: windows常用小技巧 2014-04-18 14:34 169人阅读 评论(0) 收藏

    几个比较实用的快捷键 windows键:简写成win win+   方向键上下,可以使当前窗体放大或缩小 win+   方向键左右,可以使当前窗体悬靠在左边或右边 win+Home   仅保留当前窗体 ...

  2. 如何把textfield或者textview中长按出现的(全选,复制,粘贴)显示成中文

    ios在配置文件info.plist 中添加Localiztion native development region (本地化设置) 设置为 china

  3. poj--1579--(DFS+记忆化搜索之经典)

    记忆化搜索   记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用 动态规划的那种思想和模式作一些保存. 一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态. 更重要的是搜索还可以 ...

  4. QT程序库

      实际上,QT不仅仅是一个巨大的程序库,而是7个程序库,还包括许多使用工具,qmake是其中的一个.如今,术语GUI工具包代表的东西的用途不再仅仅是系统提供的那么一个小部分(GUI界面).尤其是QT ...

  5. U盘启动安装CentOS 6.3

    无光驱U盘启动安装CentOS 6.3的一些必要条件: 1.主板要支持U盘启动 2.8G的U盘 3.UltraISO软件 http://www.linuxidc.com/Linux/2010-03/2 ...

  6. okhttp 常用使用方式 封装 演示

    工具介绍 使用: AndroidStudio:[compile 'com.squareup.okhttp3:okhttp:3.4.2']和[compile 'com.zhy:okhttputils:2 ...

  7. ASP.NET-FineUI开发实践-13(一)

    开原版好像是没有gird树,有一个扩展列下的模拟树列,就是不能展开,专业版有,开原版我弄了弄,思路是有,就是不是很好实现.这篇博客直接写出了(一)说明一个肯定是写不完的. FineUI重在封装,改这个 ...

  8. <c:if>判断参数是否同时为空

    <c:if test="${empty str}">  str为空</c:if> <c:if test="${not empty str}& ...

  9. 条件注释判断浏览器版本<!--[if lt IE 9]>(转载)

    <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> <!--[if IE]> 所有的IE可识别 <![ ...

  10. cxf WebService整理 (基于注解)

    http://blog.csdn.net/zjw10wei321/article/details/39889823