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 ...
随机推荐
- android 手机去哪儿7.2版本客户端 账号存储信息分析
1.data/data/com.qunar sharepref 文件夹下的Qunarperferences.xml文件中 username,phone等均为加密处理过字段 2.jdgui下查找关键 ...
- 刚开始用git遇到的无法提交变更的问题
原来我在目录里打开命令行,git bash默认执行的目录是c:/users了,错误的使用了git init,把$HOME 路径下的所有文件载入 git 仓库了,删除$HOME 路径下的".g ...
- php以pdo方式连接sqlserver,无法开启sqlsrv扩展
首先,PHP连接sqlserver代码如下: $host="aaaaa"; $dbname="aaaaa"; $user="aaaaa"; ...
- 【团队项目选题】自选项目:桌游APP
由于我们团队的黄金点游戏结果是第二名,按理说是一定能选到一个自选项目的,所以以下只列出我们选择的自选项目 自选项目名称 桌游APP 暂定 (名字还没想好) 项目大致介绍 此APP集成了多种桌游,主 ...
- [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题
现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...
- loadrunner关联取参--响应值unicode编码处理过
背景:做电商提交订单,需要获取订单号,然后进行支付.状态变更等操作 submitOrder() { lr_think_time(); /* 提交订单 */ /* specsId:规格ID,hyh_go ...
- hibernate-cascade级联关系
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBL ...
- U盘启动盘的制作--用U盘硬装Windows系统、或是重装Windows系统
借助IT天空的优启通U盘启动盘的制作--用U盘装Windows系统.或是重装Windows系统之U盘启动盘的制作 1.==================================== 2.== ...
- 一个类似宣传的H5页面
趁着闲置 做了一个H5的页面 感觉不错. 具体效果如下 框架上我选择 zepto(其实这个可有可无,推荐用原生的最好) FullPage (感觉挺好用的一个全屏滚动插件 ) pageResponse ...
- Xshell个性化设置,解决Xshell遇到中文显示乱码的问题
在同事的推荐下,今天开始使用Xshell连接Linux,但是发现一个“遇到中文显示乱码”的问题, 同事的解决方案如下: 平常给Linux上传文件之前,先把文件转换成UTF-8编码形式, 然后设置Xsh ...