Educational Codeforces Round 3
A. USB Flash Drives
水题,排序即可
int a[];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++) scanf("%d",&a[i]);
int ans=; sort(a,a+n);
for(int i=n-;m>;i--)
ans++,m-=a[i];
cout<<ans<<endl;
}
B. The Best Gift
本来以为要缩点,结果m<10,具体看代码
int x,n,m,b[];
ll sum;
int main()
{
memset(b,,sizeof(b)); sum=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&x),b[x]++,sum++;
ll ans=;
for(int i=;i<=m;i++) {
sum-=b[i];
ans+=sum*b[i];
}
cout<<ans<<endl;
}
C. Load Balancing
依旧是水题。。
typedef long long ll;
int a[];
int main()
{
ll ans=,sum=;
int n; scanf("%d",&n);
for(int i=;i<n;i++) scanf("%d",&a[i]),sum+=a[i];
sort(a,a+n);
ll sa=sum/n+,sb=sum/n;
int na=sum%n,nb=n-sum%n;
//cout<<na<<nb<<sa<<sb<<endl;
for(int i=;i<n;i++) {
if(nb&&a[i]<=sb)
nb--,ans+=sb-a[i];
else if(na&&a[i]<=sa)
na--,ans+=sa-a[i];
}
cout<<ans<<endl;
}
D. Gadgets for dollars and pounds
题目读起来很麻烦,而且刚开始还理解错题意了。。以为每件物品既可以用英镑支付又可以用美金支付,
写完才发现样例过不了。
题目一看就是二分,第一反应以为要使用RMQ,后来发现不用也行。
首先把用美金和英镑的分开并排序,然后对于天数二分,在天数区间内遍历
得到最低美金兑换的日子,和英镑的日子,然后比较后选择花费最少burles的gadget购买
typedef long long ll;
typedef pair<int,int> pii ; #define N 200089
#define M 400009
#define f0(i,n) for(int i=0;i<(n);i++)
#define ff(i,n) for(int i=1;i<=(n);i++)
#define p_b push_back
#define m_p make_pair
#define Abs(a) (a)<0?-(a):(a)
#define Clr(a) memset(a,0,sizeof(a))
#define MID(a,b) (a+((b-a)>>1))
#define Lbit(a) (x)&(-(x))
#define X first
#define Y second
const ll INF=1LL<<-;
const int lim=<<+; int n,m,k,s;
int a[N],b[N];
vector<pii> d,p;
vector<pii> ans,tans; int judge(int day) {
tans.clear();
int d0=,d1=;
for(int i=;i<=day;i++) {
if(a[i]<a[d0]) d0=i;
if(b[i]<b[d1]) d1=i;
}
int cnt=k,pd=,pp=;
ll sb=s;
while(cnt) {
ll vd=INF,vp=INF;
if(pd<d.size())
vd=1LL*a[d0]*d[pd].X;
if(pp<p.size())
vp=1LL*b[d1]*p[pp].X; if(vd<vp) {
//ans[d[pd].Y]=d0;
tans.p_b(m_p(d[pd].Y,d0));
cnt--; sb-=vd; pd++;
}
else {
//ans[p[pp].Y]=d1;
tans.p_b(m_p(p[pp].Y,d1));
cnt--; sb-=vp; pp++;
}
}
// cout<<day<<" "<<sb<<" "<<cnt<<endl;
if(sb>=) {
ans=tans; return ;
}
return ;
}
bool cmp(pii c1,pii c2) { return c1.X<c2.X; } int main()
{ int x,y,z;
cin>>n>>m>>k>>s;
d.clear(); p.clear();
for(int i=;i<=n;i++) scanf("%d",&a[i]);
for(int i=;i<=n;i++) scanf("%d",&b[i]);
for(int i=;i<=m;i++) {
scanf("%d%d",&x,&y);
if(x==) d.p_b(m_p(y,i));
else p.p_b(m_p(y,i));
}
sort(d.begin(),d.end(),cmp);
sort(p.begin(),p.end(),cmp);
int l=,r=n,mid,res,flag=;
while(l<=r) {
mid=(l+r)>>;
if(judge(mid)) {
flag=; res=mid; r=mid-;
}
else l=mid+;
//cout<<l<<" "<<r<<endl;
}
if(flag) {
printf("%d\n",res);
for(int i=;i<ans.size();i++)
printf("%d %d\n",ans[i].X,ans[i].Y);
}
else puts("-1");
return ;
}
Educational Codeforces Round 3的更多相关文章
- [Educational Codeforces Round 16]E. Generate a String
[Educational Codeforces Round 16]E. Generate a String 试题描述 zscoder wants to generate an input file f ...
- [Educational Codeforces Round 16]D. Two Arithmetic Progressions
[Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- [Educational Codeforces Round 16]A. King Moves
[Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...
- Educational Codeforces Round 6 C. Pearls in a Row
Educational Codeforces Round 6 C. Pearls in a Row 题意:一个3e5范围的序列:要你分成最多数量的子序列,其中子序列必须是只有两个数相同, 其余的数只能 ...
- Educational Codeforces Round 9
Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...
- Educational Codeforces Round 37
Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
随机推荐
- thinkphp 缓存写入失败,网站报错
周末,正在家里休息,同事突然call 我,说网站打不开了,网站一直很正常的,突然成这样,肯定某个地方出问题了, 原来是网站所在的硬盘分区,没空间了,被mysql的日志占满了!!! 哎,好好的周末,在公 ...
- jQuery查看dom元素上绑定的事件列表
jQuery API提供了一种能够查看元素已绑定事件的列表,这个功能在进行功能调试的时候特别有用,尤其确定在代码执行过程中元素绑定的事件是否被更改. 1: jQuery( elem ).dat ...
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
http://quote.eastmoney.com/center/list.html#28003501_0_2 http://bbs.tianya.cn/post-53726-21098-1.sht ...
- C#实现JSON序列化与反序列化介绍
方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化 序列化类:Personnel public clas ...
- poco异步等待ActiveResult
#include "Poco/ActiveMethod.h"#include "Poco/ActiveResult.h"#include <utility ...
- 在ADO.NET中使用参数化SQL语句访问不同数据库时的差异
在ADO.NET中经常需要跟各种数据库打交道,在不实用存储过程的情况下,使用参数化SQL语句一定程度上可以防止SQL注入,同时对一些较难赋值的字段(如在SQL Server中Image字段,在Orac ...
- 解决treeview的同一节点单击多次的执行问题
在使用treeview的AfterSelect函数的时候,单击同一节点多次无响应. 解决方法: 将首次单击的节点信息保存到selectTreeNode: 然后使用click函数,判断单击的节点是否和s ...
- zend studio 9.0.4 安装破解
转载于 http://www.geekso.com/ZendStudio9-key 注册破解步骤第一步:如果已经安装过Zend Studio 9.0.4的,请打开Zend Studio 9.0.4,在 ...
- u-boot代码学习内容
前言 u-boot代码庞大,不可能全部细读,只能有选择的读部分代码.在读代码之前,根据韦东山教材,关于代码学习内容和深度做以下预先划定. 一.Makefile.mkconfig.config.mk等 ...
- 查看sqlserver数据库的端口号
最近正在用sqlserver作为java的数据库进行开发,在写连接字符串的时候,想起一个问题,怎么查找sqlserver的端口号呢?有两种方法 1,用存储过程 --查询端口号exec sys.sp_r ...