SPOJ16636 Journey IE2

更好的阅读体验

在Byteland有n个城市,编号从1到n。这些城市由m条双向道路网络连接。众所周知,每一对城市最多只能由一条道路连接。

Byteman最近承认,他喜欢某些城市多于其他城市。更确切地说,他在数字为1到k的城市中花费的时间特别多,所以在每次旅行中,他至少要访问其中的每个城市一次。

Byteman的旅程是一个由d个城市组成的序列,使得每一对连续的城市都由一条道路连接。旅程可以在任何城市开始和结束。你的任务是计算Byteman可以围绕Byteland进行的不同旅程的数量。因为这个数字可能相当大,所以只需找到1e9+9的模数即可。

  • 题目来源:SPOJ16636 Journey IE2
  • 算法一:
    • 我会暴力!
    • 复杂度 \(O(nd)\) 期望得分20
  • 算法二:
    • 在之前基础上特判k=0 DP+矩阵优化
    • 设 \(f(i,j)\) 为 \(i\) 时刻在城市 \(j\) 的方案数,然后矩阵乘法优化
    • 复杂度 \(O(n^3\log_2d)\) 期望得分30
  • 算法三:
    • 对于测试点3、4 状压DP
    • DP 时除了记录当前点,再记录关键城市是否到过
    • 我故意把这几个点的数据做得较水,应该能过
    • 复杂度 \(O(dnm \times 2^k)\) 期望得分50
  • 算法四:
    • DP+矩阵优化+容斥
    • 同算法2 的DP,先暂且不理k 个重要城市,构建矩阵
    • 用容斥解决重要城市的问题,由于 \(k\) 最多只有 \(7\),所以 \(2k\) 枚举重要城市{可以经过/强制不能经过},强制不能经过只需在构建矩阵时无视与这个城市相连的边就行了
    • 最后 ans=f 强制关闭0 个重要城市-f 强制关闭1 个重要城市+f 强制关闭2 个重要城市-f 强制关闭3 个重要城市 +... ...
    • 复杂度 \(O(n^3\log_2d \times 2k)\) 期望得分100
  • 算法五:
    • 这个位置留给大家了
    • 我的算法在SPOJ 上总运行时间17.24s 垫底,rank1 的运行时间1.75s
    • 所以我的做法显然不是标准算法

SPOJ16636 Journey IE2的更多相关文章

  1. CF721C. Journey[DP DAG]

    C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...

  2. POJ2488A Knight's Journey[DFS]

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41936   Accepted: 14 ...

  3. CF #374 (Div. 2) C. Journey dp

    1.CF #374 (Div. 2)    C.  Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...

  4. POJ2488-A Knight's Journey(DFS+回溯)

    题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Tot ...

  5. codeforces 721C C. Journey(dp)

    题目链接: C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...

  6. A Knight's Journey 分类: POJ 搜索 2015-08-08 07:32 2人阅读 评论(0) 收藏

    A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35564 Accepted: 12119 ...

  7. HDOJ-三部曲一(搜索、数学)- A Knight's Journey

    A Knight's Journey Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) ...

  8. 【推公式】UVa 10995 - Educational Journey

    1A~,但后来看人家的代码好像又写臭了,T^T... Problem A: Educational journey The University of Calgary team qualified f ...

  9. poj 3544 Journey with Pigs

    Journey with Pigs Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3004   Accepted: 922 ...

随机推荐

  1. (七)羽夏看C语言——模板(C++)

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  2. Selenium系列(十九) - Web UI 自动化基础实战(6)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  3. http接口实现附件对接

    1.推送附件 filebody /** * 推送附件方法 * @param args */ public static void main2(String[] args){ CloseableHttp ...

  4. 浅谈KMP模式匹配算法

    普通的模式匹配算法(BF算法) 子串的定位操作通常称为模式匹配算法 假设有一个需求,需要我们从串"a b a b c a b c a c b a b"中,寻找内容为"a ...

  5. java版gRPC实战之四:客户端流

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. 一文带你了解.Net读写锁

    本文主要讲解.Net基于ReaderWriterLockSlim讲解读写锁 基础概念 读写锁是一个具有特殊用途的线程锁,适用于频繁读取且读取需要一定时间的场景,共享资源的读取操作通常是可以同时执行的, ...

  7. 集合Collection ----List集合

    Collection集合体系的特点: set系列集合:添加的元素是 无序,不重复,无索引的 ----HashSet: 无序,不重复,无索引 ----LinkedHashSet: 有序,不重复,无索引 ...

  8. Android——菜单(Menu)

    菜单的运用在Android中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...

  9. Android View post 方法

    解析View.post方法.分析一下这个方法的流程. 说起post方法,我们很容易联想到Handler的post方法,都是接收一个Runnable对象.那么这两个方法有啥不同呢? Handler的po ...

  10. python多线程与_thread模块

    进程与线程 1.进程:计算机程序只是存储在磁盘中的可执行二进制(或其他类型)的文件.只有把他们加载到内存中并被操作系统调用,才具有其生命周期.进程则是一个执行中的程序.每个进程都拥有自己的地址空间,内 ...