【总结】多个条件排序(pii/struct/bool)

pii

(GPLT)上海理工大学校内选拔赛(同步赛) B题icon-default.png?t=N176https://ac.nowcoder.com/acm/problem/249505
现在小龙同学要吃掉它们,已知他有nnn颗苹果,并且打算每天吃一个。

但是古人云,早上金苹果,晚上毒苹果。由此可见,早上吃苹果和晚上吃苹果的效果是不一样的。

已知小龙同学在第 iii 天早上吃苹果能获得的愉悦值为 aia_iai​ ,晚上吃苹果能获得的愉悦值为 bib_ibi​ 。

但是为了饮食均衡,小龙同学决定必须能选择恰好kkk 天晚上吃苹果。

剩下的 n−kn-kn−k 天早上吃苹果,他想知道他能够获得最大的愉悦值是多少。

#include
#include
#include

using namespace std;

typedef long long LL;
typedef pair pii;

const int N = 200010;

pii a[N];
int n,k;

bool cmp(pii a,pii b){
	return (a.second-a.first)>(b.second-b.first);
}

int main(){
	cin>>n>>k;
	
	for(int i=0;i>x>>y;
		a[i]={x,y};
	}
	
	sort(a,a+n,cmp);
	int sum=0;
	for(int i=0;i

蓝桥真题数位排序icon-default.png?t=N176https://www.lanqiao.cn/problems/2122/learning/?page=6&first_category_id=1&sort=students_count&category_id=3&difficulty=30

小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。

例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。

又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。

给定正整数 n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?

struct

#include
#include
#include

using namespace std;

typedef long long LL;

const int N = 2000010;

int n,x;

struct st{
    int m;
    int sum;
}a[N];

int ssum(int n){
    int s=0;
    
    while(n>0){
        s+=n%10;
        n/=10;
    }
    return s;
}

bool cmp(st a,st b){
    if(a.sum==b.sum) return a.m>n>>x;
    
    for(int i=1;i<=n;i++){
        a[i].m=i;
        int t=a[i].m;
        a[i].sum=ssum(t);
    }    
    
    sort(a+1,a+n+1,cmp);
    cout<

bool

#include
#include
#include

using namespace std;

typedef long long LL;

const int N = 2000010;

int n;
int m;
int a[N];

int sum(int a){
    int s=0;
    
    while(a>0){
        s+=a%10;
        a/=10;
    }
    return s;
    
}

bool cmp(int a,int b){
    if(sum(a)sum(b)) return false;
    else if(sum(a)==sum(b)) {
        if(a>n>>m;
    
    int idx=0;
    for(int i=0;i

你可能感兴趣的:(总结,算法,c++,蓝桥杯,职场和发展)