一二計畫(Day 1)今日學習,DP

2021-10-22 18:45:23 字數 1783 閱讀 8363

首先,先慶祝自己完成了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新增個...