Round 3 D
来源:互联网 发布:江边城外 知乎 编辑:程序博客网 时间:2024/06/06 06:52
原题链接:
http://poj.org/problem?id=1837
大意:
一个天平,已知钩子坐标和重物重量,且重物都要用上,求让天平平衡的方法数。
思路:
树形DP,讲每个重物的力矩算出来并求和建树。
以样例为例:
Sample Input
2 4
-2 3
3 4 5 8
Sample Output
2
数最后有多少 0 即可。代码实现时可以用最后一个力矩取负值来查找 取代数几个0 的方法。
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<set>#include<map>using namespace std;#define D(v) cout<<#v<<" "<<v<<endl#define mem(s,t) memset(s,t,sizeof(s))const int MAXN =25;int C,G;int c[MAXN],g[MAXN];set<int> s,S;map<int,int> m,M;typedef set<int>::iterator It;int main(){ cin>>C>>G; for(int i=0;i<C;i++){ cin>>c[i]; } for(int j=0;j<G;j++){ cin>>g[j]; } M[0]=1; for(int i=0;i<G-1;i++){ m=M; s=S; M.clear(); S.clear(); s.insert(0); for(int j=0;j<C;j++){ int val =g[i]*c[j]; for(It it=s.begin();it!=s.end();it++){ //D(*it); S.insert(*it+val); M[*it+val] += m[*it]; } } } int cnt=0; int Ans=0; for(int i=0;i<C;i++){ Ans=c[i]*g[G-1]; cnt+=M[-Ans]; } cout<<cnt<<endl; return 0;}
阅读全文
0 0
- Round 3 D
- CF round#205 D
- Codeforces Round#213D
- GCJ 2015 Round D
- Codeforces Round#131D
- CF - round # 280 - D
- BestCoder Round #27 D
- CF Round #358 D
- Codeforces Round 341D
- Round 1 D
- Codeforces Round #428 D
- 837D. Round Subset
- Codeforces Round #433 D
- codeforces round #441 D
- Codeforces Beta Round #3 D. Least Cost Bracket Sequence
- CodeForces AIM Tech Round 3 (Div. 2) D
- codeforces AIM Tech Round 3 (Div. 2) (A~D)
- Codeforces Beta Round #3 D. Least Cost Bracket Sequence
- php_lang_ref:Language Reference >> References Explained >> What References Do
- 后缀数组
- php_lang_ref:Language Reference >> References Explained >> Passing by Reference
- 机器学习中的正则化处理
- Oracle-SQL命令复习总结_1
- Round 3 D
- 第一章面试题整理
- 字符设备驱动高级篇4——设备类(自动创建和删除设备文件的作用)相关代码分析
- 生成可重集的排列
- C++第四节课
- 2017 四川省赛 D.Dynamic Graph
- 在Mac上安装mongodb
- 5-24 约分最简分式 (15分)
- 二级缓冲