题目链接:http://codeforces.com/contest/767/problem/E


居然是一个瞎几把贪心(E比B水系列)

  考虑要每一次操作至少要用${\left \lfloor \frac{c[i]}{100} \right \rfloor}$张百元大钞,然后剩下的要不是用一张百元大钞收获一堆硬币并产生不高兴值,要么直接使用硬币买。我们可以把问题转换为强制每次操作都是用硬币买的,那么是不是就要从之前没有没有用过百元大钞的操作中改变若干个变成用了百元大钞的,然后收下这些硬币直到数量满足这次操作所需的。用一个堆来维护每次操作使用百元大钞会产生的不高兴值,使用一张百元大钞都相当于增加了100枚硬币。每次操作使用百元大钞会产生的不高兴值就是 ${w[i]*((100-c[i])~~mod~~100)}$ ,贪心即可。


 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
using namespace std;
#define maxn 1001000
#define llg long long
#define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
llg n,m,val[maxn],w[maxn],res,ans;
bool bj[maxn]; struct node
{
llg w,val,wz;
bool operator <(const node&a)const{
return a.val<val;
}
}; priority_queue<node>q; int main()
{
yyj("E");
cin>>n>>res;
for (llg i=;i<=n;i++) scanf("%lld",&val[i]);
for (llg i=;i<=n;i++) scanf("%lld",&w[i]);
for (llg i=;i<=n;i++)
{
node ne;
// ans1[i]=val[i]/100;
if (val[i]%==) continue;
ne.w=w[i]; ne.val=w[i]*(-val[i]%); ne.wz=i;
res-=val[i]%;
q.push(ne);
while (res<)
{
ne=q.top(); q.pop();
// ans2[ne.wz]=0;
res+=;
bj[ne.wz]=;
}
} for (llg i=;i<=n;i++)
{
if (bj[i])
{
ans+=(-val[i]%)*w[i];
}
}
cout<<ans<<endl;
for (llg i=;i<=n;i++)
{
if (bj[i])
{
printf("%lld 0\n",val[i]/+);
}
else printf("%lld %lld\n",val[i]/,val[i]%);
}
return ;
}

Codeforces 767E Change-free的更多相关文章

  1. 【codeforces 767E】Change-free

    [题目链接]:http://codeforces.com/problemset/problem/767/E [题意] 你有m个1元硬币和无限张100元纸币; 你在第i天,需要花费ci元; 同时在第i天 ...

  2. Change-free CodeForces - 767E (贪心)

    题目链接 大意:Arseny有m个1元硬币, 无限多100元钞票, 他要按顺序买n个东西, 第i天如果找零x个硬币, 他的不满值会加 w[i]*x, 求最少不满值. 若找零, 则硬币增加 100-ci ...

  3. codeforces C. New Year Ratings Change 解题报告

    题目链接:http://codeforces.com/problemset/problem/379/C 题目意思:有n个users,每个user都有自己想升的rating.要解决的问题是给予每个人不同 ...

  4. Mass Change Queries Codeforces - 911G

    https://codeforces.com/contest/911/problem/G 没想到线段树合并还能这么搞.. 对每个权值建一个线段树(动态开点),如果权值为k的线段树上第i位为1,那么表示 ...

  5. Codeforces Round #598 (Div. 3) A. Payment Without Change 水题

    A. Payment Without Change You have a coins of value n and b coins of value 1. You always pay in exac ...

  6. Codeforces.472F.Design Tutorial: Change the Goal(构造 线性基 高斯消元)

    题目链接 \(Description\) 给定两个长为\(n\)的数组\(x_i,y_i\).每次你可以选定\(i,j\),令\(x_i=x_i\ \mathbb{xor}\ x_j\)(\(i,j\ ...

  7. Mass Change Queries CodeForces - 911G (线段树合并)

    链接 大意: 给定序列, 每次操作将区间[l,r]中的x全改为y, 最后输出序列 权值范围比较小, 对每个权值开一颗线段树, 每次将x合并到y上即可 #include <iostream> ...

  8. [Codeforces 10E] Greedy Change

    Brief Introduction: 给你一些种类的硬币,用最少的硬币数表示X 求最小的使贪心算法错误的X Algorithm: 一道论文题,<A Polynomial-time Algori ...

  9. Codeforces Round #373 (Div. 2)

    A,B,C傻逼题,就不说了. E题: #include <iostream> #include <cstdio> #include <cstring> #inclu ...

随机推荐

  1. (2018干货系列十)最新android开发学习路线整合

    怎么学Android Android是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导.据2011年初数据显示仅正式上市两年的操作系统Android ...

  2. JS笔记—01

    1.JS的代码一般在头部写2.当页面载入时,会执行位于body部分的JavaScript当被调用时,位于head部分的JavaScript被执行.3.要对外部的JS文件的一个变量操作,代码是写在内部J ...

  3. Hbuilder安装

    ---恢复内容开始--- ---恢复内容结束---

  4. 给PXC集群加密

    MySQL的复制时明文的,不管是集群的复制还是IST/SST,直接通过抓包就可以抓取数据. 生成证书 直接使用 mysql_ssl_rsa_setup mysql_ssl_rsa_setup --da ...

  5. Pycharm创建Django项目并访问Django

    Pycharm创建Django项目并访问Django 一.Django插件 如果没有Django插件,需要先安装Django插件. 1,首先点击Default Settings,打开设置页面: 2,打 ...

  6. Ubuntu 部署 nginx

    Ubuntu 部署 nginx  apt-get install nginx

  7. Python 自学基础(一)——元组 字典 文件操作

    格式化输出 name = input("请输入你的名字:") age = input("请输入你的年龄:") msg = ''' -------------in ...

  8. opencv学习之路(18)、霍夫变换

    一.简介 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough) ...

  9. WIN10安装和使用MySql5.6中遇到的一些问题与解决

    WIN10安装和使用MySql5.6中遇到的一些问题与解决 提示一下,安装前需要安装python环境. MySql安装缺少组件MySQL for Excel 如图(转载别人的图,自己的安装时没有截图) ...

  10. Git Add,Git别名等

    一,Git  Add 1.  git add -A   保存所有的修改 2.  git add .     保存新的添加和修改,但是不包括删除 3.  git add -u   保存修改和删除,但是不 ...