3 12 3 18第三週練習

2021-08-17 05:06:05 字數 2719 閱讀 7393

1. 狀態壓縮dp:對於乙個集合,把每乙個元素選擇與否的情況對應到乙個二進位制位裡,從而把集合的狀態壓縮成乙個整數,方便計算與維護。

poj2441 arrange the bulls:有n頭牛和m兼屋子,每頭牛都只喜歡住在某幾間屋子裡,問所有牛都滿意的方案有多少種。

屋子的居住一共有1

#define inf 0x3f3f3f3f3f

#define eps 1e-6

using namespace std;

typedef long long ll;

int n, m, t, x;

int maze[maxn][maxn];

int dp[1 << maxn];

int main()

} memset(dp, 0, sizeof(dp));

dp[0] = 1;

for(int j=0;j= 0; i--)

}dp[i] = 0;

} }int ans = 0;

for (int i = 0; i < (1 << m); i++)

ans += dp[i];

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

system("pause");

return 0;

}2.帶權並查集:對於每個節點儲存其乙個權值來表示節點與其根節點之間的某種關係,在查詢與合併時更新權值。由於權值是由節點指向其根節點,在合併分析中採用向量的思想來處理。

poj1988 cube stacking:有若干個木塊,要求支援兩種操作:將a所處的一列木塊放到b的上面,查詢a所在的一列中a的下面有多少個木塊。

此題需要儲存兩個權值:sum[i]表示i所處的一列中總的木塊數目,num[i]表示i的下面的木塊數目。在查詢根節點時有num[i]+=num[pre[i]],合併時有num[i]=sum[pre[i]],sum[i]+=sum[pre[i]]。實際上,對於i的每個祖先t,num[t]所代表的都是t移過來時所在的那一列的總數,只有葉子節點是移過來時那一列中它下面的數目。在查詢的過程中依次更新成下方所有的數目之和。

#include#include#include#include#include#include#include#include#include#include#include#include#define maxn 30050

#define inf 0x3f3f3f3f

#define eps 1e-8

const int mod = 1e9 + 7;

using namespace std;

typedef long long ll;

int n, x, y;

char s[10];

int pre[maxn], sum[maxn], num[maxn];

int finding(int x)

int main()

}else

}} return 0;

}

hdu3038 how many answers are wrong:對於某個數列,給出若干個區間和,判斷有多少個區間和是與先前矛盾的。

這是對區間操作,val[i]表示i與其根節點之間的距離。合併時:若fa==fb,有:

如果fa!=fb,就有:

}3.數字dp計數:洛谷1239:求出1-n中0-9各出現多少次。

#include#include#include#include#include#include#include#include#include#include#include#include#define maxn 15

#define inf 0x3f3f3f3f

#define eps 1e-8

using namespace std;

typedef long long ll;

int n,m,len,num;

int dp[maxn][maxn][maxn];

int sum[maxn][maxn];

int ans[maxn],dig[maxn];

void solve(int u,int cnt,int tmp)

{ if(cnt==1)

{for(int i=0;i

牛客練習記錄第三週

第一題 輸入乙個正整數的字串,輸出與它最接近的對稱數字 不包括它自己 的字串 注1 輸入字串的長度最多不會超過18 注2 當大於輸入數字和小於輸入數字的對稱數字與輸入數字距離相同時,取小的數字作為答案 輸入為乙個正整數的字串輸出為與輸入數字最接近的對稱數字 不包括輸入本身 的字串根據題目可以知道,直...

第三週中級練習

題目內容 輸入n 0輸入格式 整數n 0輸出格式 非負整數 輸入樣例 輸出樣例 include using namespace std intmain cout return0 題目內容 求a aa aaa aaaa aa a 第n項,n個a 其中a是1 9的整數。例如,a 1,n 3時,式子為1 ...

集訓第三週

又要感嘆時間過得真快了,8月13號,距離第一場網路賽還有26天。暑假三周集訓結束,個人賽也結束了,這一周還是做了一些個人賽,然後組好了隊伍。去年一隊有2個人算是 實力超群 比其餘人都高乙個檔次。而今年大家的水平都差不多,沒有像去年他們那麼突出,實力自然有不小的下降。相比去年的隊伍,今年隊的特點是大家...