hulu2018公司笔试编程题
|
时间限制:C/C++语言 1000MS;其他语言:3000MS 内存限制:65536KB;其他语言:589824KB |
题目描述:
|
给定一个正整数组a,返回一个新的数组Sums,满足sums[i]的值为a重笔a[i]小的数字之和,如果不存在比a[i]小的数字,则sums[i]为0, 已知数组a中元素最大值不超过100000,数组长度不超过10000,数组元素允许重复。 |
输入
第一行为证书n,表示数组的长度 接下的n行数字表示数组里的元素
输出
正整数数组sums,使得sunms长度与a长度相同
样例输出
4 5 4 2 9
样例输出
6 2 0 11
非正规答案,作为参考:
#include<iostream>
#include <vector>
#include<map>
int main() {
std::map<unsigned long long, unsigned long long> m;
unsigned long long n;
std::cin >> n;
if (n == 0) return 0;
std::vector<unsigned long long> input(n);
for (unsigned long long i = 0; i < n; i++) {
std::cin >> input[i];
if (m.find(input[i]) == m.end()) {
m[input[i]] = input[i];
} else {
m[input[i]] += input[i];
}
}
unsigned long long sum = 0;
for (auto iter = m.begin(); iter != m.end(); iter++) {
unsigned long long second = iter->second;
m[iter->first] = sum;
sum += second;
}
for (unsigned long long i = 0; i < n; i++) {
std::cout << m[input[i]] << std::endl;
}
return 0;
}
|
时间限制:C/C++语言 1000MS;其他语言:3000MS 内存限制:131072KB;其他语言:655360KB |
题目描述:
|
给定一个圆,圆心在原点。给定圆上一组点a[i] (i=1,2,……n),各点互相不重复,且用x轴正方向逆时针转至与该点所在半径重合时所转角度的100倍(整数)表示,取值范围是(0,36000), 我们可以从这组点钟任选三点组成一个三角形,请问最多可以组成多少个三角形? |
输入
第一行为为一个正整数,n<=1000. 接下来n行,每一行有一个整数,每个数表示在圆边上的一个点。 输出 任选三点,可以组成钝角三角形的数量
样例输入
4 0 10000 12000 18000
样例输出
2
hint
补充样例 输入样例乙 4 9 0 27000 18000 输出样例乙 0
非正规答案,作为参考:
#include<iostream>
#include <vector>
int main() {
int n;
std::cin >> n;
std::vector<int> input(n);
std::vector<int> B(36000, 0);
for (int i = 0; i < n; i++) {
std::cin >> input[i];
B[input[i]]++;
}
for (int i = 1; i < 36000; i++) {
B[i] += B[i-1];
}
unsigned long long rst = 0;
int i = 0;
for (; i < n; i++) {
unsigned long long howmany = 0;
if (input[i] < 18000) {
howmany = B[input[i]+17999] - B[input[i]];
} else if (input[i] == 18000) {
howmany = B[35999]-B[18000];
} else {
howmany = B[35999] - B[input[i]] + B[input[i]-18001];
}
rst += howmany*(howmany-1)/2;
}
std::cout << rst;
return 0;
}

// 3
#include <iostream>
#include <map>
#include <vector>
#include <queue>
int main() {
unsigned int m, n, k;
std::cin >> m >> n >> k;
std::vector<unsigned int> has_rely(m+1, 0);
std::map<unsigned int, std::vector<unsigned int>> key_release_value;
for (unsigned int i = 0; i < k; i++) {
unsigned int a, b;
std::cin >> a >> b;
if (key_release_value.find(b) == key_release_value.end()) {
std::vector<unsigned int> v;
v.push_back(a);
key_release_value[b] = v;
} else {
key_release_value[b].push_back(a);
}
has_rely[a]++;
}
std::priority_queue<unsigned int, std::vector<unsigned int>, std::greater<unsigned int>> can_do;
for (unsigned int i = 1; i <= m; i++) {
if (has_rely[i] == 0) {
can_do.push(i);
}
}
unsigned int count = 0;
unsigned int days = 0;
while (true) {
if (can_do.size() == 0) {
if (count != m) {
std::cout << 'E';
} else {
std::cout << days;
}
return 0;
}
std::vector<unsigned int> fresh_new;
unsigned int poped = 0;
while (can_do.size() != 0) {
poped++;
unsigned int job_idx = can_do.top();
can_do.pop();
fresh_new.push_back(job_idx);
if (poped == n) break;
}
count += poped;
days++;
for (auto released : fresh_new) {
for (auto can_release : key_release_value[released]) {
has_rely[can_release]--;
if (has_rely[can_release] == 0) {
can_do.push(can_release);
}
}
}
}
}
代写CS&Finance|建模|代码|系统|报告|考试
编程类:C代写,JAVA代写 ,数据库代写,WEB代写,Python代写,Matlab代写,GO语言,R代写
金融类:统计,计量,风险投资,金融工程,R语言,Python语言,Matlab,建立模型,数据分析,数据处理
服务类:Lab/Assignment/Project/Course/Qzui/Midterm/Final/Exam/Test帮助代写代考辅导
天才写手,代写CS,代写finance,代写statistics,考试助攻
E-mail:[email protected] 微信:BadGeniuscs 工作时间:无休息工作日-早上8点到凌晨3点
如果您用的手机请先保存二维码到手机里面,识别图中二维码。如果用电脑,直接掏出手机果断扫描。

