第一次做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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. BestCoder Round #89 02单调队列优化dp

    1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01  HDU 5944   水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...

  4. BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元

    BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy  Init函数 然后统计就ok B. 博弈 题  不懂  推了半天的SG.....  结果这 ...

  5. bestcoder Round #7 前三题题解

    BestCoder Round #7 Start Time : 2014-08-31 19:00:00    End Time : 2014-08-31 21:00:00Contest Type : ...

  6. 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 ...

  7. Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  8. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  9. 暴力+降复杂度 BestCoder Round #39 1002 Mutiple

    题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...

随机推荐

  1. ZipArchive和SSZipArchive使用详解

    一.SSZipArchive 1.简介 SSZipArchive是iOS和Mac上一个简单实用的压缩和解压插件.用途包括:1.解压zip文件:2.解压密码保护的ZIP文件:3.创建新的zip文件:4. ...

  2. Mac shell 添加VPN 路由

    苦于每次使用内网VPN,都需要手动添加route来设置网络的映射,才可以正常使用VPN. 每次都需要自动添加,当然就是觉得很烦,想到Mac的shell.反正每次添加的时候都是在终端执行添加路由.为了方 ...

  3. jquery after append appendTo三个函数的区别

    jq文档的说明是 1.after函数 定义和用法: after() 方法在被选元素后插入指定的内容. 语法: $(selector).after(content) 实例: <html> & ...

  4. Json数据报错

    在Json数据解析的时候报错,如下图: 这里的id,code,A1等等,都应该使用双引号,即:"id","code","A1",假如id后面 ...

  5. Google140道面试题

    FQ找来,可能历史比较悠久了,慢慢看. 原文连接:http://www.impactinterview.com/2009/10/140-google-interview-questions/ Goog ...

  6. Lattice 的 DDR IP核使用调试笔记之DDR 的 仿真

    —— 远航路上ing 整理于 博客园.转载请标明出处. 在上节建立完工程之后,要想明确DDR IP的使用细节,最好是做仿真.然后参考仿真来控制IP 核. 仿真的建立: 1.在IP核内的以下路径找到以下 ...

  7. self和parent的用法

    总结 self  , parent 的用法               只能用在类的内部 self  本类  (不要理解成本对象) parent 父类 在引入自身的静态属性/静态方法 以及父类的方法时 ...

  8. DNS原理

    DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...

  9. web.config详解 -- asp.net夜话之十一

    1.配置文件节点说明    1.1 <appSettings>节点    1.2 <connectionStrings>节点    1.3 <compilation> ...

  10. Delphi运算符总结

    分类 运算符 操作 操作数 结果类型 范例 算术运算符(加法.减法和乘法运算符的结果为参加运算的两个数据中的精度高的类型) + 加 整数,实数 整数,实数 X + Y - 减 整数,实数 整数,实数 ...