首页 > 其他分享 >D4-1贪心

D4-1贪心

时间:2023-11-11 17:56:02浏览次数:42  
标签:cout int cin long tie D4 define 贪心

排队接水

#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 1005, M = N, mod = 1e9 + 7;
using namespace std;
struct node{
    int i;
    double x;
}a[N];
bool cmp(node a, node b)
{
    if(a.x == b.x) return a.i < b.i;
    else return a.x < b.x;
}
int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; i ++)
    {
        double x;
        cin >> x;
        a[i] = {i, x};
    }
    sort(a + 1, a + 1 + n, cmp);
    double sum = 0, now = 0;
    for(int i = 1; i <= n; i ++)
    {
        cout << a[i].i << " ";
        now += a[i].x;
        sum += now;
    }
    cout << endl;
    printf("%.2lf", (double)sum / n);
    return 0;
}

独木舟

#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 1e5, M = N, mod = 1e9 + 7;
using namespace std;
int a[N];
int main()
{
    int w, n;
    cin >> w >> n;
    for(int i = 1; i <= n; i ++) cin >> a[i];
    sort(a + 1, a + 1 + n);
    int l = 1, r = n, cnt = 0;
    while(l <= r)
    {
        if(l == r)
        {
            cnt ++;
            break;
        }
        if (a[l] + a[r] > w)
        {
            r --;
            cnt ++;
        }
        else l++, r--, cnt++;
    }
    cout << cnt;
    return 0;
}

删数问题

#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 1005, M = N, mod = 1e9 + 7;
using namespace std;
int main()
{
    string s;
    int n;
    cin >> s >> n;
    while(n --)
    {
        bool flag = false;
        for(int i = 0; i + 1 < s.size(); i ++)
        {
            if(s[i] > s[i + 1])
            {
                s.erase(i, 1);
                flag = true;
                break;
            }
        }
        if(!flag) s.erase((int)s.size() - 1, 1);
    }
    bool flag = false;
    for(int i = 0; i < s.size(); i ++)
    {
        if(s[i] != '0') flag = true;
        if(flag) cout << s[i];
    }
    if(!flag) cout << 0 << endl;
    return 0;
}

最小新整数

#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 1005, M = N, mod = 1e9 + 7;
using namespace std;
int main()
{
    int T;
    cin >> T;
    while(T --)
    {
        string s;
        int n;
        cin >> s >> n;
        while(n --)
        {
            bool flag = false;
            for(int i = 0; i + 1 < s.size(); i ++)
            {
                if(s[i] > s[i + 1])
                {
                    s.erase(i, 1);
                    flag = true;
                    break;
                }
            }
            if(!flag) s.erase((int)s.size() - 1, 1);
        }
        while(s.size() > 1 && s[0] == '0')
        {
            s.erase(0, 1);
        }
        cout << s << endl;
    }
    return 0;
}

拦截导弹

//贪心
#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 1e5 + 10, M = N, mod = 1e9 + 7;
using namespace std;
int n, cnt = 1, a[1005], b[1005];
int main()
{
    int x;
    while(cin >> x)
    {
        a[++ n] = x;
    }
    b[1] = a[1];
    for(int i = 2; i <= n; i ++)
    {
        int flag = false;
        for(int j = 1; j <= cnt; j ++)
        {
            if(b[j] >= a[i])
            {
                b[j] = a[i];
                flag = true;
                break;
            }
        }
        if(!flag) b[++ cnt] = a[i];
    }
    cout << cnt;
    return 0;
}

//dp
#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 1005, M = N, mod = 1e9 + 7;
using namespace std;
int f[N], a[N];
int main()
{
    int n = 0, ans = 0, x;
    while(cin >> x)
    {
        a[ ++ n] = x;
    }
    for(int i = 1; i <= n; i ++)
    {
        f[i] = 1;
        for(int j = 1; j < i; j ++)
        {
            if(a[i] > a[j])
            {
                f[i] = max(f[i], f[j] + 1);
                ans = max(f[i], ans);
            }
        }
    }
    cout << ans;
    return 0;
}

标签:cout,int,cin,long,tie,D4,define,贪心
From: https://www.cnblogs.com/acwhr/p/17826146.html

相关文章

  • 贪心
    什么是贪心在每次决策的时候都采取当前意义下的最优策略,一般贪心问题的难点在于最优策略的选择。例题:有\(n\)项工作,每项工作从\(s_i\)时间开始,\(t_i\)时间结束,对于每项工作你都可以选择是否要参加,若参加则必须全程参与。那么在不能同时参与多个工作的情况下,最多可以参加几......
  • CF1861F Four Suits【网络流,贪心】
    有\(n\)个人,\(4\)种不同的卡牌,初始第\(i\)个人有\(a_{i,j}\)张第\(j\)种卡牌。你是局外人,手里第\(j\)种卡牌有\(b_j\)个,你现在要把你的卡牌分给这\(n\)个人,使得分完之后每个人手里的卡牌总数相等,保证有解。第\(i\)个人最终的分数是手里每种卡牌的数量的最大值......
  • 贪心算法和快排解决活动安排
    #include<stdio.h>#include<stdlib.h>//快速排序法voidquick_sort(int*a,int*b,intlow,inthigh){if(low>=high){return;}//递归要有一个条件使它停下来。//使数组按右边的大小从上到下依次增大intleft=low;intright=high;inttemp=rand()%(high-......
  • /var/lib/docker/overlay2/41a765b3cfaa278a67414c5b89234adfdebac7182d4bcd1e7c8a2c6
    现象:Error:Errorresponsefromdaemon:errorcreatingoverlaymountto/var/lib/docker/overlay2/41a765b3cfaa278a67414c5b89234adfdebac7182d4bcd1e7c8a2c6ac250dfb7-init/merged:nosuchfileordirectory原因:由于Docker存储空间中的一些残留文件或损坏的文件系统引......
  • 区间分组贪心
    是我见识少了,真没见过这种的……传送门如果看成有序排列的\((x,y)\)配对,那么可以写成\(r_x-l_y\)。(因为如果是负数,会在\(y,x\)的时候被枚举到,这样就不用考虑max和绝对值了)。于是,就是分成恰好长度为\(\frac{n}{2}\)的两组,一组贡献为\(r_i\),一组贡献为\(l_i\),求贡献最大值。假设......
  • 随机化贪心
    随机化什么是随机化算法?随机化做法,就是基于当前算法而言,通过正确算法求解会TLE或者MLE,但是出于骗分的目的,我对可能答案中的一些序列或者值进行查找,在我随机瞎找的这些值中去找正确答案,最后,所得出的答案具有极大可能性为正确答案,甚至于百分之一百。如果题目要求最优解,但难以......
  • 贪心算法(C语言)
    一、会议安排问题1.1问题(1)对于每个会议i,起始时间bi和结束时间ei,且bi<ei(2)[bi,ei]与[bj,ej]不相交,则会议i和会议j相容,bi≥ej或bj≥ei(3)目标:在有限的时间内,尽可能多地安排会议1.2分析选择最早结束的会议1.3实现(1)初始化:按结束时间递增排序(2)选中第一......
  • 贪心算法之找零钱
    defgreedy_change(amount,coins):coins.sort(reverse=True)#将硬币按面额从大到小排序change=[]forcoinincoins:whileamount>=coin:amount-=coinchange.append(coin)#将硬币加入到找零列表中returnch......
  • 贪心法
      ......
  • C++U4-02-贪心算法2
    上节课作业部分  [纪念品分组]  【算法分析】贪心算法:先对数组从小到大排序,用l=1,r=n指针指向首尾元素;如果pl+pr≤w,则将pl和pr分一组,指针l++,r--。如果pl+pr>w,则将pr单独作为一组,指针r--。如此反复直到取完所有元素。#include<iostream>#include<a......