关注
第一题我记得是100%。思路是预读入所有查询,然后由小到大排序。再从小到大遍历一遍所有区间,边遍历边从排好序的查询中不断拿出这区间的查询。 public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
for (int i = 0; i < n; ++i) {
a[i] = sc.nextInt();
}
int apl[] = new int[n];
apl[0] = a[0];
for (int i = 1; i < n; ++i) {
apl[i] = apl[i - 1] + a[i];
}
int m = sc.nextInt();
Node nodes[] = new Node[m];
for (int i = 0; i < m; ++i) {
int c = sc.nextInt();
nodes[i] = new Node(c, i);
}
Arrays.sort(nodes, new Node(0, 0));
int cur = 0;
for (int i = 0; i < n; ++i) {
int left = i == 0 ? 1 : apl[i - 1] + 1;
int right = apl[i];
while (nodes[cur].value <= right && nodes[cur].value >= left) {
nodes[cur].ord = i + 1;
nodes[cur].value = nodes[cur].index;
if (++cur == m)
break;
}
if (cur == m)
break;
}
Arrays.sort(nodes, new Node(0, 0));
for (int i = 0; i < m; ++i)
System.out.println(nodes[i].ord);
}
}
class Node implements Comparator<Node> {
int value;
int index;
int ord;
public Node(int a, int b) {
value = a;
index = b;
}
public int compare(Node o1, Node o2) {
return o1.value - o2.value;
}
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
查看6道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招至今,你的战绩如何? #
2003次浏览 17人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
6662次浏览 34人参与
# MiniMax求职进展汇总 #
22225次浏览 283人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186160次浏览 1112人参与
# 简历第一个项目做什么 #
31066次浏览 299人参与
# 网易游戏笔试 #
6217次浏览 83人参与
# 巨人网络春招 #
10996次浏览 198人参与
# 职能管理面试记录 #
10564次浏览 59人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
6611次浏览 153人参与
# 简历中的项目经历要怎么写? #
308990次浏览 4124人参与
# 小红书求职进展汇总 #
226650次浏览 1355人参与
# 你的房租占工资的比例是多少? #
92081次浏览 896人参与
# 腾讯音乐求职进展汇总 #
160225次浏览 1104人参与
# AI时代,哪些岗位最容易被淘汰 #
61723次浏览 695人参与
# 正在春招的你,也参与了去年秋招吗? #
362107次浏览 2629人参与
# 你怎么看待AI面试 #
178931次浏览 1137人参与
# 机械求职避坑tips #
94360次浏览 567人参与
# 校招笔试 #
464150次浏览 2946人参与
# 面试官最爱问的 AI 问题是...... #
26350次浏览 813人参与
# 如何一边实习一边找下家? #
41609次浏览 355人参与
# 网易笔试 #
151649次浏览 790人参与
# 现在入门AI应该走哪些方向? #
8078次浏览 147人参与