CF1808C 题解

Posted OceanLiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1808C 题解相关的知识,希望对你有一定的参考价值。

可以考虑从小到大枚举差值$i$,再枚举最小数字$j$,这样当前的最大数字就是$i+j$,然后进行搜索,看在满足当前状态下是否能找到一个合法的数字,实际上就是在进行数位DP。

搜索中一些变量的解释:pos表示当前位,mx最大数字,mi最小数字,p前面枚举的数字是否在下界,q上界,now已经枚举的数字,limit前导$0$标志。

 

#include<bits/stdc++.h>
#define int long long
using namespace std;
bool flag=0;
int T,l,r,a[20],b[20];
void dfs(int pos,int mx,int mi,int p,int q,int now,int limit)

    if (flag==1) return;
    if (pos==0)
    
        flag=1;
        cout<<now<<endl;
        return;
    
    int st=0,ed=9;
    if (p) st=a[pos];
    if (q) ed=b[pos];
    for (int i=st;i<=ed;i++)
    
        if ((mi<=i&&i<=mx)||(limit&&(i==0)))
            dfs(pos-1,mx,mi,p&&(i==a[pos]),q&&(i==b[pos]),now*10+i,limit&&(i==0));
        if (flag==1) break;
    

signed main()

    cin>>T;
    while(T--)
    
        cin>>l>>r;
        for (int i=1;i<=19;i++)
        
            a[i]=l%10;l/=10;
            b[i]=r%10;r/=10;
        
        flag=0;
        for (int i=0;i<=9;i++)//mx-mi
            for (int j=0;j+i<=9;j++)//mi
                dfs(19,j+i,j,1,1,0,1);
    
    return 0;

 

cf:c题

题目:

代码:

技术分享图片
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<math.h>
const int max_=1e5+5;
using namespace std;
vector<int>ve[max_];
int sum[max_];
int main()
{
    int n,m;
     int ans,maxm=0;
     int len=0;
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        int x,w;
        scanf("%d %d",&x,&w);
        ve[x].push_back(w);
    }
    for(int i=1;i<=m;i++)
    {
        sort(ve[i].begin(),ve[i].end(),greater<int>());
        len=max(len,(int)ve[i].size());
    }
    for(int i=1;i<=m;i++)
    {
        ans=0;
        for(int j=0;j<ve[i].size();j++)
        {
            ans+=ve[i][j];
            if(ans<0)
                break;
            sum[j]+=ans;
        }
    }
    for(int i=0;i<len;i++)
        maxm=max(sum[i],maxm);
    cout<<maxm<<endl;
}
View Code

 

以上是关于CF1808C 题解的主要内容,如果未能解决你的问题,请参考以下文章

题解CF519E

题解-比赛CF1332

CF398B题解

CF1354&CF1355 简要题解

题解 CF359D

CF1051G 题解