首页 > 编程语言 >洛谷【算法1-5】 贪心

洛谷【算法1-5】 贪心

时间:2024-02-15 16:45:41浏览次数:28  
标签:node 洛谷 int ll cin long 算法 ans 贪心

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;
}

 

标签:node,洛谷,int,ll,cin,long,算法,ans,贪心
From: https://www.cnblogs.com/accbulb/p/18016335

相关文章

  • svm算法
    支持向量机(supportvectormachines,SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合......
  • 【无评级杂题】DP/贪心
    题目这题后来看了看网上的思路,发现贪心就能做,亏我还写了个O(2*N)的DP...浪费时间了属于是my-code#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>#include<queue>......
  • 【算法】【动态规划】过桥问题
    1 题目在一个夜黑风高的晚上,有n(n<=50)个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不大于两人通过,他们只有一个手电筒,所以每次过桥的两个人需要把手电筒带回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是......
  • 回溯算法模板
    回溯算法的模板通常包含递归函数和回溯过程。以下是一个通用的回溯算法模板:defbacktrack(start,path,other_parameters):#满足结束条件时,将当前路径加入结果ifsatisfies_end_condition:result.append(path[:])return#从start开始遍历可......
  • 贪心题目合集
    磁带存储:有\(n\)个磁带,每个片段有两个参数:时长\(t_i\)和频率\(a_i\)。以某种顺序把片段排在磁带里,每个片段的花费为(播放完这个片段的时刻)乘以(该片段的频率)求最小花费和。因为两个片段交换,对之后没有影响。所以可以考虑一个顺序中,如果\(x,x+1\)片段换位置后花费的变化。......
  • 反悔贪心(模拟费用流)
    反悔贪心(模拟费用流)贪心本身是不能反悔的,但如果当前最优解不是全局最优解,我们就需要通过反悔来贴近全局最优解。一般用堆来实现,即堆中维护当前可以用来反悔的决策,然后每次取最优的决策。其实从更一般的角度,反悔贪心就是建出费用流模型,然后用数据结构来模拟增广的操作。一些例题......
  • 字符串KMP算法详解
    引入字符串kmp算法用于解决字符串匹配的问题:给出两个字符串\(s_1\)和\(s_2\),若\(s_1\)的区间\([l,r]\)子串与\(s_2\)完全相同,则称\(s_2\)在\(s_1\)中出现了,其出现位置为\(l\)。现在请你求出\(s_2\)在\(s_1\)中所有出现的位置。很显然,我们能够想到暴力求......
  • 「杂题乱刷」洛谷 P1831
    题目链接一道简单数位dp题。多设一个支点和力矩和然后套板子就做完了。参考代码:点击查看代码/*Tips:你数组开小了吗?你MLE了吗?你觉得是贪心,是不是该想想dp?一个小时没调出来,是不是该考虑换题?*/#include<bits/stdc++.h>usingnamespacestd;#definemapunordered_m......
  • Tarjan 算法
    part1:离线求\(lca\)将走过的点且未回溯的标记为\(1\),已回溯的标记为\(2\),未访问标记为\(0\)把对于一点\(x\)的询问\(y\)存进相应的\(vector\),当回溯时判断如果询问的点标记为\(2\),则\(lca\)为询问的点\(y\)到根的路径上最早标记为\(1\)的点但直接找复杂度不对......
  • 使用lanczos算法进行的预处理共轭梯度算法(Preconditioned Conjugate Gradients Metho
    构造预处理矩阵M(对称正定)下图来自:预处理共轭梯度法(1)......