【问题描述】

传说中的水晶鞋有两种颜色:左边的水晶鞋是红色,右边的是蓝色,据说穿上它们会有神奇的力量。

灰姑娘要找到她所有的n双水晶鞋,它们散落在一条数轴的正半轴上,坐标各不相同,每双水晶鞋还有一个权值wi。灰姑娘一开始位于原点,当她将其中一双水晶鞋拿回原点时,那双水晶鞋就改变了它原来的位置,这时还固定于数轴正半轴上的那些水晶鞋就会因为共鸣而发生升华现象。升华过程的损耗为:被取走的水晶鞋发生的位移*(还固定在数轴正半轴上的编号与被取走的水晶鞋编号对m取模同余的水晶鞋的w权值之和)。举个例子:

现在灰姑娘想得到所有的水晶鞋,但是她又希望升华的消耗最少,因为她希望能在秋之国即将举办的夏日祭里赢得更多的掌声。所以她找到了你帮忙。

【数据范围】

对于25%的数据,n<=10;

对于另外5%的数据,m=n;

对于60%的数据,n<=1000;

对于另外10%的数据,m=1;

对于100%的数据,0<n,m<=200,000,0<坐标范围<=10^9,0<ai,bi<=10^4。

——————————————我是分割线——————————————

好吧,这道题一看就是贪心,但是怎么贪呢?换句话说,怎么排序呢?

首先我们假设取i比取j更优

则得到下列不等式

所以我们只需要按照这个不等式排序就好啦

注意!本题会爆long long 所以要开2个long long进行处理!

下面贴代码

#include<cstdio>
#include<algorithm>
#define INF 1000000000000000000
using namespace std;
int d[],w[];
int paixu[];
unsigned long long sum[];
unsigned long long ans1,ans2;
int n,m;
bool cmp(int a,int b){return 1LL*d[a]*w[b]<1LL*d[b]*w[a];}
void add(unsigned long long a){ans2+=a;if(ans2>INF)ans1++,ans2-=INF;}
int main(){
freopen("crystal.in","r",stdin);
freopen("crystal.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d%d",&d[i],&w[i]);
paixu[i]=i;
sum[i%m]+=w[i];
}
sort(paixu+,paixu+n+,cmp);
for(int i=;i<=n;i++)
{
sum[paixu[i]%m]-=w[paixu[i]];
add(d[paixu[i]]*sum[paixu[i]%m]);
}
if(ans1)printf("%lld%018lld",ans1,ans2);
else printf("%lld\n",ans2);
fclose(stdin);
fclose(stdout);
}

灰姑娘的水晶鞋(NOIP模拟赛Round 7)的更多相关文章

  1. 水(NOIP模拟赛Round #10)

    题目描述: 小Z有一个长度为的数列.他有次令人窒息的操作,每次操作可以使某个数字或.他当然是希望这些数字的乘积尽量小了.为了简化题目,你只需输出操作完成后的数列即可. ———————————————— ...

  2. 小红帽的画笔(NOIP模拟赛Round 7)

    又到了神奇的模拟赛时间~ 真是丧~ 好吧我们来看看题目 小红帽是Pop star上最著名的人类画家,她可以将任何画出的东西变成真实的物品.赋予她这样神奇能力的正是她手上的画笔. 小红帽每次作画时,都需 ...

  3. YYH的营救计划(NOIP模拟赛Round 6)

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!YYH感动的热泪盈眶,开起了门…… YYH的父亲下班回家,街坊邻居说YYH被一群陌生人强行押上了警车!YYH的父 ...

  4. 题(NOIP模拟赛Round #10)

    题目描述: 有一张的地图,其中的地方是墙,的地方是路.有两种操作: 给出个地点,询问这个地点中活动空间最大的编号.若询问的位置是墙,则活动空间为:否则活动空间为询问地点通过四联通能到达的点的个数.如果 ...

  5. 大(NOIP模拟赛Round #10)

    题目描述: 小Z有个n个点的高清大图,每个点有且只有一条单向边的出边.现在你可以翻转其中的一些边,使他从任何一个点都不能通过一些道路走回这个点.为了方便,你只需输出方案数对取模即可.当在两个方案中有任 ...

  6. bananahill(NOIP模拟赛Round 8)

    题目描述 香蕉川由座香蕉山组成,第i座山有它的高度.小Z准备从左到右爬这里的恰好座香蕉山,但他不希望山的高度起伏太大,太过颠簸,会让本就体育不好的他过于劳累.所以他定义了爬山的劳累度是所有爬的相邻的两 ...

  7. 战斗机的祈雨仪式(NOIP模拟赛Round 7)

    [问题描述] 炎炎夏日,如果没有一场大雨怎么才能尽兴?秋之国的人民准备了一场祈雨仪式.战斗机由于拥有操纵雷电的能力,所以也加入了其中,为此,她进行了一番准备. 战斗机需要给自己的Spear of Lo ...

  8. 魔法使的烟花(NOIP模拟赛Round 7)

    [问题描述] 魔法森林里有很多蘑菇,魔法使常常采摘它们来制作魔法药水.为了在6月的那个奇妙的晚上用魔法绽放出最绚丽的烟花,魔法使决定对魔法森林进行一番彻底的勘探. 魔法森林分为n个区域,由n-1条长度 ...

  9. YYH的球盒游戏(NOIP模拟赛Round 6)

    题目描述 YYH有一些总共有种颜色的球,他有颜色的球个.他同样有个盒子,第个盒子能放个球. 他的目标是把这个球按规则放进个盒子里: 对于一个盒子,对于每种颜色的球至多只能放个. 把颜色为的球放进盒子, ...

随机推荐

  1. manjaro安装teamviewer后无法打开

    点桌面快捷方式一闪而过 命令行运行提示 $ teamviewer /opt/teamviewer/tv_bin/script/tvw_exec:行7: /opt/teamviewer/logfiles ...

  2. Python学习之高级特性

    切片 在Python基础篇里,我们知道Python的可序列对象可以通过索引号(下标)来引用对象元素,索引号可以由0开始从左向右依次获取,可以从-1开始由右向左获取.这种方法可以帮助我们依次获取我们想要 ...

  3. linux epoll用法

    epoll 是 linux 特有的 I/O 复用函数.它是把用户关心的文件描述符事件放在内核的一个事件列表中,故而,无须像select和poll一样每次调用都重复传入文件描述符或事件集.但是, epo ...

  4. linux poll用法

    相对于select来说,poll 也是在指定时间内论询一定数量的文件描述符,来测试其中是否有就绪的,不过,poll 提供了一个易用的方法,来实现 i/o 复用. 声明如下: #include < ...

  5. ZOJ3640 概率DP

    Background If thou doest well, shalt thou not be accepted? and if thou doest not well, sin lieth at ...

  6. Android Html处理器通用类 HtmlUtil

    1.整体分析 1.1.首先看一下源代码,可以直接Copy. public class HtmlUtil { /** * 获取 html 中的纯文本 */ public static String Ht ...

  7. 如何使用Idea导入jar包

    技术交流群: 233513714 1.在idea底部找到Terminal,然后进入输入框,如下图所示 2.在输入框中输入 mvn install:install-file -D file=C:\Use ...

  8. Android (shape,gradient)使用总结

    设置背景色可以通过在res/drawable里定义一个xml,如下: <?xml version="1.0" encoding="utf-8"?> ...

  9. 剑指Offer - 九度1517 - 链表中倒数第k个结点

    剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...

  10. 剑指Offer - 九度1370 - 数组中出现次数超过一半的数字

    剑指Offer - 九度1370 - 数组中出现次数超过一半的数字2013-11-23 03:55 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组 ...