C. Playlist

 http://codeforces.com/contest/1140/problem/C

题意:给len数组和对应beauty数组,选择不超过k长的序列使得(len[i]+len[i+1]...)*(  min(beatuty[i],beauty[i+1]...)   )最大;

思路:按beauty大到小排序,枚举beauty从大到小,保持集合不超过k,每次超过抛弃集合小的(multiset,包含重复);

#include<algorithm>
#include<set>
#include<vector>
#include<queue>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
#include<queue>
#include<cmath>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<ctime>
#include<map>
#include<stack>
#include<string>
using namespace std;

#define sfi(i) scanf("%d",&i)
#define pri(i) printf("%d\n",i)
#define sff(i) scanf("%lf",&i)
#define ll long long
#define mem(x,y) memset(x,y,sizeof(x))
#define INF 0x3f3f3f3f
#define eps 1e-6
#define PI acos(-1)
#define lowbit(x) ((x)&(-x))
#define zero(x) (((x)>0?(x):-(x))<eps)
#define fl() printf("flag\n")
#define MOD(x) ((x%mod)+mod)%mod
#define FAST ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);endl '\n'
ll gcd(ll a,ll b){while(b^=a^=b^=a%=b);return a;}
const int maxn=3e5+9;
const int mod=1e9+7;

template <class T>
inline void sc(T &ret)
{
    char c;
    ret = 0;
    while ((c = getchar()) < '0' || c > '9');
    while (c >= '0' && c <= '9')
    {
        ret = ret * 10 + (c - '0'), c = getchar();
    }
}

ll power(ll x,ll n)
{
    ll ans=1;
    while(n)
    {
        if(n&1) ans=ans*x%mod;
        x=x*x%mod;
        n>>=1;
    }
    return ans;
}

pair<int,int>a[maxn];
bool cmp(pair<int,int>a,pair<int,int>b)
{
    if(a.second==b.second) return a.first>b.first;
    return a.second>b.second;
}
multiset<int>s;

int main()
{
    //freopen("input.txt", "r", stdin);
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>a[i].first>>a[i].second;
    }
    sort(a,a+n,cmp);
    ll ans=0;
    ll len=0;
    for(int i=0;i<n;i++)
    {
        int bt=a[i].second;
        len+=a[i].first;
        ans=max(ans,len*bt);
        s.insert(a[i].first);
        if(s.size()>=k)
        {
            len-=*s.begin();
            s.erase(s.begin());
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
以下是一个简单的C语言歌曲列表顺序表的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SONGS 100 typedef struct { char title[100]; char artist[50]; int year; } Song; typedef struct { Song songs[MAX_SONGS]; int size; } SongList; void addSongToList(SongList *list, Song *song) { if (list->size >= MAX_SONGS) { printf("Error: Song list is full.\n"); return; } list->songs[list->size] = *song; list->size++; } void printSongList(SongList *list) { printf("Title\t\tArtist\t\tYear\n"); printf("-----------------------------------------------\n"); for (int i=0; i<list->size; i++) { printf("%s\t\t%s\t\t%d\n", list->songs[i].title, list->songs[i].artist, list->songs[i].year); } printf("-----------------------------------------------\n"); } void sortSongList(SongList *list) { for (int i=0; i<list->size-1; i++) { for (int j=0; j<list->size-i-1; j++) { if (strcmp(list->songs[j].title, list->songs[j+1].title) > 0) { Song temp = list->songs[j]; list->songs[j] = list->songs[j+1]; list->songs[j+1] = temp; } } } } int main() { SongList playlist; playlist.size = 0; Song song1 = {"Imagine", "John Lennon", 1971}; addSongToList(&playlist, &song1); Song song2 = {"Bohemian Rhapsody", "Queen", 1975}; addSongToList(&playlist, &song2); Song song3 = {"Like a Rolling Stone", "Bob Dylan", 1965}; addSongToList(&playlist, &song3); Song song4 = {"Smooth", "Santana", 1999}; addSongToList(&playlist, &song4); printf("Original song list:\n"); printSongList(&playlist); sortSongList(&playlist); printf("Sorted song list:\n"); printSongList(&playlist); return 0; } ``` 在这个示例中,我们定义了两个结构体类型:`Song`表示单个歌曲,`SongList`表示歌曲列表。 我们使用了一个`addSongToList`方法向列表中添加歌曲,一个`printSongList`方法打印列表中所有歌曲的信息,以及一个`sortSongList`方法对列表中的歌曲按照标题进行排序。 在主函数中,我们创建了一个`SongList`结构体并添加了几首歌曲。然后我们打印了原始的歌曲列表,对该列表进行排序,并再次打印排序后的列表。 这个简单的示例可以用作构建更复杂的歌曲管理系统的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值