BestCoder Round #83
第一次做BC呀,本来以为会报零的,做了56分钟A了第一题 然后就没有然后了。
贴一下第一次A的代码。
/*
0.组合数
1.
2016-05-14 19:56:49
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int T,m;
];
][];
/*
long long c(int m,int n)
{
return f[m]*f[m-n]/f[n];
}*/
void init(int n,int m)
{
long long i,j;
memset(c,,sizeof(c));
;i<=m;i++)
c[][i]=c[][i]=;
;i<=m;i++)
c[i][i]=;
;i<=n;i++)
c[i][]=;
;i<=n;i++)
{
;j<=m;j++)
{
if(i!=j)
c[i][j]=(c[i-][j]+c[i-][j-]);
}
}
/*
for(int i=0;i<=30;i++)
{
c[0][i]=0;c[i][0]=0;
}
*/
}
int main()
{
/*
f[0]=0,f[1]=1;
for(int i=2;i<=30;i++)
{
f[i]=f[i-1]*i;
}
*/
init(,);
/*
for(int i=0;i<=30;i++)
for(int j=0;j<=30;j++)
cout<<"i="<<i<<"j="<<j<<" c[i]="<<c[i][j]<<endl;
*/
scanf("%d",&T);
while(T--)
{
scanf("%d",&m);
;i<=m;i++)
scanf("%d",&a[i]);
sort(a+,a+m+);
/*
for(int i=1;i<=m;i++)
cout<<a[i]<<" ";
cout<<endl;*/
,sumeven=;
;i<=m;i+=)
{
//从m个里面挑i个 c(m-1,i-1)*a[]
for(int j=m;j>=i;j--)
{
//cout<<sumodd<<" a["<<m-j+1<<"]="<<a[m-j+1]<<" c["<<j-1<<"]["<<i-1<<"]="<<c[i-1][j-1]<<endl;
sumodd+=a[m-j+]*c[j-][i-];
}
}
;i<=m;i+=)
{
for(int j=m;j>=i;j--)
{
sumeven+=a[m-j+]*c[j-][i-];
}
}
cout<<sumodd-sumeven<<endl;
}
}
还以为自己很机智,写了个组合数。
后来看了题解才明白过来,答案就是max(ai)。
其实就是整理了一下上面的思路,你想昂,对于某个数ai,以它为最小元素的集合,一共会有2的k-1次个(ai是A中第k大的数)。相当于是比他大的k-1个数组成一个集合,一共有2的k-1次个集合,每个集合再补上元素ai即可。那么所以奇偶互相抵消,直至k=1时只有一个元素了。即最大的那个元素,即max(ai)。
剩下四题一个都看不懂题解 水平太次了。
不过,组合数的写法要学习一下。
组合数 c(m,n)=m! / [ (m-n)!*n! ]
组合数中c(0,n)和c(m,0)都是1!!!这里面 规定了0!=1。
void init(int n,int m)
{
long long i,j;
memset(c,,sizeof(c));
;i<=m;i++)
c[][i]=c[][i]=;
;i<=m;i++)
c[i][i]=;
;i<=n;i++)
c[i][]=;
;i<=n;i++)
{
;j<=m;j++)
{
if(i!=j)
c[i][j]=(c[i-][j]+c[i-][j-]);
}
}
}
BestCoder Round #83的更多相关文章
- HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树
zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...
- hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Ot ...
- BestCoder Round #89 02单调队列优化dp
1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01 HDU 5944 水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...
- BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元
BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy Init函数 然后统计就ok B. 博弈 题 不懂 推了半天的SG..... 结果这 ...
- bestcoder Round #7 前三题题解
BestCoder Round #7 Start Time : 2014-08-31 19:00:00 End Time : 2014-08-31 21:00:00Contest Type : ...
- Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- 暴力+降复杂度 BestCoder Round #39 1002 Mutiple
题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...
随机推荐
- vs2010调试程序出现“Cannot find or open the PDB file”
项目中源程序编写好以后, (一个简单的小程序) #include int main(void) { int age; int day; age = 24; printf("tom is %d ...
- JS判断客户端是手机还是PC的2个代码(转)
转载自:http://www.jb51.net/article/48939.htm Javascript 判断客户端是否为 PC 还是手持设备,有时候项目中需要用到,很方便的检测,源生的哦,方法一共有 ...
- 最牛逼android上的图表库MpChart(三) 条形图
最牛逼android上的图表库MpChart三 条形图 BarChart条形图介绍 BarChart条形图实例 BarChart效果 最牛逼android上的图表库MpChart(三) 条形图 最近工 ...
- 【leetcode】Partition List(middle)
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- Quatre 2D的绘图功能的三个步骤(上下文,绘图,渲染)
一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: ( ...
- ppt动画制作bullets
动画->效果选项->作为一个对象 这样之后,字总是在一段时间后就自己出来,而不是我们点一下再出来,解决方法是对同一段字重复设置,后面那个会默认是点一下,出一张,在把之前的动画删除即可.
- python 取两数的百分比
Python (r266:, Jan , ::) [GCC (Red Hat -)] on linux2 Type "help", "copyright", & ...
- 如何使用Case进行简单判断
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...
- 玩转SSRS第九篇---匿名访问的一个间接方法
SSRS是一个功能丰富的报表平台,我们可以在这个平台上实现各种不同需求的报表应用,所以这个平台也吸引了很多.net框架之外的技术,希望能在应用中引入SSRS的报表,比如JSP或者PHP页面,这个时候系 ...
- 攻城狮在路上(壹) Hibernate(十四)--- Hibernate的检索方式(下)
本节介绍HQL和QBC的高级用法:各种连接查询.投影查询.报表查询.动态查询.集合过滤和子查询等.另外将归纳优化查询程序代码,从而提高查询性能的各种技巧.一.连接查询: HQL与QBC支持的各种连接类 ...