社区讨论

样例过但屏幕红温求调

P2602[ZJOI2010] 数字计数参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@m67x2p8q
此快照首次捕获于
2025/01/22 21:05
去年
此快照最后确认于
2025/11/04 11:00
4 个月前
查看原帖
听取WA声一片
CPP
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#define int long long
using namespace std;
typedef long long ll;
inline ll read(){
    ll f=1,sum=0;char c=getchar();
    while(!isdigit(c)) {if(c=='-') f=-1;c=getchar();}
    while(isdigit(c)) {sum=sum*10+c-'0';c=getchar();}
    return sum*f;
}
int a[20],dp[20][20];
int dfs(int pos,int num,int ans,bool flag1,bool flag2){
    if(!flag1 && !flag2 && dp[pos][ans]!=-1) return dp[pos][ans];
    if(pos==0) return ans;
    int l=0,r=9;
    if(flag1) r=a[pos];
    int tot=0;
    for(int i=l;i<=r;i++){
        tot+=dfs(pos-1,num,ans+(i==num && !(i==0 && flag2)),(flag1 && i==r),(flag2 && i==l));
    }
    if(!flag1 && !flag2) dp[pos][ans]=tot;
    return tot;
}
int sol(int r,int i){
    memset(a,0,sizeof(a));
    int id=0;
    while(r){
        a[++id]=r%10;
        r/=10;
    }
    return dfs(id+1,i,0,1,1);
}
signed main(){
    int l,r;
    cin>>l>>r;
    for(int i=0;i<=9;i++){
        memset(dp,-1,sizeof(dp));
        int ans=sol(r,i)-sol(l-1,r);
        cout<<ans<<" ";
    }
    return 0;
}
给关注

回复

6 条回复,欢迎继续交流。

正在加载回复...