• P5441 【XR-2】伤痕


    Luogu5441
    (n) 个点 ( (n) 为奇数 , (n le 99) ) 的完全图 , 其中可以有最多 (n) 条无向边 , 其他都是有向边 . 如果对于某四个点不经过这四个点以外的点能够相互到达 , 则构成一组合法方案 . 现在需要输出一种构图方法 , 使得合法方案数最大 .
    输出格式 : 最大方案数 ; 一个邻接矩阵 : (f[i][j]=0/1) 表示能否从 (i)(j) .

    洛谷原题解
    想办法算出最少的不合法的方案数 , 观察发现 ,对于四个点不是强连通的只有三种情况 :

    对于第三种情况不好算 , 考虑计算第一种情况 , 前两种情况本质是一样的 .
    想了半天这道题完全是在乱搞骗分 , 没有证明什么第三种情况不是更优的 , 但还是把官方题解摆出来 , 就当涨涨见识吧 .

    (s[i]) 表示i连出的有向边 . 则 (ans = sum C_{s[i]}^3) , 且有 (sum s[i] = frac{n(n-1)}{2}-n =nfrac{n-3}{2}) (因为 (n) 是奇数)
    对于函数 (C_x^3 = frac{x(x-1)(x-2)}{6}) , 在 $ x ge 3$ 时是凸函数 .
    对于凸函数有一个性质: (f(a)+f(b) ge 2f(frac{a+b}{2})) 可以猜想出 (f(a)+f(b)+f(c) ge 3f(frac{a+b+c}{3})) ,
    进一步猜想出对于 (n) 个数有 (f(a_1) + dots + f(a_n) ge nf(frac{a_1+dots+a_n}{n})) . (这题要用到 , 我只会打表证明)
    所以 (ans >= n imes C_{frac{n-3}{2}}^3) . 这样方案数就可以直接算出来 (C_{n}^{4} - n imes C_{frac{n - 3}{2}}^{3} = frac{n(n-3)(n^2+6n-31)}{48})

    关于构造方案 : 所有最长的对角线 ( 一共有 (n) 条 ) 是无向边 , 每个点向顺时针的 (frac{n-3}{2}) 个点连有向边 .

    (dots) 写不下去了我觉得这是错的 , 为什么 (spj) 跑出来是对的 ? 算了就当长见识到这里吧 .
    原题 : 高中奥数教程(小蓝本)图论P73 , 作为数学题来说还是道好题的 .
    可能这就是信息选手不严谨的乱搞骗分吧 .

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        if (n == 1) {
            cout << 0 << endl << 0 << endl;
            return 0;
        }
        cout << n * (n - 3) * (n * n + 6 * n - 31) / 48 << endl;
        int m = (n + 1) >> 1;
        for (int i = 1; i <= n; i++) {
            int a[n+1];
            memset(a, 0, sizeof(a));
            for (int j = 1; j <= m; j++)
                a[(i+j-1)%n+1] = 1;
            for (int j = 1; j < n; j++) cout << a[j] << " ";
            cout << a[n] << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    android中设置快捷键方法setShortcut参数的说明
    LayoutInflater
    Java读取文本文件中文乱码问题 .转载
    eclipse+ADT 进行android应用签名详解
    实验课表
    程序员技术练级攻略
    超过4000长度的字符串如何添加到oracle数据库中
    Hive sql创建表以及插入分区表
    Hive Sql 时间格式化处理
    oracle如何查询分区表所占空间大小
  • 原文地址:https://www.cnblogs.com/lizehon/p/11215641.html
Copyright © 2020-2023  润新知