【题目链接】:http://codeforces.com/problemset/problem/767/E

【题意】



你有m个1元硬币和无限张100元纸币;

你在第i天,需要花费ci元;

同时在第i天,收银员有一个不高兴程度wi;

然后如果它要找零x张纸币y枚硬币的话,它的不高兴值会为wi*(x+y)

找的零钱会回到你的口袋里;

问你n天的,总的最小不高兴值;

【题解】



整百的部分,直接用纸币填就好了;

则直接对ci%100考虑;

即要直接用硬币填满ci%100,或者是先给一张100,然后让他找你钱;

如果m>=ci;

则直接用硬币填它,这样不会有不满意;

m-=ci;

然后记录如果给一张纸币的话,会增加多少不满意度;

放入优先队列中;

如果m< ci;

则考虑修改之前的贪心;

如果优先队列的第一个元素比w[i]*(100-a[i])小;

则把之前的那一个修改成用一张纸币填;

然后那时因为已经减去ci了,所以修改的话,硬币数直接加上100;

而这100可以保证够把当前的ci用硬币填

则,用硬币填就是了;

如果不满足优先队列的第一个元素比w[i]*(100-a[i])小;

则这个用一张纸币填;



【Number Of WA】



0



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0),cin.tie(0) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e5+100; struct abc
{
LL val,id;
friend bool operator < (abc a,abc b)
{
if (a.val!=b.val)
return a.val>b.val;
else
return a.id<b.id;
}
}; LL n,m;
LL ans1[N],ans2[N],a[N],w[N];
priority_queue<abc> xiao; int main()
{
//Open();
Close();//scanf,puts,printf not use
//init??????
cin >> n >> m;
rep1(i,1,n)
{
cin >> a[i];
ans1[i]=a[i]/100;
a[i]%=100;
}
rep1(i,1,n)
cin >> w[i];
LL ans = 0;
rep1(i,1,n)
if (a[i])
{
if (m>=a[i])
{
m-=a[i];
xiao.push(abc{w[i]*(100-a[i]),i});
continue;
}
//m<a[i] if (xiao.empty())
{
m+=100-a[i];
ans+=w[i]*(100-a[i]);
ans2[i] = 1;
continue;
} if (xiao.top().val<w[i]*(100-a[i]))
{
ans2[xiao.top().id] = 1;
ans+=xiao.top().val;
xiao.pop();
m+=100;
m-=a[i];
xiao.push(abc{w[i]*(100-a[i]),i});
}
else
{
m+=100-a[i];
ans+=w[i]*(100-a[i]);
ans2[i] = 1;
}
}
cout << ans << endl;
rep1(i,1,n)
if (ans2[i])
cout << ans1[i]+1 <<' '<<0<<endl;
else
cout << ans1[i] <<' '<<a[i]<<endl;
return 0;
}

【codeforces 767E】Change-free的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【codeforces 779E】Bitwise Formula

    [题目链接]:http://codeforces.com/contest/779/problem/E [题意] 给你n个长度为m的二进制数 (有一些是通过位运算操作两个数的形式给出); 然后有一个未知 ...

  3. 【codeforces 785E】Anton and Permutation

    [题目链接]:http://codeforces.com/problemset/problem/785/E [题意] 给你一个初始序列1..n顺序 然后每次让你交换任意两个位置上面的数字; 让你实时输 ...

  4. 【codeforces 798C】Mike and gcd problem

    [题目链接]:http://codeforces.com/contest/798/problem/C [题意] 给你n个数字; 要求你进行若干次操作; 每次操作对第i和第i+1个位置的数字进行; 将 ...

  5. 【52.49%】【codeforces 556A】Case of the Zeros and Ones

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  6. 【27.91%】【codeforces 734E】Anton and Tree

    time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  7. 【33.10%】【codeforces 604C】Alternative Thinking

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  8. 【40.17%】【codeforces 569B】Inventory

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. 【codeforces 757C】Felicity is Coming!

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

随机推荐

  1. 【codeforces 805C】Find Amir

    [题目链接]:http://codeforces.com/contest/805/problem/C [题意] 你能从任意一个位置i到达任意一个位置j; 花费为(i+j)%(n+1); 问你从任意一个 ...

  2. 如何计算合适的InnoDB log file size

    原文链接:http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/ Pe ...

  3. elasticsearch(七)java 搜索功能Search Request的介绍与使用

    目录 1,首先创建主搜索请求: 2,对主搜索请求进行参数设置 前端几节都是介绍的基于单个文档或着单个文档库的操作, 本节开始将介绍基于所有或指定的任何个数文档库的操作的api SearchReques ...

  4. XML概述

    本节要点: 标记语言的定义 XML简介 XML与HTML 比较 XML与数据库比较 XML的特点 XML结构 1          标记语言的定义 “XML.SGML.HTML”中的“ML”(Mark ...

  5. HDU 2817 EASY题

    #include <iostream> #include <cstdio> using namespace std; const __int64 MOD=200907; __i ...

  6. Oracle学习(11):PLSQL程序设计

    PL/SQL程序结构及组成 什么是PL/SQL? •PL/SQL(Procedure Language/SQL) •PLSQL是Oracle对sql语言的过程化扩展 •指在SQL命令语言中添加了过程处 ...

  7. 常用的Linux 命令

    来源于面试 求一条linux命令:查找当前目录下所有含有字符串type="json",文件名以.xml的所有文件 find . -name "*.xml"|xa ...

  8. python类的继承和多态,获取对象信息

    继承 类的继承机制使得子类可以继承父类中定义的方法,拥有父类的财产,比如有一个Animal的类作为父类,它有一个eat方法: class Animal(object): def __init__(se ...

  9. [SCOI 2007] 排列

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1072 [算法] 状压DP [代码] #include<bits/stdc++. ...

  10. 【转】使用Docker+Jenkins自动构建部署

    转载自 https://segmentfault.com/a/1190000012921606 环境 阿里云ESC,宿主机服务器安装Docker,在安全规则中确认8080端口开启. 客户端mac 运行 ...