SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数
1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11
2.分成整数部分和小数部分分别存储,貌似不可以
方法:离散化 + 每个位置的所有的值排序(上升)[避免采用树状数组时误算] + 树状数组统计之前比x大的数目( F(max_index) - F(x) )
话说:
1.125
printf("%.2lf“,x); output:1.12
用c++的setprecision也是输出1.12
话说如果真的是四舍五入的话,采用printf("%.2lf",x+0.005);
但这题不知道怎么样,应该直接printf("%.2lf“,x);就可以了~
下面代码未过,以后再改:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iomanip>
#include <iostream> using namespace std; struct node
{
long double p;
long long a;
}point[]; map<long,long> inde;
long long num[];
long d[];
long double f[];
long double re=; bool cmp(const node a,const node b)
{
return a.a<b.a;
} int main()
{
long n,i,j,k,ind,gg,g;
scanf("%ld",&n);
for (i=;i<=n;i++)
scanf("%ld",&d[i]); gg=;
for (i=;i<=n;i++)
{
for (j=;j<=d[i];j++,gg++)
{
scanf("%llf%lld",&point[gg].p,&point[gg].a);
// cin>>point[gg].p>>point[gg].a;
num[gg]=point[gg].a;
}
sort(point+gg-d[i],point+gg,cmp);
}
sort(num+,num+gg); inde.clear();
g=;
for (i=;i<gg;i++)
if (i== || num[i]!=num[i-])
{
g++;
inde[num[i]]=g;
} for (i=;i<=g;i++)
f[i]=; gg=;
for (i=;i<=n;i++)
{
for (j=;j<=d[i];j++,gg++)
{
ind=inde[point[gg].a];
k=ind;
while (k>=)
{
re=re-f[k]*point[gg].p;
k=k-(k & (-k));
} k=g;
while (k>=)
{
re=re+f[k]*point[gg].p;
k=k-(k & (-k));
} k=ind;
while (k<=g)
{
f[k]=f[k]+point[gg].p;
k=k+(k & (-k));
}
}
} printf("%.2llf\n",re+0.005);//?? return ;
}
/*
2
4 4
0.25 1 0.25 2 0.25 4 0.25 3
0.25 1 0.25 3 0.25 2 0.25 4 3
4 4 4
0.25 1 0.25 2 0.25 4 0.25 3
0.25 1 0.25 3 0.25 2 0.25 4
0.25 1 0.25 3 0.25 2 0.25 4 2
1 1
1 1
1 0 3
5 2
0.1 0 0.2 1 0.3 2 0.2 3 0.2 4
0.6 10 0.4 -5 3
5 2
0.3 1 0.3 1 0.2 2 0.1 0 0.1 4
0.7 2 0.3 1 10
1 1 1 1 1 1 1 1 1 1
1 10
1 9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1 5
1 1 1 1 1
1 1073741824
1 -1073741823
1 -1073741823
1 1073741824
1 1073741824 3
3 1 2
0.5 -1 0.25 1 0.25 0
1 2
0.5 -1 0.5 1 2
5 5
0.2 5 0.2 4 0.2 3 0.2 2 0.2 1
0.2 1 0.2 2 0.2 3 0.2 4 0.2 5 2
1 1
0.12345 2
0.34214 1 2
3 3
0 1 0 1 1 2
0 -1 1 1 0 -100 1
5
0.2 1 0.1 -2 0.3 -1 0.1 1 0.3 5 2
5 5
0.2 -10 0.2 -10 0.2 -10 0.2 -10 0.2 -10
0.2 -10 0.2 -10 0.1 -20 0.1 -20 0.4 30 */
SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数的更多相关文章
- SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站
//其实比赛的时候就想到这方法了,但看到数据太吓人,就没写//看着标程,实际上就是这方法,太坑爹…… /* 假设值为k,对于图中任意两点,圆1半径k/t1,圆2半径k/t2 圆1与圆2的交集为可以设置 ...
- SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 D. 白色相簿
从某一点开始,以层次遍历的方式建树若三点a.b.c互相连接,首先必先经过其中一点a,然后a可以拓展b.c两点,b.c两点的高度是相同的,若b(c)拓展时找到高度与之相同的点,则存在三点互相连接 //等 ...
- SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*
题目链接 Problems Problem A Problem B bitset…… Problem C Problem D Problem E Problem F Problem G 考虑最小生 ...
- 商汤科技汤晓鸥:其实不存在AI行业,唯一存在的是“AI+“行业
https://mp.weixin.qq.com/s/bU-TFh8lBAF5L0JrWEGgUQ 9 月 17 日,2018 世界人工智能大会在上海召开,在上午主论坛大会上,商汤科技联合创始人汤晓鸥 ...
- 2019 计蒜之道 初赛 第一场 商汤AI园区的n个路口(中等) (树形dp)
北京市商汤科技开发有限公司建立了新的 AI 人工智能产业园,这个产业园区里有 nn 个路口,由 n - 1n−1 条道路连通.第 ii 条道路连接路口 u_iui 和 v_ivi. 每个路口都布有 ...
- 旷视向左、商汤向右,AI一哥之名将落谁家
编辑 | 于斌 出品 | 于见(mpyujian) AI风口历经多年洗礼之后,真正意义上的AI第一股终于要来了. 相比于聚焦在语音识别技术上的科大讯飞.立足互联网产业的百度.发力人形机器人领域的优必选 ...
- 计蒜客 第四场 C 商汤科技的行人检测(中等)平面几何好题
商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等.在行人检测问题中,最重要的就是对行人移动的检测.由于往往是在视频监控数据中检测行人,我们将图像上的行人抽 ...
- 算法与数据结构(2)--英雄会第三届在线编程大赛:几个bing
基础知识的回顾不再写到这里面了,会写一些算法算法的解答或者读一些相关书籍的笔记. 今天做了一道算法题,来自微软必应·英雄会第三届在线编程大赛:几个bing? 做出来了...但不知道为啥执行测试用例失败 ...
- csdn在线编程里面的一个排列组合题
是csdn在线编程里面的一个问题 回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串. 输入:非空仅由小写字母组成的字符 ...
随机推荐
- 从一个简单的寻路问题深入Q-learning
这第一篇随笔实际上在我的科学网博客上是首发,我重新拿到博客园再发一次是希望以此作为我学习Q-learning的一个新的开始.以后这边主技术,科学网博客主理论.我也会将科学网那边技术类的文章转过来的.希 ...
- Trait 是什么东西
PHP官方手册里面写的内容是 自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait. Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.Trait 为了减少 ...
- Django_rest_framework_基础
简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用 ...
- Teamproject Week7 --Scrum Meeting #1 2014.10.28
这是团队的第一次会议,具体议题如下: 1)我们明确了团队成员的职责所需: PM职责:根据项目范围.质量.时间与成本的综合因素的考虑,进行项目的总体规划与阶段计划. 控制项目组各成员的工作进度,即时了 ...
- 2018-2019-20172321 《Java软件结构与数据结构》第九周学习总结
2018-2019-20172321 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 第15章 图 无向图 图由顶点和边组成. 顶点由名字或标号来表示,如:A.B.C.D: ...
- iOS 开发学习-import和include的区别
//当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 //但是使用两次#import的话,不会报错,所以他可以解决重复导入的 ...
- static 继承
静态方法大家应该都比较熟悉,在这里主要谈一下静态方法在继承时的一些注意事项. 1.父类方法如果是静态方法,子类不能覆盖为非静态方法: 2.父类方法如果是非静态方法,子类不能覆盖为静态方法: 3.父类静 ...
- 汇编语言段和RSEG用法
RSEG是段选择指令,要想明白它的意思就要了解段的意思.段是程序代码或数据对象的存储单位.程序代码放到代码段,数据对象放到数据段.段分两种,一是绝对段,一是再定位段.绝对段在汇编语言中指定,在用L51 ...
- grunt入门讲解6:grunt使用步骤和总结
Grunt是啥? 很火的前端自动化小工具,基于任务的命令行构建工具. Grunt能帮我们干啥? 假设有这样一个场景: 编码完成后,你需要做以下工作 HTML去掉注析.换行符 - HtmlMin CSS ...
- 【硬件】- 英特尔CPU命名规则
前言 一款Intel CPU的命名,一般由5个部分组成:品牌,品牌标识符,Gen标识,SKU数值,产品线后缀. 以下图为例: 品牌 英特尔旗下处理器有许多子品牌,包括我们熟悉的凌动(ATOM).赛扬( ...