時間限制: 1 sec 記憶體限制: 128 mb
題目描述
slf作為乙個與眾不同的人,他的鎖屏密碼當然不能和別人一樣簡簡單單的4位密碼或者是按個爪印就可以了。
每次slf想要開啟手機時,他需要手機先告訴他乙個數n,這個數當然不是乙個簡簡單單數字,它是有特殊含義的:
對給定的n(4≤n≤24),它其實還表示了乙個特殊等式-1@2@3@4@5…@n-2@n-1=n,其中字元@可能是加號也可能是減號。
如果slf想要開啟手機,他就要輸入有多少個符合條件的這樣的等式。
輸入:包含乙個整數的單獨一行。
輸出:包含乙個整數的單獨一行表示滿足條件的等式的個數。
樣例輸入
8樣例輸出4提示
即:-1-2-3-4+5+6+7=8
-1-2+3+4+5+6-7=8
-1+2-3+4+5-6+7=8
-1+2+3-4-5+6+7=8
因為最近剛剛學了動規,所以看到這道題,就想著怎麼列狀態轉移方程。我們先按照套路分析一下。
(1)明確狀態:唯一的狀態是前 i 個數的和;
(2)dp[i][j]的含義:到第i個數的總和為j的方案數;
(3)base case:dp[1][-1]=1;
(4) 選擇:+ 或者 -;
(5)列方程:dp[i][j]=dp[i-1][j-i]+dp[i-1][j+i]
當i-1位置總和為j-i,加上i(即選擇+)就是就j;當i-1位置總和為j+i的時候,減去i(即選擇-)就是j,就這兩種情況了吧。
(6)結果:存在於dp[n-1][n]。
不知道諸位有沒有發現乙個問題,大佬請略過 ,這裡的下標出現了負值,其實只要把每個座標向右平移add就好了。
題目中n<=24,最大的負值是當所有的數是負數的時候,即-(24+1)*24/2=-300,所以就取add=500就夠了。
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define maxn 1e5+10
using
namespace std;
int n,a,add=
500;
int dp[
100]
[3000];
intmain()
printf
("%d"
,dp[n-1]
[n+add]);
return0;
}
好好學習,多問dalao。 MIUI 鎖屏密碼破解
mi 8,已解 bootloader 鎖 前幾天刷開發版同時更新到 android 10,大約刷後兩天發現螢幕無法解鎖,懷疑是系統本身 密碼驗證過程中存在 bug.售後表示只能清除全部資料以解鎖.於是自己搞一搞 這是嘗試過程和一種 很 可能的思路.然鵝由於實在不會 j a 沒有進行下去.由於twrp...
一鍵清除鎖屏密碼 蘋果手機忘記鎖屏密碼的解決方案
一鍵清除鎖屏密碼是很多小夥伴好奇的乙個問題,為了隱私問題考慮,很多人都會給自己的手機設定鎖屏密碼,如果密碼不記得怎麼清除鎖屏密碼呢?今天以蘋果手機為例給大家分享一下ios系統清除鎖屏密碼的操作步驟,需要注意的是,這些方法都會清除掉手機裡的所有資料。為了防止手機丟失,很多人會在手機到手以後開啟 查詢我...
Android 鎖屏問題
android鎖屏 android鎖屏時,1.會首先呼叫onpause 所以應該儲存應用程式的資源。2.android解鎖的時候,會呼叫onresume,讀入儲存的應用程式的資源。如果執行程式是已經鎖屏,1.應用程式會先呼叫oncreate 然後onresume 再則onpause 2.這時得到的螢...