給出n≤40
n\leq40
n≤40
個比賽,給出每個比賽的票價以及m≤1
e18
m\leq1e18
m≤1e18
表示你的積蓄。然後求問能看的比賽的方案數是多少。
n
nn如果能夠再小一些就可以直接暴搜了,但是搜不得。但是拆成兩半然後把兩邊所有的可行方案的總和全部儲存下來,對左邊的某個方案x
xx,到右邊二分小於等於m−x
m-xm−
x的個數求和。
#includeusing namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int n=40;
int a[n],mid;
ll c[1<<19],d[1<<19];
int tot1=0,tot2=0;
int n,mod;
void dfs1(int cur,int ed,ll sum)
dfs1(cur+1,ed,sum);
dfs1(cur+1,ed,(sum+a[cur])%mod);
}void dfs2(int cur,int ed,ll sum)
dfs2(cur+1,ed,sum);
dfs2(cur+1,ed,(sum+a[cur])%mod);
} int main()
} ans=max(ans,(c[tot1]+d[tot2])%mod);
printf("%lld\n",ans);
return 0;
}
CEOI2015 Day2 世界冰球錦標賽
題目描述 譯自 ceoi2015 day2 t1 ice hockey world championship 今年的世界冰球錦標賽在捷克舉行。bobek 已經抵達布拉格,他不是任何團隊的粉絲,也沒有時間觀念。他只是單純的想去看幾場比賽。如果他有足夠的錢,他會去看所有的比賽。不幸的是,他的財產十分有限...
P3233 HNOI2014 世界樹(虛樹)
看到 mi 300000自然聯想到虛樹,簡單思考一下似乎可行,但剩下的部分貌似就比較麻煩。首先對重新構建的虛樹,考慮每個點應該被誰管。因為乙個點既可以被它子樹中的點管,也可以被子樹以外的點管,所以我們做兩次dfs。第一次先遍歷子節點,再更新,記錄的是乙個點子樹中最近的管他的點是誰。第二次先用從父節點...
洛谷P4553 80人環遊世界
題意 有m個人,給定n個城市構成dag。每個城市恰好有vi個人經過,每條邊有費用。每個人自選起點,終點。求最小費用。解 首先拆點,連邊,流量為 vi,vi 然後做有上下界有源匯最小費用可行流即可。1 include 2 include 3 include 4 include 5 include 6 ...