P5562 [Celeste-B]Center of the Earth 题解
构造
因为题目只要求两位相同,所以可以暴力枚举这两位所有的可能性,方案数为\(O(n^2)\)。
但是,这么做是显然不优的,因为完全没有用到第三位。
观察题目条件:n为偶数。
就想一想能不能奇数偶数分开来做呢?
注意到一共有三位,总共放到奇偶两个抽屉中,必有一个抽屉有两个位,即存在两位同奇偶。
我们就想办法枚举到这两位同奇偶的数对。
一个有序三元组\((a,b,c)\)可以覆盖三个有序的二元组\((a,b,?),(?,b,c),(a,?,c)\)
这样的有序二元组取值为\([1,n]\)时共有\(3n^2\)
由于我们分奇偶讨论,所以每种有\(\frac{3}{4}n^2\)个,总计\(\frac{3}{2}n^2\)个
如果两两不相同,那么一次性可以排除三个,总共需要排除\(\frac{n^2}{2}\)次。
可以很容易构造出两两不同的方案,详情见代码。
此时我们感觉答案已经很优了。
证明
设你使用了猜了\(t\)个答案
所有答案为\((a_i,b_i,c_i)\)这样的三元组
按照\(a_i\)划分为\(n\)个集合\(S_i\),\(S_i\)中每个三元组的\(a\)等于\(i\)
设\(s_i=|S_i|\)
显然这些答案要求覆盖所有的\(n^3\)个三元组
一个答案\((a,b,c)\)可以覆盖所有形如\((a,b,?),(?,b,c),(a,?,c)\)的三元组,不难发现有\(3n-2\)个
考察每个集合内部重复覆盖的三元组
如:
\((a,b,c)\)和\((a,d,e)\)共同覆盖了\((a,b,e),(a,d,c)\)两个三元组
\((a,b,c)\)和\((d,b,e)\)共同覆盖了\((d,b,c),(a,b,e)\)两个三元组
\((a,b,c)\)和\((a,b,d)\)共同覆盖了\((a,b,?)\)共\(n\)个三元组(只考虑\(n\ge4\)的情况)
所以同一集合内的两个三元组至少重复覆盖了2个三元组
按\(a\)和按\(b\)分类算两次并不会使答案变得比实际更小。(只有前两项相同的三元组才会重复减去,而需要减去的\(n\ge2+2\),所以不会重复)
发现:
\]
所以总共覆盖的三元组至多有
\]
这样就可以解出来\(t\ge\frac{n^2}{2}\)了
代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
int main(){
scanf("%d",&n);
k=n/2;
printf("%lld\n",1ll*n*n/2);
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
printf("%d %d %d\n",2*i-1,2*j-1,2*((j+i)%k+1)-1);
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
printf("%d %d %d\n",2*i,2*j,2*((i+j)%k+1));
}
P5562 [Celeste-B]Center of the Earth 题解的更多相关文章
- 五、Pandas玩转数据
Series的简单运算 import numpy as np import pandas as pd s1=pd.Series([1,2,3],index=['A','B','C']) print(s ...
- [转]DCM Tutorial – An Introduction to Orientation Kinematics
原地址http://www.starlino.com/dcm_tutorial.html Introduction This article is a continuation of my IMU G ...
- 算法教程(3)zz
First off, we can use our Line-Point Distance code to test for the "BOUNDARY" case. If the ...
- TangoAreaDescriptionMetaData区域描述元数据
TangoAreaDescriptionMetaData com.google.atap.tangoservice Class TangoAreaDescriptionMetaData java.la ...
- POJ 3488 & HDU 1915 Arne Saknussemm(模拟)
题目链接: POJ:http://poj.org/problem? id=3488 HDU:pid=1915">http://acm.hdu.edu.cn/showproblem.ph ...
- UVALive 6124 Hexagon Perplexagon 题解
http://vjudge.net/problem/viewProblem.action?id=37480 East Central Regional Contest Problem C: Hexag ...
- LeetCode OJ 题解
博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...
- Codeforces Gym 100513D D. Data Center 前缀和 排序
D. Data Center Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560/proble ...
- 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...
随机推荐
- 为WCF增加UDP绑定(储备篇)
日前我开发的服装DRP需要用到即时通信方面的技术,比如当下级店铺开出零售单时上级机构能实时收到XX店铺XX时XX分卖出XX款衣服X件之类的信息,当然在上级发货时,店铺里也能收到已经发货的提醒.即时通信 ...
- laravel框架中使用QueryList插件采集数据
laravel框架中使用queryList 采集数据 采集数据对我们来说真家常便饭,那么苦苦的写正则采集那么一点点东西,花费了自己大把的时间和精力而且没有一点技术含量,这个时候就是使用我们的好搭档Qu ...
- 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台
项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...
- C++ const修饰不同类型的用法
const取自constant的缩写,本意是不变的,不易改变的意思 一.修饰普通变量 const int a = 7; int b = a; //正确 a = 8; ...
- 解决编译GCC内存不足的错误
近期在使用阿里和腾讯的云服务器,由于只是测试用所以只租用了廉价512的内存,在编译gcc时遇到错误,表面上看只是编译错误,并且原因不明,纠结了几次之后猜测应该是由于系统资源不足导致的,所以尝试增加系统 ...
- Python学习day09 - Python进阶(3)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- 玩转大数据系列之Apache Pig如何与Apache Solr集成(二)
散仙,在上篇文章中介绍了,如何使用Apache Pig与Lucene集成,还不知道的道友们,可以先看下上篇,熟悉下具体的流程. 在与Lucene集成过程中,我们发现最终还要把生成的Lucene索引,拷 ...
- VC:不支持尝试执行的操作
问题描述: 基于CDialogEx的对话框工程.VS2010开发环境. 调试运行到OnInitDialog()的CDialogEx::OnInitDialog()方法的时候弹出提示窗口"不支 ...
- linux命令行实用快捷键
打开一个命令行窗口:ctrl+alt+t 在已有的命令行窗口上开启一个新的tab:ctrl+shift+t
- MySql存储过程批量删除多个数据库中同名表中的指定字段
1. 创建存储过程batchDeleteField:删除所有名称为"MyDB_"开头的数据库中的指定字段 -- ---------------------------- -- Pr ...