原创 Cutting Game FZU - 2268 二進制

題意:給定一塊長度是n的金塊,求最少分成多少塊,使得1-n的所有數字都可以表示出來。這一個是對二進制的理解。#include <cstdio> using namespace std; int main() { int nTest

原创 51Nod 1163 最高的獎勵 貪心

思路1:這個是非常好的一道貪心題目!每個任務有一個最晚完成時間,用一個隊列來維護到當前時間t的時候,一共完成了哪些任務。 遇到最晚完成時間大於t的,直接加入隊列,與t相等的話,則置換一下,使得隊列裏面的值最大。#include <bits

原创 FZU 2109 mountain number 數位dp

思路:所有的數位dp長一個模樣。考慮一下,在某一位上的往下遞歸,可能和哪幾個條件有關。1.位數2.前一位的值3.當前是奇數位還是偶數位。* 注意前導零的時候後,默認pre是最大值9。根據數位dp模板即可寫出#include <cstdio

原创 51Nod 1007 正整數分組 遞推 DP

題目鏈接思路:問題是:將所有的正整數分爲兩組,使得兩組的差最小。再將問題轉化一下。在使用n個數,分爲兩組的的所有情況下的差的最小值。dp[i][j]代表用了前i個數,j這個差有沒有出現過。那麼n個數分爲兩組的差的全部情況可以有num[n]

原创 FZU - 2150 兩點BFS 技巧

題目鏈接 思路 題意非常簡單,最多兩個點同時開始燒,最少的花費時間。 暴力枚舉一下,我的做法是使用一個標記來記錄兩個火堆的到達時間以及各自燒了多少。寫完之後看了題解。發現有更簡單的做法就是不考慮哪個火堆燒的,只記錄是否被燒到以及燒到

原创 1091 線段的重疊 區間重疊

題目鏈接 思路 保證思路的有序性。 如果拿出來每一條邊與其他邊進行比較,那麼一定可以得出答案。 但是一條邊[l,r]只能和與它有交集的邊產生可能。那麼進行排序,按照左端點,在某條邊的l大於當前選擇的邊的r時break。 能否在O(

原创 51Nod 1432 獨木舟 貪心算法

思路:做了一些貪心的題目,總結出來,對於問題的定義是至關重要的。 該問題是使得最少的船將全部人載走,等價定義是每一個船載的人儘可能的多,也就是使每個船儘可能有兩個人配對成功。那麼進行一下排序,最大與最小組合就好了。#include <bi

原创 Codeforces 6A 三角形

給定四條邊,看是否構成三角形。記一個規律,就是連續的三個數最可能構成三角形。#include <cstdio> #include <iostream> #include <algorithm> using namespace std;

原创 ZOJ 4020 Traffic Light 浙大校賽 BFS

題目鏈接 思路 這個題的思路很清楚,只不過第一次用到了三維數組。記錄一下吧。 #include <bits/stdc++.h> using namespace std; const int N = 1e5+10; int sx,sy,f