zqdnr's ideas


此博文长期更新


第一题 网络流

  • 源于poj 1659,这道题解法是Havel-Hakimi定理
  • 我出的题目
    • 一个有向图,已知各点的初度和入度,目标是还原整幅图
    • 解法是:
      • 拆点,从源点向1-N建边,流的大小为入度,各点向1’-N’建边,流的大小为1,1’ - N’向汇点建边流的大小为出度,求解最大流
      • 如果 最大流等于出度和(出度和==入度和)那么此图可解,然后从各点找到拆点的边,如果流为1那么有一条边,由此解出整幅图

第二题 树状数组,离散化

  • 源于hdu 4288 , 这题的解法是线段树,区间合并
  • 我出的题目
    • 题意:给 一个队列,队列里的元素大小是唯一的,然后给三个操作:
      • 删除队列你值为x的元素
      • 在队列末尾添加值为y的元素
      • 求值为z的元素在队列中的位置
    • 解法:
      • 离线处理,离散化所有的值
      • 建一个树状数组, size表示队列的大小
      • 对于添加操作,从前往后处理数据,对于每一个元素的离散值,把这个离散值映射到树状数组size的位置,size之后加1
      • 对于删除操作,把该元素在树状数组的映射值更新为0
      • 对于 查找操作,把该元素在树状数组的映射值,向前求和即可

第三题 线段树,树上染色

  • 源于fzu2176,
  • 我出的题目
    • 题意:给一有n个节点的树,开始没有颜色,以1为根,然后2个操作
      • 把以x为根的树的所有节点(或边)染成x
      • 询问以y为根的树被染成了多少种不同的颜色
    • 解法:
      • 先一次dfs,把所有的点映射到线段树上,同时记录下各个根节点为树的区间
      • 然后hash一下颜色,更新一下区间即可
    • 提高难度:
      • 把询问改成从a节点到b节点有多少段颜色,就比较恶心了,代码复杂度太高
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章