原创 CF1348D Phoenix and Science【貪心】

題目鏈接 題目描述 給定一個數 x = 1,初始sum = 1,每次可對x進行操作,將其值變爲[x, x * 2]之間的任意一個數,然後將sum加上現在的x,問最少需要幾次操作可以變成給定的數字n,同時對於每次操作輸出 x 的改變

原创 AtCoder Beginner Contest 164 E Two Currencies【最短路】

題目鏈接 題目描述 給定n個點,m條無向邊,初始狀態下手裏有s個銀幣。從u點到v點需要花費a個硬幣,b個時間單位。在每個點可以花d個時間單位兌換c個銀幣,求從起點1到各個點需要的最短時間。 思路 這題很關鍵的一個突破口是數據範圍:

原创 CF1342C Yet Another Counting Problem

題目鏈接 題目描述 給定兩個數字a,b,有q次詢問,每次詢問給出兩個數字 l , r, 求 l 到 r 的範圍內有多少數x使得 x % a % b != x % b % a 思路 要求x % a % b和 x % b % a,可以

原创 Atcoder 164D Multiple of 2019

題目鏈接 題目描述 只包含1-9數字的字符串中,有多少子串形成的數字 % 2019 == 0 思路 因爲 10n % 2019 == 0, 所以當 s[l~n] % 2019 == s[r~n] % 2019 就滿足要求。(n爲字

原创 CF1215B The Number of Products

題目鏈接 題目描述 給定一個序列a,求其子串(l, r)之間正負乘積總數 思路 用了DP 狀態: dp[i][0] 表示在第 i 位時從(1, i)的子串正乘積數 dp[i][1] 表示在第 i 位時從(1, i)的子串負乘積數

原创 樹的直徑【模板】

樹的直徑求解法有兩種,一種是樹形dp,另一種是兩次dfs/bfs 這邊有詳細的知識點 推薦兩道入門題 poj-1985, poj-2631 牛客小白月賽22 B題 樹形dp 可以有效處理負邊權,對於記錄路徑信息的效率較低 代碼片

原创 【基礎DP】hdu 1024

題目鏈接 題目描述 給n個數,把n個數劃爲m段求劃爲m段的最大值,並不需要把所有數都划進去。 思路 因爲是求將n個數劃爲m段的最大數,所以建立的狀態 dp[i][j] 表示前 j 個數種劃 i 段的最大值。 狀態轉移方程就有兩種:

原创 【基礎DP】hdu-5119

題目描述 給 n 個數,從中選取任意個數判斷有多少種方法可以使得選擇的數的異或和小於 m 。 思路 建立狀態 dp [ i ][ j ] 表示 i 個數中異或和爲 j 的個數。 可以選擇加上第 i 個數的異或和或者選擇不加,於是

原创 並查集 hdu-1272 小希的迷宮

題目描述 判斷一個無向圖是不是樹 Input 輸入包含多組數據,每組數據是一個以0 0結尾的整數對列表,表示了一條通道連接的兩個房間的編號。房間的編號至少爲1,且不超過100000。每兩組數據之間有一個空行。 整個文件以兩個-1

原创 圖論基礎問題【筆記】

主要集中一些初學圖論的基礎問題 第一題 洛谷P3916 圖的遍歷 題目描述 給出N個點,M條邊的有向圖,對於每個點v,求A(v)表示從點vv出發,能到達的編號最大的點。 sample input 4 3 1 2 2 4 4 3

原创 字符串【學習筆記】

這篇博客只是記錄一下我在做題過程中碰到的一些關於字符串巧妙的處理方式(可能只對我這個菜雞來說相對巧妙吧) 1、stringstream的使用 第一次碰到stringstream的使用是在紫書上面p112,題目是UVA10815。前

原创 【DFS】 poj2676 數獨

題目描述:給一個數獨,0代表空,解這個數獨,有解輸出這個解,無解輸出原格式 思路: 數獨每行每列每塊小區域的1-9都是不能重複的 那就設置三個bool來判重 列判重 col[10][10] 行判重 row[10][10] 區域判