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節點有多少段顏色,就比較噁心了,代碼複雜度太高
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章