• b_pat_魔术优惠卷 & 坏掉的键盘(排序+双指针)


    Magic Coupon

    每个优惠券上都印有一个整数 N,当你将此优惠券用于产品时,商店会给你 N 倍于该商品价值的钱。
    现在,给定你若干的优惠券和若干的商品,每个优惠券和商品最多只能选择一次,请问你最多可以从商店里拿回多少钱。

    方法一:排序+双指针

    思路
    对两个数组排序:

    • 对于负数和负数直接相乘即可(因为两个较小的负数相乘的结果最大);
    • 而对于负数和正数这种组合,则需要将负数过滤掉;然后确保后面的数对都是正数,最后从后往前累加正数对的乘积(贪心)
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1e5+5;
    
    int main() {
        std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
        ll n,m,C[N], P[N];
        cin>>n; for (int i=0; i<n; i++) cin>>C[i];
        cin>>m; for (int i=0; i<m; i++) cin>>P[i];
        
        sort(C, C+n), sort(P, P+m);
        ll ans=0, i=0, j=0;
        while (i<n && j<m && C[i]<0 && P[j]<0) ans+=C[i++]*P[j++];
        while (i<n && C[i]<=0) i++;
        while (j<m && P[j]<=0) j++;
        
        int ii=n-1, jj=m-1;
        while (ii>=i && jj>=j) ans+=C[ii--]*P[jj--];
        cout<<ans;
        return 0;
    }
    

    Broken Keyboard

    当你输入一些句子时,与坏掉的按键相对应的字符将不会出现在屏幕上。
    现在给定你应该键入的字符串以及你实际键入的字符串,请找出哪些按键坏了。

    思路
    首先,要找的字符一定在a中,a和b的字符无非等和不等:

    1. a[i]=b[i] 表示都打出来了
    2. 否则,视 a[i] 为坏掉的键,输出即可(注不能输出多次同一个字符)
    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
        string a,b; cin>>a>>b;
        int n=a.size(), m=b.size(), i=0, j=0, st[200]; memset(st, false, sizeof st);
    
        while (i<n) {   //m≤n
            char u=toupper(a[i]), v=toupper(b[j]);
            if (u==v) { //相同代表都打出来了
                j++;
            } else if (!st[u]) {
                st[u]=1, cout<<u;
            }
            i++;
        }
        return 0;
    }
    
  • 相关阅读:
    FFmpeg软件只是个解码编码软件,如果支持多种格式必须先安装好对应的库,下面就说下我装的库
    在Centos 6.5 X64下切割m3u8
    扩展自己的数组核心库
    关于小周同志在消息模块定位功能修改时存在的问题分析
    比对两个Word文件内容是否一致的C#解决办法
    如何实现artTemplate模板的可重用性,以此框架打造自己的自定义组件
    稍微谈一下 javascript 开发中的 MVC 模式
    Node.js 函数
    Node.js模块系统
    Node.js Stream(流)
  • 原文地址:https://www.cnblogs.com/wdt1/p/13716392.html
Copyright © 2020-2023  润新知