11月04日解題報告

2021-08-10 07:52:25 字數 1847 閱讀 7078

今天考試情況不好,策略上還存在問題,記憶體定義的問題又出現了,看來還是不能放鬆啊,第一題沒有開long long 直接從80掉到20,第二題超記憶體本來可以搞到的35分直接爆0,啊~本來可以有100多分的,看來還是自己能力有欠缺啊,還是要多多向大佬學習,好好改正才是,至於解題策略,還是要力求第一題要穩才是,太大意只會1分沒有

題面

定義」組合數」s(n,m)代表將 n 個不同的元素拆分成 m 個非空集合的方案數.舉個栗子,將拆分成 2 個集合有(,),(,),(,)三種拆分方法.

小貓想知道,如果給定 n,m 和 k,對於所有的 0<=i<=n,0<=j<=min(i,m),有多少對(i,j),滿足 s(i,j)是 k 的倍數.

注意,0 也是 k 的倍數,s(0,0)=1,對於 i>=1,s(i,0)=0.

輸入格式

從 problem.in 種讀入資料

第一行有兩個整數 t,k,t 代表該測試點總共有多少組測試資料.

接下來 t 行,每行兩個整數 n,m.

輸出格式

輸出到檔案 problem.out 中t 行,每行乙個整數代表所有的 0<=i<=n,0<=j<=min(i,m),有多少對(i,j),滿足 s(i,j)是 k 的倍數.

樣例輸入 1

1 2

3 3

樣例輸出 1

3ac思路

這道題其實思路比較簡單,方程也比較好推,s(i,j)=s(i-1,j-1)+s(i-1,j)*j,然而沒有發現資料會爆long long 忘記對k隨時取%,於是。。。唉,然後如果純暴力是會t掉2個點的,要處理乙個字首和才行

**

#include

#include

using

namespace

std;

long

long t,k;

long

long xuan[3000][3000];

long

long fan[3000][3000];

long

long ans=0;

int main()

fan[0][0]=1;

for(int i=1;i<=2000;i++)

} for(long

long i=1;i<=t;i++)

;bool

operator

< (const node &a,const node &b)

num=n;

node st;

for(long

long i=1;i<=m;i++)

ans+=st.jia;//消滅最大聲譽的貓

vis[st.biao]=1;//消滅完了;

vis[nex[st.biao]]=1,vis[las[st.biao]]=1;

num++;

h[num]=h[las[st.biao]]+h[nex[st.biao]]-h[st.biao];//把前後兩隻貓合併為乙隻,存入利潤差;

nex[num]=nex[nex[st.biao]],las[nex[num]]=num;

las[num]=las[las[st.biao]],nex[las[num]]=num;

node l;

l.jia=h[num];

l.biao=num;

q.push(l);

printf("%lld\n",ans);

}

}

11月03日解題報告

今天的考試應該還算在狀態的吧,第一題雖然在lemon上面只有30分,但是在洛谷上是a掉了,emmm 雖然是這樣但還是要注意不要開太大才是,畢竟不怕一萬就怕萬一嘛 還是要注意一下就是 題面 從前有一棵樹,確定乙個根節點,最大化所有點深度之和 輸入 第一行n 接下來n 1 行表示樹的每條邊 輸出 乙個整...

11月06日解題報告

今天考試感覺在狀態上還可以,但是覺得還是出現了一些心態上的問題,尤其是到後面改第二題的時候,整個人都是一種比較方的狀態,這樣可不行,還是要好好調整心態才是,emmmm,離考試也沒幾天了,要好好加油啊 題面 小a教室的牆上掛滿了氣球,五顏六色,小朋友們非常喜歡。剛一下課,小朋友們就打算去搶這些氣球。每...

10月31日解題報告

這次考試多多少少還是表現了自己在一些能力的缺失,還是太容易不審清楚題目就放開去做了,這一點不好,比如今天第一題與第三題,第一題真的水,但是自己卻因為水而想的過於簡單,直接就爆0了,血的教訓,第三題是因為自己沒有合理地估計答案範圍,貪心出來了,但是卻少開了long long 導致直接只有40分,改為l...