codeforces div3 #776

1/A题:

https://codeforces.com/contest/1650/problem/A

这题其实很简单的,因为要同时删除两个数,我们看看我们最终要得到的数在这组数中的什么位置,如果在奇数位,那么就一定可以通过删除数字来得到。

复制代码
#include <iostream>
#include <cstring>
using namespace std;
int t;
int main() {
    cin >> t;
    while(t--) {
        string s;
        cin >> s;
        char c;
        cin >> c;
        int leng = s.size();
        int flag = 0;
        for(int i = 0; i < leng; i++) {
            if(s[i] == c) {
                if((i+1)%2) {
                    flag = 1;
                    break;
                }        
            }
        }
        if(flag) cout << "YES" << endl;
        else cout << "NO" << endl; 
    }
    return 0;
}
复制代码

2/B题:

https://codeforces.com/contest/1650/problem/B

我们应该尽量让x去趋近n*a-1,这样x%a就会得到最大的值,同时,x/a也要趋于最大,但是我们应当首先考虑的是x趋近n*a-1 因为这样的效益是最大的。

在区间[l,r]中,我们从最右端开始,最小的可能就是r/x+r%x了(因为要求最大嘛),然后看看r减去r%x-1的数是否在区间里,如果在的话,那么这个就是最大值,否则就是r了。

复制代码
#include <bits/stdc++.h>
using namespace std;
#define long long int
#define forn(i,n) for(int i = 0; i < int(n); i++)

void solve() {
    int l, r, a;
    cin >> l >> r >> a;
    int ans = r/a+r%a;
    int t = r/a*a-1;
    if(t>=l) ans = max(ans, t/a+t%a);
    cout << ans << endl;
}
signed main() {
    int t;
    cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}
复制代码

 

3/C题:

https://codeforces.com/contest/1650/problem/C

这题思路很牛,我以前都没见过,,,orz 好好学习吧。

复制代码
#include <bits/stdc++.h> 
using namespace std;
#define forn(i, n) for(int i = 0; i < int(n); i++)
#define long long int 
struct node {
    int w, p, id;
};
void solve() {
    int n, m;
    cin >> n >> m;
    vector<node>q(m);
    forn(i,m) {
        cin >> q[i].p >> q[i].w;
        q[i].id = i+1;
    }
    sort(q.begin(), q.end(), [](node a, node b){
        return a.w < b.w;
    });
    sort(q.begin(), q.begin()+2*n, [](node a, node b){
        return a.p < b.p;
    });
    int sum = 0;
    forn(i,n){
        sum += q[i].w+q[2*n-i-1].w;
    }
    cout << sum << endl;
    forn(i,n){
        cout << q[i].id << ' ' << q[2*n-i-1].id << endl; 
    }
    cout << endl;
}
int main() {
    int t;
    cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}
复制代码

 

posted @   飘向远方丶  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示