Contest 3
A:非常裸的dp。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define P 1000000007
#define N 32
int a,b,c,d,f[N][N][N][N][];
void inc(int &x,int y){x+=y;if (x>=P) x-=P;}
int main()
{
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
a=read(),b=read(),c=read(),d=read();
f[][][][][]=f[][][][][]=f[][][][][]=f[][][][][]=;
for (int i=;i<a+b+c+d;i++)
for (int x=;x<=a;x++)
for (int y=;y<=b;y++)
for (int z=;z<=c;z++)
{
int t=i-x-y-z;
if (t>d) continue;
for (int p=;p<;p++)
for (int q=;q<;q++)
if (p!=q)
{
if (q==&&x<a) inc(f[x+][y][z][t][q],f[x][y][z][t][p]);
if (q==&&y<b) inc(f[x][y+][z][t][q],f[x][y][z][t][p]);
if (q==&&z<c) inc(f[x][y][z+][t][q],f[x][y][z][t][p]);
if (q==&&t<d) inc(f[x][y][z][t+][q],f[x][y][z][t][p]);
}
}
cout<<((f[a][b][c][d][]+f[a][b][c][d][])%P+(f[a][b][c][d][]+f[a][b][c][d][])%P)%P;
return ;
}
B:非常裸的组合。我又学傻了第一眼居然容斥还好拍了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 200010
#define P 1000000007
int n,m,k,ans=,fac[N],inv[N];
int C(int n,int m){return 1ll*fac[n]*inv[m]%P*inv[n-m]%P;}
int main()
{
freopen("array.in","r",stdin);
freopen("array.out","w",stdout);
n=read(),m=read(),k=read();
fac[]=;for (int i=;i<=n+m;i++) fac[i]=1ll*fac[i-]*i%P;
inv[]=inv[]=;for (int i=;i<=n+m;i++) inv[i]=P-1ll*(P/i)*inv[P%i]%P;
for (int i=;i<=n+m;i++) inv[i]=1ll*inv[i]*inv[i-]%P;
if (m-k&) {cout<<;return ;}
cout<<1ll*C(n,k)*C((m-k>>)+n-,n-)%P;
return ;
}
C:非常裸的meet in the middle。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 300010
#define ll long long
int n,b[];
ll a[][N],l,r,ans,m;
void dfs(int k,int n,int p,ll s)
{
if (k>n) a[p][++a[p][]]=s;
else
{
dfs(k+,n,p,s);
dfs(k+,n,p,s+b[k]);
}
}
ll calc(ll k)
{
ll s=;int x=a[][];
for (int i=;i<=a[][];i++)
{
while (x&&a[][x]+a[][i]>k) x--;
s+=x;
}
return s;
}
int main()
{
freopen("subset.in","r",stdin);
freopen("subset.out","w",stdout);
n=read();cin>>m;
for (int i=;i<=n;i++) r+=(b[i]=read());
dfs(,n>>,,);
dfs((n>>)+,n,,);
sort(a[]+,a[]+a[][]+);
sort(a[]+,a[]+a[][]+);
while (l<=r)
{
ll mid=l+r>>;
if (calc(mid)>=m) ans=mid,r=mid-;
else l=mid+;
}
cout<<ans;
return ;
}
result:300 rank1
Contest 3的更多相关文章
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- hdu-5988 Coding Contest(费用流)
题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- ZOJ 3703 Happy Programming Contest
偏方记录背包里的物品.....每个背包的价值+0.01 Happy Programming Contest Time Limit: 2 Seconds Memory Limit: 65536 ...
- 2012 Multi-University Training Contest 9 / hdu4389
2012 Multi-University Training Contest 9 / hdu4389 打巨表,实为数位dp 还不太懂 先这样放着.. 对于打表,当然我们不能直接打,这里有技巧.我们可以 ...
- 2014 Multi-University Training Contest 9#11
2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others) ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- 校际联合Contest
每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...
随机推荐
- 【LG3973】[TJOI2015]线性代数
[LG3973][TJOI2015]线性代数 题面 洛谷 题解 正常解法 一大堆矩阵乘在一起很丑对吧 化一下柿子: \[ D=(A*B-C)*A^T\\ \Leftrightarrow D=\sum_ ...
- hadoop hdfs 找不到本地库解决办法
export LD_LIBRARY_PATH=/usr/lib/hadoop-0.20-mapreduce/lib/native/Linux-amd64-64 <-- HAOOP_HOME/li ...
- 18、Java线程面试题 Top 50
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎 ...
- selenium自动化之元素高亮显示
目的: 在UI自动化的时候,有时候我们需要查看运行的过程.为了更好的显示这个过程,可以进行元素高亮,以显眼的颜色来提示测试人员目前的操作在哪一步. 解决办法: 使用js代码来将元素的背景颜色和边框颜色 ...
- OAI搭建总结
我是参考网上的方法:oai搭建之eNB的文章, 接下来就根据自身所遇到的问题再这里总结一下步骤: 一.再官网上下载oai的文件openairinterface5g-master.zip 二.编译的过程 ...
- CentOS7.2安装mysql-5.7.19多实例
安装多实例之前首先需要先安装mysql,这里就不介绍如何安装mysql了,参考前面的博客:https://www.cnblogs.com/hei-ma/p/9505509.html 安装多实例之前需要 ...
- Zookeeper-----Zookeeper概述
一:Zookeeper的概念? ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理服务是一个复杂的过程.ZooKeeper通过其简单的架构和API解决了这个问题.Zoo ...
- js设置、修改、获取、删除 cookie
上面这串省略号对于各种吐槽的声音:因为在百度上看到的关于设置cookie的前几篇文章都是错误的: 里面给出的设置cookie的代码是这样的: function setCookie(name,value ...
- Altera FPGA AS,PS,Jtag配置模式区别
Altera FPGA AS,PS,Jtag配置模式区别 FPGA器件有三类配置下载方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式. AS模式(active seri ...
- 欢迎来怼-----Beta冲刺贡献分数分配结果
队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文