【XR-2】伤痕
不难发现,直接漫无目的地构造不是一个好的选择,因为我们并不知道选择四座城市方案的上界是什么,因此下面可以来先分析一下这个方案的上界。
首先可以考虑这使得这四个点的导出子图是强连通的方案数,但是经过尝试可以发现,合法的情况非常之多,因此我们来考虑不合法的情况。
从简单的情况出发,当导出子图中不存在无向边时:
- 导出子图不强联通当且仅当存在一个点在导出子图中出度或入度为 \(3\)。
这种情况下不强联通是显然的,下面来证明其他情况都是强连通的。
不难发现当这张图如果存在三个点强连通时,因为另一个点不可能全连出边或入边,因此这四个点必然四强联通。
接下来证明不存在不出现三个点强连通的情况:
首先随便选取一个点,找到它连向的点和连向它的点分别记作 \(A, B\),那么此时如果是 \(A \rightarrow B\) 则已经产生了三元环,所以只能从 \(B \rightarrow A\),此时 \(B\) 出度已经为 \(2\) 那么只能选择让另一个点连向 \(B\) ……
接下来通过这种必然性最终可以推出必然存在三个点强连通。
再来考虑存在无向图的情况:
同理,存在一个点在导出子图中出度或入度(有向边)为 \(3\) 时一定不强连通。
当只存在一条无向边时,也必然能形成三联通。
当存在两条无向边且在端点处相交时,已经形成了三联通。
当存在两条边且不在端点处相交时,不难发现也易证得当且仅当所有有向边都从一边指向另一边时不强连通。
当存在三条或三条以上的无向边时,已经形成了三联通/四联通。
因此,最终可以归纳得唯一不合法的两种情况:
存在一个点连出去或被连入三条有向边。
存在两条无向边边且不在端点处相交时,所有有向边都从一边指向另一边。
可以发现的是,当点多以后第一种情况是避免不了的,因为总是存在一个点向外连出多条边。
那么可以来分析一下第一种情况方案数的下界,令每个点连出去的边数量为 \(A_i\)。
可知 \(\sum\limits_{i = 1} ^ n A_i = \frac{n(n - 1)}{2} - n = \frac{n(n - 3)}{2}\)
那么一个点连出去三条边的不合法方案应为:\(\sum\limits_{i = 1} ^ n \dbinom{A_i}{3}\)
因为 \(\dbinom{x}{3} = \frac{x(x - 1)(x - 2)}{3}\) 在 \([3, + \infty)\) 上是凸函数,因此可知:
\]
等号成立当且仅当 \(A_i = \frac{n - 3}{2}\)。
接下去貌似没法继续求得第二种情况方案数的下界了,可以考虑返回原问题尝试着构造一番。
因为每个点的对称性,所以我们分配无向边的时候最简单的方法就是让每个点分配得度数一样:都分配两条无向边与其相连。
不难发现,只需要将这个点连向正多边形中距离其最远的两个点即可。
接下来,每个点恰好剩下了 \(\frac{n - 3}{2}\) 个入度。
那么此时可以发现,因为必然存在入度为 \(3\) 的点,所以不合法情况 \(1.2\) 会必然存在。
但是,我们可以让入度为 \(3\) 的点和出度为三的点尽可能出现在一起就可以减少不合法的情况。
也就是当三个点 \(A, B, C\) 连向同一个点 \(D\) 时,存在一个点不妨假设为 \(A\),满足 \(A \rightarrow B, A \rightarrow C\)。
通过尝试不难发现可以让每个点连向右边距离其 \(1 \sim \frac{n - 3}{2} - 1\) 的所有点,即可满足所有 \(1.1, 1.2\) 的不合法状态重合。
此时回过头来又可以发现,对于任意一组不在端点相交的无向边都必然不会存在 \(2\) 的不合法情况。
因此,此时合法的方案数达到了上界 \(\dbinom{n}{4} - n \times \dbinom{\frac{n - 3}{2}}{3}\),复杂度 \(O(n ^ 2)\)。
#include <bits/stdc++.h>
using namespace std;
#define rep(i, l, r) for (int i = l; i <= r; ++i)
const int N = 1e2 + 5;
int n, ans, a[N][N];
int read() {
char c; int x = 0, f = 1;
c = getchar();
while (c > '9' || c < '0') { if(c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int Tr(int x, int d) { return (x + d) % n == 0 ? n : (x + d) % n;}
int main() {
n = read();
if(n >= 4) {
ans = n * (n - 1) * (n - 2) * (n - 3) / 24;
int k = (n - 3) / 2;
if(k >= 3) ans -= n * k * (k - 1) * (k - 2) / 6;
}
if(n == 1) puts("0"), puts("0");
else {
printf("%d\n", ans);
rep(i, 1, n) a[i][Tr(i, n / 2)] = a[i][Tr(i, n / 2 + 1)] = 1;
rep(i, 1, n) rep(j, 1, n / 2 - 1) a[i][Tr(i, j)] = 1;
rep(i, 1, n) {
rep(j, 1, n) printf("%d ", a[i][j]);
puts("");
}
}
return 0;
}
当需要构造某种方案达到极值时,往往先分析极值的界限在基于这个界限进行构造。
同时,在构造时一定要抱有目的,按需构造。
【XR-2】伤痕的更多相关文章
- XD, XR, DR 股票
股权登记日与除权除息日 所以,如果投资者想得到一家上市公司的分红.配股权,就必须弄清这家公司的股权登记日在哪一天,否则就会失去分红.配股的机会. 股权登记日后的第一天就是除权日或除息日,这一天或以后购 ...
- iOS屏幕适配 支持新手机 iPhone XR iPhone XS 超简单
随着苹果爸爸发布了 超牛叉的iPhone iPhone X .iPhone XR.iPhone XS .iPhone XS Max.开发者的适配工作要开始了. 停,
- js判断iPhone XS、iPhone XS Max、iPhone XR
// iPhone X.iPhone XS && window.screen.width === && window.screen.height === ; // iP ...
- xr报表调整
xr报表调整,此乃为软件应用层调整,非后端数据库调整. 主单付款方式为AR支票300元 应收账务AR支票预付款 3000元录入调整 -300 AR支票付款录入收入 300 现金付款核销掉,报表现金多出 ...
- IOS开发之--iPhone XR,iPhone XS Max适配
因为iPhone X和iPhone XS的尺寸比是一样的,只需要把这两张图片补上就行. 具体原理性的东西就多说了,因为iPhoneX系列都一样,本文只说明一下具体怎么做,要适配屏幕,首先得让他以正确的 ...
- 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。
在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个"XL ...
- css判断iphoneX、iphoneXs、iphoneXs Max、iphone XR
//iphoneX.iphoneXs @media only screen and (device-width: 375px) and (device-height: 812px) and (-web ...
- 苹果XR手机的音频体验测试总结
苹果XR手机的音频 苹果XR算是苹果手机历史上一个里程碑的型号了,是苹果憋了两年的大招,连苹果9的称号就不要了.直接是X.说明苹果对它给予的希望很大.作为一个音频算法工程师,一直想体验一下XR的音 ...
- 剖析虚幻渲染体系(15)- XR专题
目录 15.1 本篇概述 15.1.1 本篇内容 15.1.2 XR概念 15.1.2.1 VR 15.1.2.2 AR 15.1.2.3 MR 15.1.2.4 XR 15.1.3 XR综述 15. ...
- iOS 获取蜂窝网络信号强度 包含iPhoneX XS XR XSMASX (最新)
1.虽然各种直接获取信号强度的api都被封杀了.但是还有一个另类的黑魔法可以获取到.那就是遍历UIStatusBar了 网络上有的文章写的会崩溃 比如: - (int)getSignalStrengt ...
随机推荐
- Deep Linear Networks with Arbitrary Loss: All Local Minima Are Global
目录 问题 假设和重要结果 证明 注 Laurent T, Von Brecht J H. Deep linear networks with arbitrary loss: All local mi ...
- 【MySQL作业】sum、max 和 min 聚合函数——美和易思聚合函数应用习题
点击打开所使用到的数据库>>> 1.统计商品最高单价和最低单价. -- 获取所有商品的最高单价和最低单价: select max(unitPrice) 最高单价 , min(unit ...
- 为什么要避免在 Go 中使用 ioutil.ReadAll?
原文链接: 为什么要避免在 Go 中使用 ioutil.ReadAll? ioutil.ReadAll 主要的作用是从一个 io.Reader 中读取所有数据,直到结尾. 在 GitHub 上搜索 i ...
- CSS基础-3 文字知识
文字知识 一.浏览器文字默认大小为16px; 行高默认大小为18px; 行高 = 文字大小 + 文字上边距 + 文字下边距 或者是 行高 = 两条基线之间的距离 ...
- 图片上传,直接在网页中显示(支持IE,谷歌,火狐浏览器)
<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...
- Go语言系列之time
time包是go语言的内置库,提供了时间的显示和测量用的函数.日历的计算采用的是公历. 一.时间类型 time.Time类型表示时间.我们可以通过time.Now()函数获取当前的时间对象,然后获取时 ...
- vue注册全局组件
在项目开发中能不能自己写一个组件可以像iview或者element那样可以不必引用就可以直接用呢?答案是可以的. 首先,写一个组件mainHeader. 接着在vue中注册这个组件,代码如下: Vue ...
- sqlmap之--os-shell命令执行原理
最近也是在看sqlmap,感觉--os-shell这个命令确实很厉害,但我并不知道它的原理,所以来研究一下 环境 环境就是我本地搭的一个有sql注入漏洞的一个小demo 演示 这是我们的demo环境 ...
- redis的bind误区
对于Redis中bind的正确的理解是:bind:是绑定本机的IP地址,(准确的是:本机的网卡对应的IP地址,每一个网卡都有一个IP地址),而不是redis允许来自其他计算机的IP地址.如果指定了bi ...
- jsp文本框输入限制问题
1.jsp文本窗口实现控制输入格式 <input onkeyup = "value=value.replace(/[\W]/g,'')" onbeforepaste=&quo ...