前缀和+排序——cf1043E
先不考虑第二个条件
要求i和所有其他人的分数和最小,选择x还是y,可以推出一个公式,即差xi-yi小的j都选y,反之都选x
那么按照xi-yi排序即可
然后再考虑第二个条件,做减法就行
/*
xi+yj<xj+yi
xi-yi<xj-yj
xi-yi值小取xi
xi-yi值大取yi
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 300005
struct Node {
ll x,y,id;
}p[N],q[N];
int n,m;
ll ans[N],sumx[N],sumy[N];
int cmp(Node a,Node b){return a.x-a.y<b.x-b.y;}
int main(){
cin>>n>>m;
for(int i=;i<=n;i++)
scanf("%lld%lld",&p[i].x,&p[i].y),p[i].id=i;
for(int i=;i<=n;i++)q[i]=p[i]; sort(p+,p++n,cmp);
for(int i=;i<=n;i++){
sumx[i]=sumx[i-]+p[i].x;
sumy[i]=sumy[i-]+p[i].y;
}
for(int i=;i<=n;i++){
ans[p[i].id]+=(i-)*p[i].y;
ans[p[i].id]+=sumx[i-];
ans[p[i].id]+=(n-i)*p[i].x;
ans[p[i].id]+=sumy[n]-sumy[i];
} while(m--){
int u,v;
scanf("%d%d",&u,&v);
Node a=q[u],b=q[v];
ll sum=min(a.x+b.y,a.y+b.x);
ans[u]-=sum;
ans[v]-=sum;
}
for(int i=;i<=n;i++)
cout<<ans[i]<<" ";
}
前缀和+排序——cf1043E的更多相关文章
- HDU 6299.Balanced Sequence-贪心、前缀和排序 (2018 Multi-University Training Contest 1 1002)
HDU6299.Balanced Sequence 这个题就是将括号处理一下,先把串里能匹配上的先计数去掉,然后统计左半边括号的前缀和以及右半边括号的前缀和,然后结构体排序,然后遍历一遍,贪心策略走一 ...
- ACM学习历程—HDU5700 区间交(树状数组 && 前缀和 && 排序)
http://acm.hdu.edu.cn/showproblem.php?pid=5700 这是这次百度之星初赛2B的第五题.省赛回来看了一下,有这样一个思路:对于所有的区间排序,按左值排序. 然后 ...
- Codeforces Gym 100513D D. Data Center 前缀和 排序
D. Data Center Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560/proble ...
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
A------------------------------------------------------------------------------------ 题目链接:http://20 ...
- 数据结构与算法——认识O(NlogN)的排序(1)
归并排序 1) 整体就是一个简单递归,左边排好序.右边排好序.让其整体有序 2) 让其整体有序的过程里用了外排序方法 3) 利用master公式来求解时间复杂度 4) 归并排序的实质 时间复杂度0(N ...
- XVII Open Cup named after E.V. Pankratiev. GP of SPb
A. Array Factory 将下标按前缀和排序,然后双指针,维护最大的右边界即可. #include<cstdio> #include<algorithm> using ...
- Trie树
一.什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树.字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构.典型应用是用于统计和排序大量的字符串( ...
- POJ 2566
Bound Found Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 1445 Accepted: 487 Spec ...
- Codeforces Round#344
A题意思是,给出两个数列,求一个区间,使第一个数列的区间或和第二个数列的区间或的和最大,输出最大和 很显然,或运算会使得答案越运算越大.所以,直接全部或起来,相加就是答案. = =打cf的时候自动脑补 ...
随机推荐
- jsp中$使用不了
导入了jstl <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>为啥 ...
- MariaDB 创建表
在本章中,我们将学习如何创建表. 在创建表之前,首先确定其名称,字段名称和字段定义. 以下是表创建的一般语法: CREATE TABLE table_name (column_name column_ ...
- 原生js和jquery
$(document).ready(function() {//jquery的写法 }); (function () { //原生js的写法 })();
- [CSP-S模拟测试52]题解
A.平均数 看到第K小,又确定跟平衡树/主席树没有关系,可以把问题转化为有K-1个答案比它小再考虑二分. 二分平均值x,之后将原序列统一减去x.这时序列中区间和<0的区间个数就是原序列中平均值小 ...
- P1476 休息中的小呆
P1476 休息中的小呆 题目描述 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王ch ...
- HTML5 开发技能图谱skill-map
# HTML5 开发技能图谱
开发环境及相关配置 版本控制软件 集中式和分布式 集中式:集中式版本控制工具,版本库集中存放在中央服务器,团队成员里的每个人工作时从中央服务器下载代码,个人修改后再提交到中央服务器 分布式:分布式版本 ...
- UVA 212 Use of Hospital Facilities
题目链接:https://vjudge.net/problem/UVA-212 题意摘自<算法禁赛入门经典> 题目大意 医院里有 N(N ≤ 10)个手术室和 M(M ≤ 30)个恢复室. ...
- git使用记录一:配置账户信息
配置的级别 git config --gloabal 针对当前用户下所有的项目 设置 git config --local 针对当前工作区的项目来进行设置 git config --system 针对 ...
- 论一个PHP项目上线的注意点
一.后端问题 服务器配置要跟上流量 预估QPS时要给足未知流量的空间 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表 在处理执行修改的操作时一定要多一层判断(判断是否已 ...