zoukankan      html  css  js  c++  java
  • CSP 模拟13

    T4 原题 思路也会 但是就是不会写dfs 结果挂成了20分
    我好菜啊

    A:Tree

    直接把所有边权加起来就好了
    考虑构造一种合法的排列
    使得每一条边都被充分利用到
    即并没有被其他边所限制
    只要按照大小排序
    然后依次加边就好了
    然后发现其实就是所有边权之和





    B:Permutation

    最优的结果肯定是 :
    i都比i+1靠前 或者距离小于k

    所以可以贪心的去交换
    换到不能再换就搞出目标答案了
    但是复杂度是有问题的




    正解是建边 跑拓扑序
    然鹅并不会 洛谷题解





    C:Graph

    一样结论题
    考试的时候没想出来
    先考虑树的情况
    最优的方案一定是
    每个点的儿子内部匹配
    如果儿子数为偶数可以直接匹配完
    如果儿子数为奇数那就和父亲匹配
    最后最多只会剩下一条边没有匹配

    这种构造可以扩展到无向图的情况
    首先跑出一颗dfs序
    对于非树边
    可以把非树边当成树边处理
    即对于一个点
    如果dfs到了它的祖先节点
    那么可以把祖先节点当成它的子节点去计算
    然后一样匹配就好了
    因为这样肯定是不会冲突的
    而且能保证一定是最大化匹配数
    所以这种构造是合理的





    D:十字绣

    原题
    计算每个点被正面多少个覆盖了 反面多少个覆盖了
    然后dfs
    对于每个联通块 让ans += 各个点被正面和被反面覆盖的差的绝对值
    最后ans /2 就是这个联通块的贡献
    每次起针一定是从一个差不为0的地方下手 最后从一个差不为0的地方出来
    这样每次操作一定会消耗掉两个差 所以最后ans/2就是该点的贡献
    但是还有一种情况
    就是类似于
    正面./. 反面./.
    这样的联通块其实对答案也是贡献1的
    但是按照上面的计算方法并不会对答案造成贡献
    所以特判一下如果联通块贡献为1
    就让答案+1

  • 相关阅读:
    MySQL的FORMAT函数用法规则
    jetbrains idea/webstorm等(注册,激活,破解码,一起支持正版,最新可用)(2017.3.16更新)【转】
    用户价值模型 CITE :https://www.jianshu.com/p/34199b13ffbc
    用户生命周期模型
    机器学习十大常用算法(CITE 不会停的蜗牛 ) interesting
    Linux 安装Oracle11g完整安装图文教程另附基本操作 (分享)
    oracle 命中率
    SQL学习总结笔记
    hash join
    Tomcat详细安装配置
  • 原文地址:https://www.cnblogs.com/2004-08-20/p/13796163.html
Copyright © 2011-2022 走看看