【折半枚举】Ural Championship April 30, 2017 Problem G. Glasses with solutions
2017-10-01 20:20
435 查看
题意:有n杯盐溶液,给定每杯里面盐的质量以及盐溶液的质量。问你有多少种方案选择一个子集,使得集合里面的盐溶液倒到一个被子里面以后,浓度为A/B。
折半枚举,暴力搜索分界线一侧的答案数,跨越分界线的答案,一侧用map存下来,枚举另一侧去统计。
折半枚举,暴力搜索分界线一侧的答案数,跨越分界线的答案,一侧用map存下来,枚举另一侧去统计。
#include<cstdio> #include<map> using namespace std; typedef long long ll; ll ans; int n,a,b,m[39],t[39]; map<ll,int>ma; void dfs(int op,int cur,int goal,int dep,ll A,ll B){ if(dep!=0){ if(A*(ll)b==B*(ll)a){ ++ans; } if(op==0){ ++ma[(ll)b*A-(ll)a*B]; } else{ ans+=(ll)ma[(ll)a*B-(ll)b*A]; } } for(int i=cur;i<=goal;++i){ dfs(op,i+1,goal,dep+1,A+(ll)m[i],B+(ll)t[i]); } } int main(){ // freopen("g.in","r",stdin); scanf("%d%d%d",&n,&a,&b); for(int i=1;i<=n;++i){ scanf("%d%d",&m[i],&t[i]); } dfs(0,1,n/2,0,0,0); dfs(1,n/2+1,n,0,0,0); printf("%lld\n",ans); return 0; }
相关文章推荐
- 【哈希表】Ural Championship April 30, 2017 Problem H. Hamburgers
- 【构造】Ural Championship April 30, 2017 Problem K. King’s island
- 【枚举】【最小表示法】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem F. Matrix Game
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem D. Clones and Treasures
- RCC 2017 Qual 1 Mail.Ru, April 2, 2017 Problem B. Painting the Wall
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem A. Arithmetic Derivative
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem L. Canonical duel
- 【DFS】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem D. Divisibility Game
- Problem 30 Digit fifth powers (暴力枚举)
- 【贪心】【后缀自动机】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem E. Enter the Word
- 2017西安交大ACM小学期 刁钻的顾客[3进制+折半枚举]
- RCC 2017 Qual 1 Mail.Ru, April 2, 2017 Problem C. Magic Artifact
- 【动态规划】【滚动数组】【bitset】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal
- 【线段树】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem J. Jedi Training
- XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem K. Piecemaking
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem F. Matrix Game
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 Problem E: qwb和李主席 (折半枚举!!!!n堆数分成最接近的两堆!!
- XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem D. Great Again
- CF-30 D - King's Problem?(枚举+最短路)