A题 Oracle

http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=703&pid=1001

大数相加:

rec[p]=;
rec[]+=k;
;i<p;i++)
)  rec[i] = rec[i] - ,rec[i+] ++ ;
)
 printf("%d",rec[p]);
 #include <cstdio>
 #include <cstring>
 ;
 int rec[maxn];
 ];
 int main()
 {
     int T;
     scanf("%d",&T);
     getchar();
     while(T--)
     {
         memset(num,,sizeof(num));
         char ch=getchar();
         ;//记录非零数的数量
         ')
         {
             ') cnt++;
             num[ ch-' ]++;
             ch=getchar();
         }
         )
         {
             printf("Uncertain\n");continue;
         }

         ;
         while (!num[k])
             k++;
         num[k]--;

         ;
         ;i<=;i++)
         {
             while(num[i])
             {
                 rec[p++] = i;
                 num[i]--;
             }
         }
         rec[p]=;
         rec[]+=k;
         ;i<p;i++)
             )  rec[i] = rec[i] - ,rec[i+] ++ ;
         )
             printf("%d",rec[p]);

         ;i>=;i--)
             putchar('+rec[i]);
         puts("");

     }
     ;
 }

B题  Arrange

http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=703&pid=1002

根据B和C数组的改变,可以推测出A数组中原序列的值。

①B数组不变,C数组变大,A[i] = C[i],可供挑选数字,增加 C[i] - C[i-1] - 1 个。

②C数组不变,B数组变小,A[i] = B[i],可供挑选数字,增加 B[i-1] - B[i] - 1 个。

③B,C数据均不变,计算一下可能的种类数

④其余情况,均说明不存在合法序列

 #include <cstdio>
  + ;
 ;
 int B[maxn],C[maxn];
 int main()
 {
     int T;
     scanf("%d",&T);
     while(T--)
     {
         int n;
         scanf("%d",&n);
         ;i < n;i++)
             scanf("%d",&B[i]);
         ;i < n;i++)
             scanf("%d",&C[i]);
         ;
         ] != C[])    flag = ;
         ;//remain
         ;
         ;i < n;i++)
         {
             ] && C[i] == C[i-])
             {
                 )    {flag = ;break;}
                 else {ans = ans * rem % mod; rem--;}
             }
             ] && C[i] > C[i-]){rem = rem + C[i] - C[i-] - ;}
             ] && C[i] == C[i-]){rem = rem + B[i-] - B[i] - ;}
             ;break;}
         }
         )   {printf("0\n");continue;}
         printf("%I64d\n",ans);
     }
     ;
 }

C题Wool

http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=703&pid=1003

假设我们需要加入的边为c,若abc构成一个三角形,若要使c的可选择范围最小,那么即 a-b 到 a+b的范围最大(假设a>=b)

可以通过数学,发现,显然当a确定的时候,b越大,这个范围越大,所以我们对a数组进行排序后,记录相邻两个ai的a-b和a+b。

再对结点node进行排序之后,这道题的核心代码部分

ll rem=,cur_ri=L-;//longlong写成int
;i<=n;i++)
{
    )
    {
        ll l1 = cur_ri + ;
        ll r1 = node[i].left - ;
        if(l1 > R || r1 < L) continue;
        rem = rem + min(R,r1) - max(L,l1) + ;
    }
    if(cur_ri < node[i].right)  cur_ri = node[i].right;
}                                                
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <algorithm>
 using namespace std;
  + ;
 typedef long long ll;
 int n;
 ll L,R;
 ll a[maxn];
 struct Node
 {
     ll left,right;
 }node[maxn];
 bool cmp(const Node&a,const Node&b)
 {
     return a.left<b.left || ( (a.left == b.left) && (a.right < b.right) );
 }
 int main()
 {
     int T;
     cin>>T;
     while(T--)
     {
         cin>>n>>L>>R;
         ;i<n;i++)
             cin>>a[i];
         sort(a,a+n);

         ;i<n;i++)
         {
             node[i].left=a[i]-a[i-]+;
             node[i].right=a[i]+a[i-]-;
         }
         node[n].left = 2e18;
         sort(node+,node++n,cmp);

         ll rem=,cur_ri=L-;
         ;i<=n;i++)
         {
             )
             {
                 ll l1 = cur_ri + ;
                 ll r1 = node[i].left - ;
                 if(l1 > R || r1 < L) continue;
                 rem = rem + min(R,r1) - max(L,l1) + ;
             }
             if(cur_ri < node[i].right)  cur_ri = node[i].right;
         }
         cout<<rem<<endl;
     }
     ;

BestCoder 2nd Anniversary的更多相关文章

  1. BestCoder 2nd Anniversary的前两题

    Oracle Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Su ...

  2. hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5719 题意:一个数列为1~N的排列,给定mn[1...n]和mx[1...n],问有符合的排列数为多少 ...

  3. hdu 5720 BestCoder 2nd Anniversary Wool 推理+一维区间的并

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720 题意:有n(n <= 105)个数 ,每个数小于等于 1018:问在给定的[L,R]区间中 ...

  4. BestCoder 2nd Anniversary 1001 Oracle

    找到最小的非零数字拆开来相加. 高精度. #include <iostream> #include <cstdio> #include <cstring> #inc ...

  5. BestCoder 2nd Anniversary 1002 Arrange

    排除所有不符合条件后根据当前位置上下界计算, 由于前面取的数肯定在之后的区间内,所以去掉已取的个数即可. #include <iostream> #include <cstdio&g ...

  6. BestCoder 2nd Anniversary/HDU 5719 姿势

    Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...

  7. BestCoder 2nd Anniversary/HDU 5718 高精度 模拟

    Oracle Accepts: 599 Submissions: 2576 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/26 ...

  8. 二分图点染色 BestCoder 1st Anniversary($) 1004 Bipartite Graph

    题目传送门 /* 二分图点染色:这题就是将点分成两个集合就可以了,点染色用dfs做, 剩下的点放到点少的集合里去 官方解答:首先二分图可以分成两类点X和Y, 完全二分图的边数就是|X|*|Y|.我们的 ...

  9. BestCoder 1st Anniversary($) 1003 Sequence

    题目传送门 /* 官方题解: 这个题看上去是一个贪心, 但是这个贪心显然是错的. 事实上这道题目很简单, 先判断1个是否可以, 然后判断2个是否可以. 之后找到最小的k(k>2), 使得(m-k ...

随机推荐

  1. hibernate-cache

    hibernate缓存分:一级缓存.二级缓存.三级缓存 一级缓存:Session内的缓存 实例: /*一级缓存: * session内的缓存 * */ @Test public void test1( ...

  2. QQ等级表

    什么是QQ等级呢? 2003年,腾讯公司推出了QQ等级制度 . 最早是以小时,来计算的,那段时间,绝大部分QQ用户都在挂QQ,之后就有不少媒体指责其浪费能源,在有关部门的介入下,腾讯公司将QQ等级变为 ...

  3. 平面内,线与线 两条线找交点 两条线段的位置关系(相交)判定与交点求解 C#

    个人亲自编写.测试,可以正常使用   道理看原文,这里不多说   网上找到的几篇基本都不能用的   C#代码 bool Equal(float f1, float f2) { return (Math ...

  4. "Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法

    系统win7 32位,只在这一台电脑上出现这种问题,已知VS编译是X86,在数台电脑上测试都正常. 后来把opencv的dll路径例如 E:\...\x86  加入到系统环境变量中就正常了. emgu ...

  5. OC JS交互(通常情况下,如果网页写得正规的话,是可以正常交互的,之前就遇到后台写h5始终拿不到事件,元素也拿不到,更别说交互了,真是奇了怪了)

    自动填充表单 @"document.getElementById('loginid').value = '这里填入你的用户名';document.getElementById('userpa ...

  6. 6Hibernate进阶----青软S2SH(笔记)

    关于关联关系的配置,用注解配置如下(这里引用的jar包是javax.persistence) // @ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch= ...

  7. 在Activity之间传递参数(三)——serializable和parcelable的区别

    传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...

  8. 1、Jsp页面

    一.JSP(java server page):是以Java语言为基础的动态网页生成技术. 1.特点: a).以 .jsp 为后缀的文本文件,不需要编译(相对于程序猿来说不需要编译) b).以html ...

  9. [Linux] 账户管理命令(一)

    用户和用户组 Linux用户组的所有信息都存放在/etc/group文件中.具有某种共同特征的用户集合起来就是用户组(Group).用户组(Group)配置文件主要有 /etc/group和/etc/ ...

  10. linuxmint 17没有vim

    首先上软件管理器中安装vim,之后配置.vimrc文件 下面是从网上摘抄的配置文件: """""""""&qu ...