Wannafly挑战赛20-A,B
A-链接:https://www.nowcoder.com/acm/contest/133/A
来源:牛客网
题目描述
输入描述:
输入包括若干行
第一行包括一个数n,表示这棵树有n个节点
第二行包括n个数,第i个数表示第i个节点的颜色col
i
**注意:一个颜色的标号即价值
输出描述:
输出包括一行
第一行包括一个数,表示最小代价
输入例子:
4
2 3 4 3
1 2
2 3
3 4
输出例子:
12
-->
输出
12
边的输入根本就是多余的,直接枚举所有颜色统计最小的值即可。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f3f3f3f
int col[];
map<int,int>M;
int main(){
int n,m,i,j,k;
while(cin>>n){ll u,v,tot=,all=;
M.clear();
for(i=;i<=n;++i) {
scanf("%d",col+i);
all+=col[i];
M[col[i]]++;
}
for(i=;i<n;++i){
scanf("%d%d",&u,&v);
}
ll ans=inf;
for(i=;i<=n;++i){
ll tt=M[col[i]];
ans=min(ans,((ll)n-tt)*col[i]+all-tt*col[i]);
}
cout<<ans<<endl;
}
return ;
}
B-链接:https://www.nowcoder.com/acm/contest/133/B
来源:牛客网
题目描述
然后他对此提出了自己的疑问,如果我不要装的物品装的价值最大,只是一定需要装m个物品,要使得求出来的物品价值的中位数最大
Applese觉得这个题依然太菜,于是他把这个问题丢给了你
当物品数量为偶数时,中位数即中间两个物品的价值的平均值
输入描述:
第一行三个数v, n, m,分别代表背包容量,物品数量以及需要取出的物品数量
输出描述:
仅一行,代表最大的中位数
输入例子:
20 5 3
3 5
5 6
8 7
10 6
15 10
输出例子:
8
-->
非常操蛋,因为我把m打成了n,把first打成了second导致debug了一天,浪费很久的时间= =
做法并不难想,将物品分成前,中,后三个部分且每一部分的长度都知道,然后预处理下前/后最小的体积值,
枚举中间的1/2个点,对于奇数长度,直接枚举中点。偶数长度,枚举第一个点,二分查找右边一个的点(之所以能二分是因为first递增
而且rs[]也是递增的),在满足总的体积不超v的情况下使得价值尽可能的大,也就等价于尽可能的找右边的点。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pii pair<LL,LL> pii x[];
LL ls[],rs[];
priority_queue<LL>q;
priority_queue<LL>q2; void init(int n,int m){ int ll=(m-)/,rr=(m-)/;
LL sum=;
for(int i=;i<=ll;++i){
q.push(x[i].second);
sum+=x[i].second;
}
ls[ll]=sum;
for(int i=+ll;i<=n;++i){
if(q.empty()) continue;
if(/*!q.empty()&&*/q.top()>x[i].second){
sum=sum-q.top()+x[i].second;
q.pop();
q.push(x[i].second);
}
ls[i]=sum;
} sum=;
for(int i=n;i>n-rr;--i){
q2.push(x[i].second);
sum+=x[i].second;
}
rs[n-rr+]=sum;
for(int i=n-rr;i>=;--i){
if(!q2.empty()&&q2.top()>x[i].second){
sum=sum-q2.top()+x[i].second;
q2.pop();
q2.push(x[i].second);
}
rs[i]=sum;
}
}
int main(){
int n,m,i,j,k;
LL v;
cin>>v>>n>>m;
for(i=;i<=n;++i) scanf("%lld%lld",&x[i].first,&x[i].second);
sort(x+,x++n);
init(n,m);
int ll=(m-)/,rr=(m-)/;
if(m%){
LL ans=;
for(i=n-rr;i>ll;--i){
if(ls[i-]+rs[i+]+x[i].second<=v)
{ans=x[i].first;break;}
}
cout<<ans<<endl;
}
else{
LL ans=;
for(i=ll+;i<n-rr;++i){
int L=i+,R=n;
LL tmp=v-ls[i-]-x[i].second;
while(L<R){
int mid=R-((R-L)>>);
if(n-(mid+)+>=rr&&x[mid].second+rs[mid+]<=tmp) L=mid;
else R=mid-;
}
if(tmp-x[L].second-rs[L+]>=&&n-(L+)+>=rr)
ans=max(ans,x[i].first+x[L].first);
}
cout<<ans/<<endl;
} return ;
}
Wannafly挑战赛20-A,B的更多相关文章
- 染色 Wannafly挑战赛20 A 思维
链接:https://www.nowcoder.com/acm/contest/133/A来源:牛客网 现在有一棵被Samsara-Karma染了k种颜色的树,每种颜色有着不同的价值 Applese觉 ...
- nowcoder牛客wannafly挑战赛20
A---染色 签到题,设最终颜色为x,一次操作就需要把一个不是x的点变为x,所以最终颜色为x时需要操作 总结点个数-颜色为x的节点个数,然后枚举所有颜色就行了 #include <iostrea ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- 【Wannafly挑战赛4】F 线路规划 倍增+Kruskal+归并
[Wannafly挑战赛4]F 线路规划 题目描述 Q国的监察院是一个神秘的组织.这个组织掌握了整个帝国的地下力量,监察着Q国的每一个人.监察院一共有N个成员,每一个成员都有且仅有1个直接上司,而他只 ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly挑战赛21A
题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
- Wannafly挑战赛25C 期望操作数
Wannafly挑战赛25C 期望操作数 简单题啦 \(f[i]=\frac{\sum_{j<=i}f[j]}{i}+1\) \(f[i]=\frac{f[i]}{i}+\frac{\sum_{ ...
- Wannafly挑战赛18B 随机数
Wannafly挑战赛18B 随机数 设\(f_i\)表示生成\(i\)个数有奇数个1的概率. 那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{ ...
随机推荐
- Python Web学习笔记之socket编程
Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...
- 08: 查看Linux系统基本信息和硬盘CPU等
目录: 1.1 查看Linux系统基本信息 1.2 查看三秒内的平均CPU 1.3 查看内存使用情况 1.4 查看当前系统负载 1.1 查看Linux系统基本信息返回顶部 1.查看Linux系统uui ...
- CMD运行后关闭CMD 的窗口命令
在命令前加上Start 例(打开服务管理):start services.msc
- 向linux内核版本号添加字符/为何有时会自动添加"+"号或者"xxx-dirty"【转】
本文转载自:https://blog.csdn.net/kangear/article/details/17020835 原文地址:http://blog.csdn.net/adaptiver/art ...
- HDU 2089 不要62 (数位DP)题解
思路: 详解 数位DP入门题dp[pos][sta],pos代表当前位数是第几位,sta代表当前状态,因为题目中只要不出现64,所以当前状态只分为两种:前一位是6或不是. #include<io ...
- Uncaught TypeError: $(...).daterangepicker is not a function
本文为博主原创,未经允许不得转载: 在用bootstrap做一个日期插件的时候,代码和js,css等都是拷贝网上下载下来的实例,但是在 调试的时候,浏览器控制台一直报错 Uncaught TypeEr ...
- 分布式事务之——tcc-transaction分布式TCC型事务框架搭建与实战案例(基于Dubbo/Dubbox)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/73731363 一.背景 有一定分布式开发经验的朋友都知道,产品/项目/系统最初为了 ...
- The way to Go(4): Go runtime及解释器
Reference: Github: Go Github: The way to Go Go runtime Go runtime: 尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go ...
- NOI 4978 宠物小精灵之收服(二维背包)
http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物 ...
- 2:JavaScript中的基本运算
今天说的是JavaScript中的数据基本运算 在上一节中已经说了关于JavaScript中的基本数据类型 那么数据有了 剩下来就是数据之间的运算 表达式-------预算符(赋值 比较 算数 逻辑 ...