BestCoder 2nd Anniversary
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的更多相关文章
- BestCoder 2nd Anniversary的前两题
Oracle Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Su ...
- hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5719 题意:一个数列为1~N的排列,给定mn[1...n]和mx[1...n],问有符合的排列数为多少 ...
- hdu 5720 BestCoder 2nd Anniversary Wool 推理+一维区间的并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720 题意:有n(n <= 105)个数 ,每个数小于等于 1018:问在给定的[L,R]区间中 ...
- BestCoder 2nd Anniversary 1001 Oracle
找到最小的非零数字拆开来相加. 高精度. #include <iostream> #include <cstdio> #include <cstring> #inc ...
- BestCoder 2nd Anniversary 1002 Arrange
排除所有不符合条件后根据当前位置上下界计算, 由于前面取的数肯定在之后的区间内,所以去掉已取的个数即可. #include <iostream> #include <cstdio&g ...
- BestCoder 2nd Anniversary/HDU 5719 姿势
Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...
- BestCoder 2nd Anniversary/HDU 5718 高精度 模拟
Oracle Accepts: 599 Submissions: 2576 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/26 ...
- 二分图点染色 BestCoder 1st Anniversary($) 1004 Bipartite Graph
题目传送门 /* 二分图点染色:这题就是将点分成两个集合就可以了,点染色用dfs做, 剩下的点放到点少的集合里去 官方解答:首先二分图可以分成两类点X和Y, 完全二分图的边数就是|X|*|Y|.我们的 ...
- BestCoder 1st Anniversary($) 1003 Sequence
题目传送门 /* 官方题解: 这个题看上去是一个贪心, 但是这个贪心显然是错的. 事实上这道题目很简单, 先判断1个是否可以, 然后判断2个是否可以. 之后找到最小的k(k>2), 使得(m-k ...
随机推荐
- jQuery 复习
jQuery 复习 基础知识 1, window.onload $(function(){}); $(document).ready(function(){}); 只执行函数体重的最后一个方法,事 ...
- JQuery事件之鼠标事件
鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. ():click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发. $('p').click(function( ...
- SQL case
case when Value='1' then 'True' else 'False' end as 'Result'
- JVM大端判断
JVM采用大端方式存多字节的数据,判断方法如下: public static void bytesToInt() throws IOException { /** * 将字节数组(byte[])转为整 ...
- 如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?
如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); pri ...
- JavaScript 代码风格指南
一.基本格式 缩进 建议每级4个空格,可以给编辑器设置tab = 4个空格,自动转换 分号 不要省略分号,防止ASI(自动插入分号)错误 行宽 每行代码不超过80个字符,过长应该用操作符手动断行 断行 ...
- 超简单,安卓模拟器手动root
本文转载自:http://quantoubao.blog.163.com/blog/static/2083211702013870501987/ 安装Android SDK安卓模拟器的方法很简单,网上 ...
- 2015-9月份,Android开发,面试题总结,主要记录没有答出来的问题
9月13日,秒针面试(跪) 1.使用HTML5写Android 与本地应用比较 9月21日,百度一面(跪)1.Android的整个启动过程,什么阶段启动了什么进程,或者服务 2.Android系统框架 ...
- 告别我的OI生涯
本文章写于2008年12月15日. 随着2008noip的结束,我也结束了我的OI生涯. 信息竞赛也许是从小到大让我最最努力的一件事.我记得参加2006noip初赛前,每天中午为了上信息课都吃不上中午 ...
- mui问题
2016.7.27 1.当你的html不在文件夹的时候 引路径就不要加../ 2.当用svn提交代码的时候要先右键项目->版本管理->与资源库同步,查看你的修改的地方和原来部署上去的文 ...