codeforces:1140C(greedy)

贪心

typedef long long ll;

#include<bits/stdc++.h>
using namespace std;
#define maxn 300050

struct Sang{
    ll x,y;
    bool operator < (const Sang & t) const{
        return  y > t.y;
    }
    void putit(ll a,ll b){
        x=a,y=b;
    }
};

Sang s[maxn];

int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        ll t1,t2;
        scanf("%lld%lld",&t1,&t2);
        s[i].putit(t1,t2);
    }
    sort(s,s+n);
    priority_queue<ll,vector<ll>,greater<ll> > q;
    ll ans,sum;
    ans = sum = 0;
    for(int i=0;i<n;i++){
        sum += s[i].x;
        q.push(s[i].x);
        if(q.size() > k) sum-=q.top(),q.pop();
        ans = max(ans,sum*s[i].y);
    }
    printf("%lld\n",ans);
    return 0;
}
### Codeforces Problem 1985 Solution or Question Details The reference provided mentions **Codeforces Round #432 (Div. 2)** but not specifically Problem 1985[^1]. However, it is important to note that Codeforces problems are typically categorized by their round numbers and individual problem identifiers like A, B, C, etc., rather than specific numerical IDs such as 1985. To address this query directly, let us consider the structure of similar problems often encountered in competitive programming platforms: #### General Approach for Competitive Programming Problems Competitive programming questions generally involve algorithmic challenges where constraints dictate efficient solutions using techniques such as dynamic programming, greedy algorithms, graph traversal, sorting, binary search, among others. The referenced material discusses scenarios involving bitmasking operations and optimization strategies within certain bounds[^4]. For instance, when solving a problem requiring evaluation across multiple subsets: ```cpp ans = INFINITY; for(bitmask = 0; bitmask < (1 << n); bitmask++) { int score = 0; int effort = 0; for(int i = 0; i < n; i++) { if ((bitmask >> i) & 1) { // Check if bit 'i' is turned on. score += fighters[i].score; effort += fighters[i].effort; } } bool valid = true; for(auto condition : conditions) { if (!satisfies_condition(score, effort, condition)) { valid = false; break; } } if(valid && meets_rank_requirements(rank, k)){ ans = std::min(ans, effort); } } ``` This code snippet demonstrates an approach commonly used in combinatorial subset selection with additional validation checks against predefined criteria. It aligns closely with subproblems described under references discussing bitmask-based enumeration methods. Additionally, another type of problem involves checking properties over ranges defined by pairs `(l,r)` which may require determining whether any column remains monotonically increasing after filtering rows accordingly[^2]: ```python def check_sorted_columns(table_rows_l_to_r): m = len(table_rows_l_to_r[0]) # Number of columns result = [] for j in range(m): col_is_non_decreasing = True prev_val = float('-inf') for row_index in range(len(table_rows_l_to_r)): current_value = table_rows_l_to_r[row_index][j] if current_value < prev_val: col_is_non_decreasing = False break prev_val = current_value if col_is_non_decreasing: result.append(j) return "Yes" if result else "No" ``` While these examples do not explicitly pertain to Problem 1985 due to lack of direct information about its content, they illustrate common patterns found in related contests hosted on Codeforces.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值