zoukankan      html  css  js  c++  java
  • 9.7集训 总结

    今天wyc先生掳了四道题给我们... 本嘴巴AK选手吃枣药丸。

    T1
    题意简述:给出平面上n个点,两两连线,选尽量多的直线,使得所选直线中没有任何两条是平行的。n<=200。
    sol:按斜率排序… 然而似乎有精度问题… 天师把eps设成(10^{-6})就狗带了。解决方法有两个,一是用分数算,二是用叉姬(?)。

    T2
    题意简述:合并果子。n堆果子,每次可以选k堆合到一起。其他条件相同,求最小代价。 n<=10000。
    sol:我还是too naive。根本没有吸收到NOI2015 Day2 T1的经验。搞得我做过似的… k叉哈弗曼树,补零。当且仅当(n = p*(k-1)+1, p∈N^*)的时候才能像二叉那么做,也就是每次选满k个合到一起。现在感觉自己真是愚蠢,每次尽量吞k个,最后的尾巴一起处理,这样怎么可能对。当n不满足上面的式子的时候,在前面补0即可。

    T3
    题意简述:如图。

    sol:简单树形DP。N<=1000的范围,设(f[i])表示传递完以i为根的子树需要的时间。贪心一下,在i的儿子中,(f)越大的子树要越先传递。这样,一个(O(n^2))的DP就出来了。
    挖坑:那N<=100000要怎么做呢。设(f[i][0])表示从(i)传递到儿子的时间;……

    T4
    有一个长度未知的序列,满足如下的n个条件:至少有(c_i)个元素的值在区间([a_i,b_i])中。求序列的最短长度。
    sol:第一眼:裸上差分约束。然后想想:先把区间按左端点-右端点排序,对于第(i)个条件,找到最大的(j)使得(a_j<=b_i),然后尽可能地把第(i)个条件里的数放进这个区间里去,把第(i+1)个条件到第(j)个条件的(c)值都减掉(c_i),重复如此。很像喷泉覆盖的贪心方法。暴力(O(n^2)),可以过。如果二分/离散化+线段树可以做到(O(NlogN))

  • 相关阅读:
    org.tinygroup.ehcache-EhCache缓存解决方案
    org.tinygroup.validate-验证框架
    org.tinygroup.context-上下文环境
    org.tinygroup.commons-常用工具类
    org.tinygroup.context2object-参数对象构建
    org.tinygroup.config-统一应用配置
    org.tinygroup.binarytree-二叉树
    org.tinygroup.service-服务
    flask之wtform与flask-session组件
    Flask信号源码流程
  • 原文地址:https://www.cnblogs.com/yearwhk/p/5851499.html
Copyright © 2011-2022 走看看