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);就可以了~

下面代码未过,以后再改:

  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cstring>
  4 #include <cmath>
  5 #include <list>
  6 #include <stack>
  7 #include <vector>
  8 #include <set>
  9 #include <map>
 10 #include <queue>
 11 #include <algorithm>
 12 #include <iomanip>
 13 #include <iostream>
 14
 15 using namespace std;
 16
 17 struct node
 18 {
 19     long double p;
 20     long long a;
 21 }point[1000005];
 22
 23 map<long,long> inde;
 24 long long num[1000005];
 25 long d[1000005];
 26 long double f[1000005];
 27 long double re=0;
 28
 29 bool cmp(const node a,const node b)
 30 {
 31     return a.a<b.a;
 32 }
 33
 34 int main()
 35 {
 36     long n,i,j,k,ind,gg,g;
 37     scanf("%ld",&n);
 38     for (i=1;i<=n;i++)
 39         scanf("%ld",&d[i]);
 40
 41     gg=1;
 42     for (i=1;i<=n;i++)
 43     {
 44         for (j=1;j<=d[i];j++,gg++)
 45         {
 46             scanf("%llf%lld",&point[gg].p,&point[gg].a);
 47 //            cin>>point[gg].p>>point[gg].a;
 48             num[gg]=point[gg].a;
 49         }
 50         sort(point+gg-d[i],point+gg,cmp);
 51     }
 52     sort(num+1,num+gg);
 53
 54     inde.clear();
 55     g=0;
 56     for (i=1;i<gg;i++)
 57         if (i==1 || num[i]!=num[i-1])
 58         {
 59             g++;
 60             inde[num[i]]=g;
 61         }
 62
 63     for (i=0;i<=g;i++)
 64         f[i]=0;
 65
 66     gg=1;
 67     for (i=1;i<=n;i++)
 68     {
 69         for (j=1;j<=d[i];j++,gg++)
 70         {
 71             ind=inde[point[gg].a];
 72             k=ind;
 73             while (k>=1)
 74             {
 75                 re=re-f[k]*point[gg].p;
 76                 k=k-(k & (-k));
 77             }
 78
 79             k=g;
 80             while (k>=1)
 81             {
 82                 re=re+f[k]*point[gg].p;
 83                 k=k-(k & (-k));
 84             }
 85
 86             k=ind;
 87             while (k<=g)
 88             {
 89                 f[k]=f[k]+point[gg].p;
 90                 k=k+(k & (-k));
 91             }
 92         }
 93     }
 94
 95     printf("%.2llf\n",re+0.005);//??
 96
 97     return 0;
 98 }
 99 /*
100 2
101 4 4
102 0.25 1 0.25 2 0.25 4 0.25 3
103 0.25 1 0.25 3 0.25 2 0.25 4
104
105 3
106 4 4 4
107 0.25 1 0.25 2 0.25 4 0.25 3
108 0.25 1 0.25 3 0.25 2 0.25 4
109 0.25 1 0.25 3 0.25 2 0.25 4
110
111 2
112 1 1
113 1 1
114 1 0
115
116 3
117 5 2
118 0.1 0 0.2 1 0.3 2 0.2 3 0.2 4
119 0.6 10 0.4 -5
120
121
122 3
123 5 2
124 0.3 1 0.3 1 0.2 2 0.1 0 0.1 4
125 0.7 2 0.3 1
126
127 10
128 1 1 1 1 1 1 1 1 1 1
129 1 10
130 1 9
131 1 8
132 1 7
133 1 6
134 1 5
135 1 4
136 1 3
137 1 2
138 1 1
139
140 5
141 1 1 1 1 1
142 1 1073741824
143 1 -1073741823
144 1 -1073741823
145 1 1073741824
146 1 1073741824
147
148 3
149 3 1 2
150 0.5 -1 0.25 1 0.25 0
151 1 2
152 0.5 -1 0.5 1
153
154 2
155 5 5
156 0.2 5 0.2 4 0.2 3 0.2 2 0.2 1
157 0.2 1 0.2 2 0.2 3 0.2 4 0.2 5
158
159 2
160 1 1
161 0.12345 2
162 0.34214 1
163
164 2
165 3 3
166 0 1 0 1 1 2
167 0 -1 1 1 0 -100
168
169 1
170 5
171 0.2 1 0.1 -2 0.3 -1 0.1 1 0.3 5
172
173 2
174 5 5
175 0.2 -10 0.2 -10 0.2 -10 0.2 -10 0.2 -10
176 0.2 -10 0.2 -10 0.1 -20 0.1 -20 0.4 30
177
178 */

原文地址:https://www.cnblogs.com/cmyg/p/8764149.html

时间: 2024-10-08 10:01:46

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数的相关文章

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*

题目链接   Problems Problem A Problem B bitset…… Problem C Problem D Problem E Problem F Problem G 考虑最小生成树的时候, 合并两个点的时候就新建一个点,把这两个点都指向新的那个点. 然后给这两个点都打上delta标记. 最后dfs这棵新的树就好了. 原文地址:https://www.cnblogs.com/cxhscst2/p/8846711.html

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星

res[i][j]:i->{x1,x2,x3...}->j 的集合的异或值 c[i][j]:i->{x1,x2,x3...}->j 的集合中元素个数 flag[i][j][k]:k点是否在i->{x1,x2,x3...}->j 的集合中 #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<algorithm>

创业3年估值达300亿,商汤科技做对了什么?

4月9日上午,商汤科技SenseTime对外宣布完成6亿美元C轮融资.这是继去年七月宣布B轮融资4.1亿美元后,商汤科技再次获得的又一笔巨额融资. 据悉,商汤科技C轮融资由阿里巴巴集团领投,新加坡主权基金淡马锡.苏宁等投资机构和战略伙伴跟投.据外媒报道,商汤目前估值已超过45亿美金,近300亿人民币. 商谈科技由香港中文大学汤晓鸥.徐立师兄弟于2014年10月15创立,公司成立至今不过3年多时间.3年估值达300亿,我们不禁要问,商汤科技做对了什么? 一.注重人才储备 商汤科技创始人汤晓鸥是一个

计蒜客 第四场 C 商汤科技的行人检测(中等)平面几何好题

商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等.在行人检测问题中,最重要的就是对行人移动的检测.由于往往是在视频监控数据中检测行人,我们将图像上的行人抽象为二维平面上若干个的点.那么,行人的移动就相当于二维平面上的变换. 在这道题中,我们将行人的移动过程抽象为 旋转.伸缩.平移,有 44 个 移动参数:\theta, scale, d_x,d_yθ,scale,d?x??,d?y??.每次行人的移动过程会将行人对应的 nn 个点全部依次应用旋转.伸

商汤科技:“天地人”三才阵 进击AI顶级巅峰

2017年末,整个产业圈,变成了人工智能的赛场. 先是12月15日,工信部印发AI三年行动计划,力争到2020年,推进人工智能核心技术和标志性产品形成国际竞争优势:随即,王健林表示万达未来主要研究方向是人工智能:而在此前乌镇的世界互联网大会上,阿里巴巴马云.腾讯马化腾.百度李彦宏和苹果的库克更是忙不迭的全程谈论着"All in AI". 就在巨头们还在探讨着行动方向时,刚刚获得国际通讯巨头高通战略投资的商汤科技则已经悄然完成一系列产业布局,并进入实战领域.12月初,商汤科技与本田达成战

商汤AI园区的n个路口(中等)

商汤AI园区的n个路口(中等) 思路:设f(x,y)表示以x为根的子树,x点值为y时,且满足条件的方案数,那么状态转移很好想,就是dfs回溯到父亲结点时,枚举父亲结点的y值.f(x,y)父亲结点的方案数,就是对于每个儿子满足条件的方案数相乘,对于这题还需要一个优化,预处理gcd,提前得到每个数字已知最大公因数时另一个数字的集合,对于每个儿子的方案数,就是儿子每个值的总方案数-不满足条件值的方案数. #include<bits/stdc++.h> using namespace std; con

Java 商汤面试

大三找实习花了大概半个月的时间,最后选择了商汤,因为面试体验最好,从第一轮面试到拿到口头 offer 只用了两天,第二轮结束两个小时就发了,正式 offer 也仅用了两天,感觉效率很高,而且也算是一个不错的成长平台. 我面试的是 Java 后台开发,一共两轮技术面,整体难度适中,面试官很和蔼,而且在我不会的时候也很耐心地引导. 很多问题记不太清了,就尽量写吧. 第一轮 1.简述 Java 的核心特性封装.继承.多态,简单解释一下就可以,顺便解释了下 Java 反射. 2.简述重写和重载 3.Ha

在线编程及其学习平台

在线编程(itbegin)是指不需要经过安装编程的环境,直接在互联网浏览器上编写程序,并且可以运行出结果. 在线编程的原理比较复杂,因为其涉及web前端以及后端编译系统.Web前端需要提供用户代码录入,行号.高亮语法.自动补全功能,并需要使用异步更新(Ajax) 的方法来实现上述功能.后端编译系统接收到用户的代码,并调用正确的编译器进行编译并将结果返回前端进行显示. 在线编程网站: 1.codepad:http://codepad.org/ 该网站只支持英文,支持C/C++/D/Haskell,

10个面向程序员的在线编程网站

在过去的几年里,在互联网上出现了许多为开发人员提供的在线编程网站(Coding playgrounds).这不是一件坏事情,毕竟,如果一个编程网站的话,开发者们迟早会腻的.在这些网站上,你在网页上编写代码,可以实时地看到效果.你可以编辑所有的东西并预览其效果.当然,这些网站最适合编写HTML,CSS和JavaScript代码了.最赞的地方在于他们大多都是免费的,你可以很容易地与别人分享你的编程现场,这很适合于团队工作和创新想法的交流. 如果你深入地想想这种编程模式的话,你就会发现这种模式对于项目