原创 leetcode 581. 最短無序連續子數組 排序nlogn vs O(n)解法

排序O(nlogn) 之後找到第一個交換和最後交換的位置 class Solution { public: int findUnsortedSubarray(vector<int>& nums) { vec

原创 POJ 1088 滑雪 遞歸+dp | 拓撲排序

從每個點(i,j)向四個方向去看 如果某一個方向(a,b)的數值比當前位置小 先求解(a,b)的最長距離,之後加1即可 樸素的遞歸重複求解了很多子問題,我們每計算出一個子問題的解,便將他進行存儲,這樣就可以大大減少時間。 #inc

原创 POJ 1185 炮兵陣地 dp三維和二維的區別 狀壓dp

參考: https://www.cnblogs.com/scau20110726/archive/2013/02/27/2935256.html 二維的dp 最開始寫了的dp數組是二維的,想法也很簡單 dp[r][i]表示:第r行

原创 leetcode 703. 數據流中的第K大元素 小頂堆

建立一個大小爲k的最小堆,堆頂就是第k大的元素 數據流中如果有比k大的元素,入堆,重新調整,保持一共k個元素 如果比k小直接返回堆頂即可 #include <iostream> #include <vector> #include

原创 leetcode 705. 設計哈希集合

看了範圍不是很大使用了數組,不是正規解法 class MyHashSet { public: /** Initialize your data structure here. */ bool * hx; M

原创 POJ 1636 Prison rearrangement 二部圖連通分量+揹包

以第三組爲例,我們根據輸入可以得到這個二部圖 根據不能放在一起的情況可以得到這樣的連通分量 對於每一個連通分量,我們將這個連通分量按照監獄分爲兩個部分 這兩個部分調整的時候要作爲整體來調整。 **Eg:**我們假設將一號監獄的5

原创 POJ 1050 To the Max 矩陣最大和的子數組:動態規劃

將原來的矩陣直接改造成dp矩陣 dp[i][j] 表示以以a[0][0]爲左上角 a[i][j]爲右下角的矩陣之和 所以一個O(n4n^{4}n4)的算法就比較容易寫了 狀態轉移: 表示(不包括)左上角( ii , jj )右下角

原创 POJ 2228 Naptime 環形DP

參考 https://blog.csdn.net/qq_41925919/article/details/90267224 先不考慮環的情況 dp[i][j][0]:前i個時間間隔中,已經花費了j個間隔,取得的最大值,並且第i個間

原创 POJ 2506 Tiling 遞推+大數

將答案存在ret數組裏面 n=0的時候居然是1 遞推關係 ret[i] = ret[i-1] + ret[i-2]*2 ; 注意是乘2不是3,當ret[i-2]時候,我們有兩個單位可以操作,因爲全豎起來的那種,在ret[i-

原创 leetcode 888. 公平的糖果交換 比較set和map的速度

求和Sa,Sb 找兩顆差值 = (Sa-Sb)/2的 set class Solution { public: vector<int> fairCandySwap(vector<int>& A, vector<int>&

原创 POJ 1001 Exponentiation 字符串乘法+快速求冪

考慮一下下面的樣例應該可以AC: 底數整數的情況 去掉最後後導零 沒有小數部分時候不輸出小數點 思路 先不考慮小數點 將數存入字符串a,b中 答案存入ret ret的長度是a的長度和b的長度之和 a[i]和b[j]相乘的位置放在

原创 非遞歸 求所有組合

從[0,NN-1]這NN個數裏面,找到所有組合 例如Con(5,3) 0 1 2 0 1 3 0 1 4 0 2 3 0 2 4 0 3 4 1 2 3 1 2 4 1 3 4 2 3 4 類似於加法器,初始是0,1,2 每次

原创 論文撰寫-LaTex 教程+模板

教程 https://www.jianshu.com/p/3e842d67ada2 模板鏈接 https://github.com/MartinThoma/LaTeX-examples http://www.latextempla

原创 2020-CSP南京線上分享會-高分經驗分享

以下內容來自2020-CSP南京在線研討會內容 侵刪 清華大學:陳文光 CSP考什麼 基本的編程 數據結構 算法 調試能力(實踐) CCSP 內存空間 讀寫數據 網絡通信 性能優化 工程能力 參與現有軟件的編寫 測試 與客戶溝通

原创 快速入門 CUDA C++ 混編

教程: https://zhuanlan.zhihu.com/p/34587739 kernel是CUDA中一個重要的概念,kernel是在device上線程中並行執行的函數 一個kernel所啓動的所有線程稱爲一個網格(grid