原创 51nod 1107 斜率小於0的連線數量

按x座標排序,求y座標的逆序對 歸併排序求逆序對: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 1e5 + 5; str

原创 LightOJ 1038 Race to 1 Again(概率期望)

題意:給你一個數n,不斷的除以它的約數,最終變成1。問變成1的步數的期望是多少。注意:n可以除1變成n。 分析:首先2的期望爲什麼是2,我想了好久都沒想明白,最後雖然算出來了,但我依然不知道爲什麼是2. 計算的思路和 Lig

原创 LightOJ 1030 Discovering Gold(期望)

題意:唔……這是適合男女獨處一室時玩的……緊張又刺激的飛行棋。就是飛行棋的規則,n個點,一個六面的骰子,一開始在1這個位置,每個位置都有一個價值,問你走到最後一個點取得的價值的期望是多少。 分析:我們可以算出來走每個位置的概率,

原创 codeforces#419 B q

題意:給你n個區間,然後給出m個查詢區間,對於每次詢問,輸出這個區間裏多少個點被不少於k個區間覆蓋 解析:求兩次前綴和就好了 #include<iostream> #include<cstdio> #include<cstring> us

原创 51nod 1060 最複雜的數

1060 最複雜的數 題目來源: Ural 1748 基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級算法題  收藏  關注 把一個數的約數個數定義爲該數的複雜程度,給出一個n,求

原创 51nod 1154 迴文串劃分

想了好久,突然看到了話題是動態規劃,就明白了。 先n^2預處理出來以每個字符結尾的迴文串。然後動規,對於每一個字符,要麼自成一家,要麼接在前面的字符上。 #include<cstdio> #include<iostream>

原创 51nod1108 距離之和最小 V2

我們寫一下就可以發現: 假設符合要求的點的座標爲(x, y, z); 那麼ans = |x - x1| + |y - y1| + |z - z1| + |x - x1| + |y - y2| + |z - z2|…… 由於求

原创 51nod 1205 流水線調度

這個題排個序就好了。就是如果A排在B前面更優就把A放在前面,否則把B放在前面 #include<cstdio> #include<algorithm> using namespace std; const int maxn =

原创 HDU - 4547 倍增法求最近公共祖先(LCA)

倍增法求LCA的一般步驟: 1.建樹,確定深度和父子關係。 2求出遞推數組;即:f[i][j] 表示 i 節點的第 2 ^ j 倍祖先,可知 f[i][j] = f[f[i][j - 1]][j - 1]; 3.對於讀入的每對查詢進行操

原创 51nod 1109 01組成的N的倍數

這個題我是用廣搜做的,話題裏面的抽屜原理沒有想到怎麼做。 搜索的時候節點記錄兩個值,一個是餘數,一個是節點的編號,因爲這是一顆二叉樹,節點編號的二進制形式,剛好是我們需要的結果。對於餘數,還要開一個數組去重。 #include

原创 51nod 1153 選擇子序列 (好題)

這個題很不錯。 採用貪心的思想:首先考慮到在整個序列中取最大值一定是最優的,也就是說B數組的第一個數是A數組的中最大值的下標。而且通過題意我們發現,一旦選定了某個數就把當前的區間劃分成兩份。比如說第一次選了9,第二次選了10,

原创 51nod 1191 消滅兔子(優先隊列好題)

一開始的想法是用二分圖貪心來做,結果T了。然後想了想,可以用優先隊列來做。 先按兔子的血量從小到大排序,同時箭的傷害從小到大排序。枚舉每一隻兔子i,找出第一支能殺死它的箭,從這支箭往前到第一支能殺死第i-1兔子的箭都能殺死前

原创 51nod 1105 第K大的數

二分法。 二分套二分。很好玩的一個題目。 把兩個數組排序 先二分結果,再去判斷這個結果是不是第k大。判斷時候枚舉a數組裏面的值,二分查找b數組裏面最小可以和當前枚舉的a數組裏面的值相乘大於第一層二分的結果,比如說a[i]

原创 2017多校第一場1006 function(HDU6038)

題意: 給你一個a序列,代表0到n-1的排列;一個b序列代表0到m-1的排列。問你可以找出多少種函數關係,滿足f(i)=b[f(a[i])]; 分析:這個主要是找循環節 比如說:如果 a 序列是 2 0 1 那麼我們可以發現

原创 qduoj 樹結構重逢 (兩遍深搜)

描述 給定一顆包含n個節點的無根樹,並且把節點從1-n編號。 現在讓你求對於每個點,求出所有點到這個點的距離的和(距離當然是最短距離了..)。 輸入 第一行包含一個正整數n ( n <= 100000 ),表示節點的個數。