原创 hdu4503(概率的逆向思維)

題目來源:2013騰訊編程馬拉松初賽第〇場(3月20日)   題意:已知n個小朋友,他們認識的人數,現在要選三個人,要求他們都相互認識或者都相互不認識。 思路:直接求不好求,所以從反面考慮,求對於每個人,選一個人和他認識,選一個人和他不

原创 hdu5107(線段樹處理三維問題)

很不錯的一道線段樹題,這裏的降維方式值得我們學習。 題意:已知n個建築的座標(x,y)和高度,查詢點(x,y)的左下角中高度第k小的建築的高度。 解題思路:座標加高度相當於是一個三維的題目。首先要發現這裏的k非常小,所以我們只要用線段樹維

原创 hdu4433(三維DP,後效性)

題意:給你個長度爲n的數字串,每次最多旋轉三個數字,至少經過都少部才能到達目標串。 思路:一開始我也是用DP做的,但是沒考慮到後效性,所以wa了。後來看了題解,思路是這樣的dp[i][j][k]表示第i爲匹配好,第i+1位增加了j,第i+

原创 hdu5091(掃描線+線段樹)

題意:給n個點,和長w寬h的矩形,問矩形最多能包含多少個點。 思路:掃描線+線段樹,首先將座標轉化成非負數,對於每個點(x,y),標記爲1,生成一個(x+w,y)的點,標記爲-1,然後將y軸建立線段樹,維護一個最大值即可。如不不明白的話,

原创 zoj3686(重新編號的線段樹)

 題意:一顆n個節點的樹,每個點都有一個權值(0或者1),初始化爲0,兩個操作:1、取反以i爲節點的子樹的所有點的權值;2、求以i點爲根的子樹中1的個數。  思路:dfs將所有節點重新編號,然後就是普通的成段更新。 代碼如下: #inc

原创 hdu3518(後綴數組求至少出現兩次以上的不可重疊串)

一段時間沒學後綴數組,剛開始練sa[]和rank[]的含義都忘記了。 題意:給一個長度爲n的字符串,問有多少個字符串至少出現2次以上且不重疊。 思路:後綴數組解,求後綴數組的時間複雜度nlogn,求答案的時間複雜度爲n*n,枚舉字符串長度

原创 hdu2296(AC自動機+DP)

題意:構造一個長度爲n的字符串,價值最大。 思路:比較基礎的AC自動機+DP,但是要求記錄路徑。dp[i][j]表示長度爲i,在Trie圖中的節點是j的最大價值,用path[i][j]記錄路徑。狀態轉移:dp[i][j] - > dp[i

原创 tensorflow Estimator train & evaluation & prediction & export model

Estimator實現transition based dependency parsing import numpy as np import math import tensorflow as tf import cjdpy WO

原创 hdu4089(概率DP)

題意:n個人排成一個隊列,小明一開始排在第m個,可能出現四中情況:1、隊列保持不變的概率p1; 2、第一個人排到最後一個的概率p2; 3、第一個人離開的概率p3;4、排隊結束的概率p4. 求在排隊結束時,小明排在前k個的概率。 思路:dp

原创 hdu1542(掃描線求面積並)

題意:求多個矩形面積的並 思路:掃描線算法,對每個矩形,用兩條平行於x軸的線段表示,然後對每條線段的y排序,然後就用平行於x軸的掃描線從y = 0出往上掃,每次求面積。這裏n只有100,所以可以用暴力解。 代碼如下: #include<i

原创 Linux經典命令

1、yum基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。 yum的命令形式一般是如下:yum [options] [command] [pa

原创 hdu4288(線段樹維護多個sum)

題意:給n個有序的數字,三個操作:1、刪除數字x;2、增加數字x;3、求i%5=3的數字之和(i爲數字的下標) 思路:一開始想水一下,結果超時。先對所有輸入的數字離散化,線段樹維護區間上點的個數和5個sum值,區間合併的時候要注意:左兒子

原创 hdu5105(求一元三次方程的最值)

題意:求f(x)=|a∗x3+b∗x2+c∗x+d|(L≤x≤R)的最大值 思路:對a進行分情況討論,a == 0,那麼就是一元二次方程求最值; a != 0,求導求極值點。 代碼如下: #include<iostream> #inclu

原创 zoj3689(貪心+DP)

題意:n個任務,剩餘t的時間,完成每個任務會消耗時間ti,同時也會得到t*si的價值,求怎麼安排任務得到的價值最大 思路:先貪心,將n個任務按性價比排序,然後用DP,dp[i][j]表示完成前i個任務,用時j,實現的最大價值,dp[i][

原创 ural1989(字符串hash+線段樹)

這題困擾了我一天,在timus上用G++交總是超時,後來改用visualc++2010就ac了,不知道爲什麼,求大牛解釋。 題意:給一個長度爲n串,兩種操作:1、修改一個字符;2、詢問區間[l,r]上的字符串是否爲迴文串。 先介紹一下字符