首页 > 其他分享 >YACS2023年6月乙组

YACS2023年6月乙组

时间:2023-08-09 20:47:38浏览次数:41  
标签:std int ll 乙组 long cin using YACS2023

T1:两数归零

\(a_i + a_j = 0 \Leftrightarrow a_j = -a_i\),用 std::map<int, int> 来统计即可

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n);
    rep(i, n) cin >> a[i];
    
    ll ans = 0;
    map<int, int> mp;
    for (int x : a) {
        ans += mp[-x];
        mp[x]++;
    }
    
    cout << ans << '\n';
    
	return 0;
}

T2:牛奶供应(四)

记 \(x = p+(m-d_i)\)

显然每次应该优先购买 \(x\) 最小的那一次,这样就能保证 \(x\) 小的尽可能多买,\(x\) 大的尽可能少买
可以用 std::multiset 来维护

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;
using P = pair<int, int>;

int main() {
    int n, m, L;
    cin >> n >> m >> L;
    
    multiset<P> s;
    rep(i, n) {
        int d, w, p;
        cin >> d >> w >> p;
        p += m-d;
        s.emplace(p, w);
    }
    
    ll ans = 0;
    while (L) {
        auto [p, w] = *s.begin();
        if (L <= w) {
            ans += (ll)L*p;
            break;
        }
        else {
            ans += (ll)w*p;
            s.erase(s.begin());
            L -= w;
        }
    }
    
    cout << ans << '\n';
    
    return 0;
}

标签:std,int,ll,乙组,long,cin,using,YACS2023
From: https://www.cnblogs.com/Melville/p/17617949.html

相关文章

  • YACS2023年7月乙组
    T1:树的计数注意到,深度为\(2\)的点一定是深度为\(1\)的点的儿子节点,深度为\(3\)的点一定是深度为\(2\)的点的儿子节点.....那么深度为\(i\)的点可以是深度为\(i-1\)的儿子节点,对于此题是一个经典的分步乘法计数原理,把深度为\(2\)的儿子节点确定下来是第一步,深度为......
  • YACS2022年10月乙组
    T1:录制节目可以将原题转化成有\(n\)条线段,可以保留若干条线段,并且可以分成两部分,使得每部分的线段互不相交先将所有线段按右端点做升序排序,且按左端点做降序排序然后维护两个变量last1和last2last1:第一个部分的最后的端点last2:第二个部分的最后的端点尽量让\(\min(......
  • YACS2023年2月乙组
    T3:最大子集本题是01背包的变种题记dp[i]表示选到的奶牛的智商总和为\(i\)时对应的情商总和的最大值这里由于\(x\)可能是负数,所以需要将\(i\)向后偏移\(3e5\)......
  • YACS2023年2月丙组
    T1:格式改写代码实现s=input()cnt=0forcins:ifc.isupper():cnt+=1ans=min(cnt,len(s)-cnt)print(ans)T2:倍数统计代码实......
  • YACS 2023年1月月赛 乙组 T4 加与乘(二) 题解
    题目链接应大家的要求,早上起来更一下乙组T4。这一道题目我们发现不仅会加元素了,还会重复执行任务。很容易想到用两个树状数组来维护每个任务的执行次数,以及每个单元格......
  • YACS2023年1月乙组
    T1:无限延展见P3612[USACO17JAN]SecretCowCodeS代码实现#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intmain(){ strings;llk;......
  • YACS2023年1月丙组
    T3:找零对于\(20\)块,优先找\(10+5\),其次是\(5+5+5\)代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<(n);++i)usingnamespacestd;......
  • YACS 2022年12月月赛 乙组 T1 拼接单词 题解
    一道结论题,代码相当的短。我们先来考虑会拼出重复的情况:那必定是第一个字符串里有一个$a$(其他的也行),第二个也有一个$a$。那么我们就可以选择拿第一个字符串$a$前面的......
  • YACS 2022年12月月赛 乙组 T2 八进制小数 题解
    纪念一下,两件事。$1.$打$YACS$一年了,时间过得好快啊。$2.$第一次$AK$乙组。高精板子。$8$进制转十进制,很简单。小数部分第一位的数字乘上$8^{-1}$,第二位就乘上......
  • YACS 2022年11月月赛 乙组 T3 菜单设计 题解
    题目链接上完编程课回来的深夜,更一篇吧。这一题一看数据范围$:18$,阶乘暴力打不了,就是状压。其实我还是比较喜欢状压的,不过这几个月怎么这么多状压?首先:设计状态不难发......