不难发现,直接漫无目的地构造不是一个好的选择,因为我们并不知道选择四座城市方案的上界是什么,因此下面可以来先分析一下这个方案的上界。

首先可以考虑这使得这四个点的导出子图是强连通的方案数,但是经过尝试可以发现,合法的情况非常之多,因此我们来考虑不合法的情况。

从简单的情况出发,当导出子图中不存在无向边时:

  • 导出子图不强联通当且仅当存在一个点在导出子图中出度或入度为 \(3\)。

这种情况下不强联通是显然的,下面来证明其他情况都是强连通的。

不难发现当这张图如果存在三个点强连通时,因为另一个点不可能全连出边或入边,因此这四个点必然四强联通。

接下来证明不存在不出现三个点强连通的情况:

首先随便选取一个点,找到它连向的点和连向它的点分别记作 \(A, B\),那么此时如果是 \(A \rightarrow B\) 则已经产生了三元环,所以只能从 \(B \rightarrow A\),此时 \(B\) 出度已经为 \(2\) 那么只能选择让另一个点连向 \(B\) ……

接下来通过这种必然性最终可以推出必然存在三个点强连通。

再来考虑存在无向图的情况:

  • 同理,存在一个点在导出子图中出度或入度(有向边)为 \(3\) 时一定不强连通。

  • 当只存在一条无向边时,也必然能形成三联通。

  • 当存在两条无向边且在端点处相交时,已经形成了三联通。

  • 当存在两条边且不在端点处相交时,不难发现也易证得当且仅当所有有向边都从一边指向另一边时不强连通。

  • 当存在三条或三条以上的无向边时,已经形成了三联通/四联通。

因此,最终可以归纳得唯一不合法的两种情况:

  1. 存在一个点连出去或被连入三条有向边。

  2. 存在两条无向边边且不在端点处相交时,所有有向边都从一边指向另一边。

可以发现的是,当点多以后第一种情况是避免不了的,因为总是存在一个点向外连出多条边。

那么可以来分析一下第一种情况方案数的下界,令每个点连出去的边数量为 \(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)\) 上是凸函数,因此可知:

\[\sum\limits_{i = 1} ^ n \dbinom{A_i}{3} \ge n \times \dbinom{\frac{n - 3}{2}}{3}
\]

等号成立当且仅当 \(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】伤痕的更多相关文章

  1. XD, XR, DR 股票

    股权登记日与除权除息日 所以,如果投资者想得到一家上市公司的分红.配股权,就必须弄清这家公司的股权登记日在哪一天,否则就会失去分红.配股的机会. 股权登记日后的第一天就是除权日或除息日,这一天或以后购 ...

  2. iOS屏幕适配 支持新手机 iPhone XR iPhone XS 超简单

    随着苹果爸爸发布了 超牛叉的iPhone iPhone X .iPhone XR.iPhone XS .iPhone XS Max.开发者的适配工作要开始了. 停,

  3. js判断iPhone XS、iPhone XS Max、iPhone XR

    // iPhone X.iPhone XS && window.screen.width === && window.screen.height === ; // iP ...

  4. xr报表调整

    xr报表调整,此乃为软件应用层调整,非后端数据库调整. 主单付款方式为AR支票300元 应收账务AR支票预付款 3000元录入调整 -300 AR支票付款录入收入 300 现金付款核销掉,报表现金多出 ...

  5. IOS开发之--iPhone XR,iPhone XS Max适配

    因为iPhone X和iPhone XS的尺寸比是一样的,只需要把这两张图片补上就行. 具体原理性的东西就多说了,因为iPhoneX系列都一样,本文只说明一下具体怎么做,要适配屏幕,首先得让他以正确的 ...

  6. 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。

    在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个"XL ...

  7. css判断iphoneX、iphoneXs、iphoneXs Max、iphone XR

    //iphoneX.iphoneXs @media only screen and (device-width: 375px) and (device-height: 812px) and (-web ...

  8. 苹果XR手机的音频体验测试总结

    苹果XR手机的音频   苹果XR算是苹果手机历史上一个里程碑的型号了,是苹果憋了两年的大招,连苹果9的称号就不要了.直接是X.说明苹果对它给予的希望很大.作为一个音频算法工程师,一直想体验一下XR的音 ...

  9. 剖析虚幻渲染体系(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. ...

  10. iOS 获取蜂窝网络信号强度 包含iPhoneX XS XR XSMASX (最新)

    1.虽然各种直接获取信号强度的api都被封杀了.但是还有一个另类的黑魔法可以获取到.那就是遍历UIStatusBar了 网络上有的文章写的会崩溃 比如: - (int)getSignalStrengt ...

随机推荐

  1. Windows11实现录屏直播,H5页面直播 HLS ,不依赖Flash

    这两天的一个小需求,需要实现桌面实时直播,前面讲了两种方式: 1.Windows 11实现录屏直播,搭建Nginx的rtmp服务 的方式需要依赖与Flash插件,使用场景有限 2.Windows 11 ...

  2. Codeforces Gym-100985C: MaratonIME plays Nim(交互题&博弈)

    C. MaratonIME plays Nim time limit per test : 2.0 smemory limit per test : 64 MBinputstandard inputo ...

  3. Adversarial Training with Rectified Rejection

    目录 概 主要内容 rejection 实际使用 代码 Pang T., Zhang H., He D., Dong Y., Su H., Chen W., Zhu J., Liu T. Advers ...

  4. Android 常见对话框的简单使用(提示信息对话框、单选多选对话框、自定义对话框)

    目录 一.提示信息对话框: 二.单选对话框: 三.多选对话框: 四.自定义对话框: 演示项目完整代码: 一.提示信息对话框: //显示提示消息对话框 private void showMsgDialo ...

  5. Java面向对象笔记 • 【第10章 Swing编程初级应用】

    全部章节   >>>> 本章目录 10.1 JFrame窗口容器 10.1.1 Swing介绍 10.1.2 JFrame窗口容器应用 JFrame常用方法 10.1.3 实践 ...

  6. 关于一类容斥原理设计 dp 状态的探讨

    写在前面 为什么要写?因为自己学不明白希望日后能掌握. 大体思路大概是 设计一个容斥的方案,并使其贡献可以便于计算. 得出 dp 状态,然后优化以得出答案. 下列所有类似 \([l,r]\) 这样的都 ...

  7. Redis_设置密码

    一.临时设置密码 # 获取密码 config get requirepass # 设置密码为123456 config set requirepass 123456 # 验证密码.当设置密码后,进入r ...

  8. NIO【同步非阻塞io模型】关于 文件io 的总结

    1.前言 这一篇随笔是写 NIO 关于文件输入输出的总结 /* 总结: 1.io操作包括 socket io ,file io ; 2.在nio模型,file io使用fileChannel 管道 , ...

  9. Servlet初级学习加入数据库操作(一)

    需要的源代码地址: https://url56.ctfile.com/f/34653256-527822631-2e255a(访问密码:7567) 将页面中的数据逐步替换为数据库管理 准备一个连接数据 ...

  10. vue3.0+vite+ts项目搭建--vite.config.ts配置(三)

    vite.config.ts配置 配置路径处理模块 安装ts的类型声明文件 yarn add @types/node -D 通过配置alias来定义路径的别名 resolve: { alias: { ...