(ps.學習打卡記錄)
其實是在洛谷寫的題,acwing的還沒做
1 . 花生採摘
題意簡述:給一張花生的分布圖,從底部任意位置出發,每次都去花生最多的地方,問體力耗盡前能採多少。
因為固定了每次都去最多的地方,所以不存在 dpdp
dp的問題,直接照著題意模擬即可。
#include
using
namespace std;
struct node
bool
operator
<
(const node &t1)
const};
static priority_queue point;
int n, m, k, ans;
bool
check
(node cur, node next)
intmain()
} node cur = point.
top();
point.
pop();
bool flag =
true;if
(cur.x *2+
1<= k)
else flag =
false
;while
(!point.
empty()
&& flag)
else
flag =
false;}
cout << ans << endl;
}
2 . 數的劃分
題意簡述:將乙個正整數分成幾個數的和,問有多少中方案。
遞迴列舉組合即可,需要注意的是遞迴剪枝,有些肯定沒有合法方案的方向不用遞迴。每一層列舉到總數減去當前和就行。
#include
using
namespace std;
int n, k;
int ans =0;
void
dfs(
int cur,
int num,
int sum)
}int
main()
3 . 放蘋果
題意簡述:將 m
mm 個蘋果放進 n
nn 個盤中,有多少種方案。(盤子相同無序)
和上題思路差不多,遞迴列舉即可(主要是資料規模不大)。不同的是這題 n
nn
#include
using
namespace std;
int n, m;
int ans =0;
void
dfs(
int cur,
int num,
int sum)
if(num >= n)
return
;for
(int i = cur; i <= m - sum;
++i)
}int
main()
4 . 傳球遊戲
題意簡述:n
nn 個同學圍成一圈,每個同學可以選擇向左或者向右傳遞,吹哨停止時,球在手上的同學就要收懲罰,問從小明開始傳球,經過 m
mm 次後又回到小明手上的方案有多少。
讀完題,發現乙個同學能不能拿到球,只由他左邊和右邊的同學決定,所以設 dp[
i][j
]dp[i][j]
dp[i][
j]表示第 i
ii 個同學經過 j
jj 次傳球後球停在他手上的所有方案的集合,dp[
i][j
]dp[i][j]
dp[i][
j]存的方案數。
#include
using
namespace std;
int dp[50]
[50];
intmain()
} cout << dp[0]
[m]<< endl;
return0;
}
4 . 進擊的奶牛
題意簡述:有 n
nn 個隔間,每個隔間座標 x
ix_i
xi ,小明要放 c
cc 隻牛進去,又不希望小牛生氣,所以要使相鄰的兩頭牛的距離最大,問最大距離的最小值是多少。
找最值問題,轉換為驗證性問題,二分相鄰兩頭牛的距離即可。
#include
typedef
long
long ll;
using
namespace std;
template
<
class
t>
inline
bool
read
(t &ret)
int dp[50]
[50];
vector a;
ll n, c;
bool
check
(ll x)
return num >= c;
}int
main()
else r = mid -1;
} cout << l << endl;
return0;
}
5. 開心的金明
題意簡述:媽媽給了金明 n
nn 元錢,金明對想購買的 n
nn 件物品做了標記,每個物品有乙個價錢 v
iv_i
vi ,乙個喜愛程度 w
iw_i
wi ,問金明最大能獲得的 σvi
∗w
i\sigma v_i*w_i
σvi∗w
i是多少。
經典 dpdp
dp,01
0101
揹包,組合問題。
#include
using
namespace std;
int dp[26]
[30005];
int n, v[30]
,w[30];
intmain()
} cout<[v]
}
6 . 三角形數
題意簡述:給乙個三角形數(具體見原題),問從頂點到底部的最大路徑和。
經典 dpdp
dp,路線問題。設dp[
i][j
]dp[i][j]
dp[i][
j]表示從頂點到第 i
ii 行第 j
jj 個數的所有路徑的集合,dp[
i][j
]dp[i][j]
dp[i][
j]存的最大路徑權值和。很顯然,第 i
ii 行只能來自於它的上一行。
#include
using
namespace std;
int dp[
1002][
1002];
int n, a[
1002][
1002];
intmain()
} dp[1]
[1]= a[1]
[1];
int ans =0;
for(
int i =
2; i <= n; i++)}
cout << ans << endl;
return0;
}
(ps.今天打洛谷多校第二場,自閉了,題目資料連出題人都認為毒瘤。。。寫寫沒那麼難的題換換心情。。。) My SQL 學習打卡 60天搞定mysql
mysql 5.5.5 版本開始innodb成為了預設儲存引擎 聯結器 鏈結器超時斷開引數 wait timeout 預設 8小時 快取mysql 快取提供按需使用的方式 將引數 query cache type 設定成 demand,這樣對於預設的 sql 語句都不使用查詢快取。而對於你確定要使用...
acWing刷題記錄
費解的開關 你玩過 拉燈 遊戲嗎?25 盞燈排成乙個 5 5 的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下...
AcWing 60 禮物的最大價值
題目描述 在乙個m n的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值 價值大於0 你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或者向下移動一格直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物,請計算你最多能拿到多少價值的禮物?注意 樣例 輸入 2,3,1 1,7,1 4,6,1 輸出 1...