洛谷【算法1-5】 贪心

P2240 【深基12.例1】部分背包问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int  N=110;
int n,t;
struct node{
    int m,v;
};
bool cmp(node aa,node bb){
    return aa.v*bb.m>bb.v*aa.m;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>t;
    node coin[N];
    for(int i=1;i<=n;i++) cin>>coin[i].m>>coin[i].v;
    sort(coin+1,coin+1+n,cmp);
    double ans=0;
    for(int i=1;i<=n;i++){
        if(coin[i].m<=t){
            ans+=coin[i].v;
            t-=coin[i].m;
        }else{
            ans+=(coin[i].v*t*1.0)/(coin[i].m*1.0);
            break;
        }
    }
    cout<<fixed<<setprecision(2)<<ans<<endl;
    
    return 0;
}
复制代码

P1223 排队接水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010;
int n;
struct node{
    int t,id;
};
bool cmp(node aa,node bb){
    return aa.t<bb.t;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    node peo[N];
    for(int i=1;i<=n;i++){
        cin>>peo[i].t;
        peo[i].id=i;
    }
    sort(peo+1,peo+1+n,cmp);
    double ans=0;
    for(int i=1;i<=n;i++){
        cout<<peo[i].id<<" ";
        ans+=peo[i].t*(n-i);
    }
    cout<<endl;
    cout<<fixed<<setprecision(2)<<ans/n<<endl;
    
    return 0;
}
复制代码

P1803 凌乱的yyy / 线段覆盖 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
int n;
struct node{
    ll begin,end;
};
bool cmp(node aa,node bb){
    return aa.end<bb.end;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    node line[n+1];
    for(int i=1;i<=n;i++) cin>>line[i].begin>>line[i].end;
    sort(line+1,line+1+n,cmp);
    ll t=line[1].end,ans=1;
    for(int i=2;i<=n;i++){
        if(line[i].begin<t)continue;
        ans++;
        t=line[i].end;
    }
    cout<<ans<<endl;
    return 0;
}
复制代码

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010;
ll n,ans;
priority_queue<int ,vector<int> , greater<int> > q;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        int x;cin>>x;
        q.push(x);
    }
    for(int i=1;i<=n;i++){
        if(q.size()>=2){
            int a=q.top();q.pop();
            int b=q.top();q.pop();
            ans+=(a+b);
            q.push(a+b);
        }
    }
    cout<<ans<<endl;
    return 0;
}
复制代码

P3817 小A的糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll n,x,a[N],ans;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>x;
    for(int i=1;i<=n;i++) cin>>a[i];
    if(a[1]>x){
        ans+=a[1]-x;
        a[1]=x;
    }
    for(int i=2;i<=n;i++){
        if(a[i]+a[i-1]>x){
            ans+=a[i]+a[i-1]-x;
            a[i]=x-a[i-1];
        }
    }
    cout<<ans<<endl;
    return 0;
}
复制代码

P1106 删数问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=260;
string s;
int a[N],k;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>s;
    cin>>k;
    int len=s.size();
    for(int i=0;i<len;i++) a[i]=s[i]-'0';
    for(int i=1;i<=k;i++){
        for(int j=0;j<len;j++){
            if(a[j]>a[j+1]){
                for(int k=j;k<len;k++)a[k]=a[k+1];
                len--;
                break;
            }
        }
    }
    int i=0,p=0;
    while(a[i]==0&&p<len-1) {
        i++;
        p++;
    }
    for(int i=p;i<len;i++) cout<<a[i];
    
    return 0;
}
复制代码

P1478 陶陶摘苹果(升级版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5010;
int n,s,a,b,ans;
struct node{
    int x,y;
}apple[N];
bool cmp(node aa,node bb){
    return aa.y<bb.y;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>s;
    cin>>a>>b;
    for(int i=1;i<=n;i++) cin>>apple[i].x>>apple[i].y;
    sort(apple+1,apple+1+n,cmp);
    for(int i=1;i<=n;i++){
        if((a+b)>=apple[i].x && (s-apple[i].y>=0)){
            s-=apple[i].y;
            ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}
复制代码

P5019 [NOIP2018 提高组] 铺设道路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int n,a[N],f[N];
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    f[1]=a[1];
    for(int i=2;i<=n;i++){
        if(a[i]<=a[i-1]){
            f[i]=f[i-1];
        }
        else {
            f[i]=f[i-1]+a[i]-a[i-1];
        }
    }
    cout<<f[n]<<endl;
    
    return 0;
}
复制代码

P1208 [USACO1.3] 混合牛奶 Mixing Milk - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e6+10;
const int M=5010;
ll n,m,ans;
struct node{
    ll p,a;
};
bool cmp(node aa,node bb){
    return aa.p<bb.p;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    node cow[M];
    for(int i=1;i<=m;i++) cin>>cow[i].p>>cow[i].a;
    sort(cow+1,cow+1+m,cmp);
    //for(int i=1;i<=m;i++)cout<<cow[i].p<<" "<<cow[i].a<<" ";
    for(int i=1;i<=m;i++){
        if(cow[i].a<=n){
            n-=cow[i].a;
            ans+=cow[i].p*cow[i].a;    
        }else{
            ans+=n*cow[i].p;
            break;
        }
    }
    cout<<ans<<endl;
    
    return 0;
}
复制代码

P1094 [NOIP2007 普及组] 纪念品分组 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3e4+10;
int w,n,a[N],ans;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>w>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n);
    //for(int i=1;i<=n;i++) cout<<a[i]<<" ";
    int l=1,r=n;
    while(l<=r){
        if(a[r]+a[l]<=w){
            ans++;
            l++;
            r--;
        }else{
            ans++;
            r--;
        }
    }
    cout<<ans<<endl;
    return 0;
}
复制代码

P4995 跳跳! - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=310; 
int n,a[N];
ll ans;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n);
    int l=1,r=n,t=0;
    ans+=a[r]*a[r];
    while(true){
        ans+=pow((a[r]-a[l]),2);
        //cout<<"**ans="<<ans<<endl;
        //cout<<"l="<<l<<"*****r="<<r<<endl;
        if(l<r){
            t=l;
            l=r-1;
            r=t;
            //cout<<"l="<<l<<"*****r="<<r<<endl;
        }else if(l>r){
            t=l;
            l=r+1;
            r=t;
        }else{
            break;
        }
    }
    cout<<ans<<endl;
    
    return 0;
}
复制代码

 

posted @   ACCbulb  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示