首先,先慶祝自己完成了21天計畫 (最後一天是獎勵自己的一天,想幹啥都行),如願以償,昨天去外面逛了一天,吃了很多東西
今天也正式邁入第二個21天計畫
接著上次的題
這次仍然沒有100%通過,但從20%通過率變成了30%
因為如果時間不夠時,要將之前消耗最多的時間與這次消耗的時間相比較,如果這次時間比較短,就捨棄那一次的,採用這一次的時間。
因此我們需要大頂堆來存放每次消耗的時間
#include
#define ll long long
ll n=
0,t;
ll bigstuck[
150010];
//用來存放每次消耗的時間
ll a[
150010
],b[
150010];
void
swap
(ll *a,ll *b)
void
down
(ll p)
else
break;}
}void
up(ll p)
}void
push
(ll x)
ll top()
void
pop(
)void
quicksort
(ll a[
],ll b[
],ll low,ll high)
b[i]
=temp;
a[i]
=temp1;
quicksort
(a,b,low,i-1)
;quicksort
(a,b,i+
1,high);}
else
return;}
intmain()
else}}
printf
("%ld"
,count)
;}
————————————————
題目:求被三整除的子數列(為dp問題)
動態規劃(dp):定義好變數,成功一半,找到變數的迭代關係則成功一大半
**定義變數dp[i][j],dp[i][j],i是指餘數,j是當前層數,dp[i][j]是層數為j餘數為i的集合個數,注意是集合個數!
#include
#include
intmain()
};//dp[i][j],i是指餘數,j是當前層數,dp[i][j]是層數為j餘數為i的集合個數,注意是集合個數!
char str[50]
;scanf
("%s"
,str)
;int len=
strlen
(str)
;int i;
for(i=
1;i<=len;i++
)else
if(temp%3==
1)//這層餘數為0的集合個數=上一層集合餘數為0的個數+上一次集合餘數為2的個數(因為2+1=3,3%3=0)
else
if(temp%3==
2)//同理
}printf
("%d",(
int)
(dp[0]
[len]%(
int)
(1e9+7
)));
//列印出當前集合餘數為0的個數
}
10000小時計畫
74h
一二計畫(Day 2)DP 刪括號
題目 動態規劃要找對變數以及變數之間的關係 我們設定dp i j k 主要的變數就是計算多餘額外的左括號 表示a字串前i個刪除k個左括號構成b字串 關係為i與i 1之間的關係 詳見 include include int dp 110 110 110 dp i j k 表示a字串前i個刪除k個左括號...
阿里雲高階計畫 Day1
安全組 一定要開放ssh 22 http 80 和https 433 埠,授權物件為0.0.0.0 0 安裝 node.js node.js解壓安裝完成後,要修改環境變數,使得能在任意 錄下執 node命令 配置 vuepress 1.設定package.json的指令碼配置 vim package...
學習日記 Day1
for 迴圈變數型別 迴圈變數名稱 要被遍歷的物件 迴圈體 int c for int a c 廣播的動態註冊 過程總結 1.定義乙個intentfiler和乙個繼承broadcastreceiver的內部類 receiver 2.在oncreate中例項1中的2個定義。intentfiler新增個...