首页 > 其他分享 >luogu P8444 不等价交换法则

luogu P8444 不等价交换法则

时间:2023-02-26 08:33:06浏览次数:56  
标签:P8444 return 等价交换 cmp1 int luogu long 商品 ans

题目传送门

分析

仔细审了题面,猜想是贪心模拟,下面给出证明:

因为只能用元买一个商品,所以要挑贵的买(越贵,换得的商品越多),后令商品尽可能的去换低价格的商品,即把手头所有的商品能换就换,则最后换来的商品总价值一定不会超过第一次买的商品,而且随着不断的交换,你商品的总价值只会下降而不会升高,不论如何,你第一次买的商品价值一定是最高的,价值越高,换来的商品就越多,只需第一次买的商品就能得到最终答案。

代码实现:先进行快排(从小到大),找到最大价值的商品,
标记后退出循坏,如果 \(t>0\) ,则从小到大排序,再进行交换商品。


code

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
long long a[N],n,w,t=0,ans=0;//开long long!
inline bool cmp(int x,int y){
	return x>y;//从大到小排序
}
inline bool cmp1(int x,int y){
	return x<y;//从小到大排序
}
int main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;++i)
		scanf("%lld",&a[i]);
	scanf("%lld",&w);
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;++i){
		if(t==0)
			if(w-a[i]>=0){
				w-=a[i];//减去最大值
				t=a[i];//标记
				break;//退出循环
			}
	}
	if(t){
		sort(a+1,a+n+1,cmp1);
		for(int i=1;i<=n;++i){
			if(t>=a[i]){
				t-=a[i];
				ans++;//累计答案
			}
		}
	}
	printf("%lld\n",ans);
	return 0;
}

标签:P8444,return,等价交换,cmp1,int,luogu,long,商品,ans
From: https://www.cnblogs.com/GOD-HJ/p/17156098.html

相关文章

  • [luogu P4705玩游戏] 题解
    P4705玩游戏题解题意概括给出两个序列\(a_0,a_2,\cdotsa_{n-1}\),\(b_0,b_2,\cdotsb_{m-1}\),从两个序列中各等概率的选出两个数\(a_i,b_j\),对于\(k\in[1,t]\)......
  • Solution Luogu6097 子集卷积
    其实是暴力。因为这是模板题,所以模板的前置知识也要讲。前置知识:FWT计算或卷积。这里只需要掌握快速计算或卷积的方法,所以内容较少。如果向了解更多(比如异或卷积)的话......
  • LuoguP5354 [Ynoi2017]由乃的OJ题解
    P5354[Ynoi2017]由乃的OJPreface自己的由乃题一血,写篇题解纪念一下。Description给定一颗\(n\)个结点的树,每个结点都有一个权值\(a_i\)和一个位运算符\(\mathrm{......
  • 【题解】Luogu P3939 数颜色
    题目分析:解法一:显然我们可以直接对每一种颜色建一棵线段树,然后剩下的操作就非常简单了。代码:点击查看代码#include<bits/stdc++.h>usingnamespacestd;constint......
  • luogu7764[COCI2016-2017#5] Poklon
    luogu7764[COCI2016-2017#5]Poklonlink莫队解法看了题面之后,便知道能用莫队做。我们知道数组中的数据范围是小于\(10^{9}\)的自然数,而\(1\leN,Q\le5\times10......
  • 【NOIP2001】【Luogu1026】统计单词个数
    problemsolutioncodes//justfortest2#include<iostream>#include<algorithm>#include<cstring>#include<string>usingnamespacestd;intn,m,x,d[210],f......
  • 【NOIP2015】【Luogu2678】跳石头
    problemsolutioncodes//二分答案//QAQ注意:起点和终点也是有石头的w#include<iostream>#include<algorithm>#definemaxn100010usingnamespacestd;intll,n,......
  • 【NOIP2008】【Luogu1125】笨小猴
    problemsolutioncodes#include<iostream>#include<algorithm>#include<string>usingnamespacestd;inta[30];intmain(){stringstr;cin>>str;for......
  • 【Luogu3371】【模板】单源最短路径(SPFA)
    problem给出一个有向图求从某一点出发到所有点的最短路solutionSPFAcodes#include<iostream>#include<queue>#include<cstring>#definemaxn10010#definem......
  • 【NOIP2010】【Luogu1540】机器翻译
    problemsolutioncodes//STL大法好#include<iostream>#include<set>#include<queue>usingnamespacestd;queue<int>q;set<int>s;intmain(){intm,n,an......