首页 > 其他分享 >C. Torn Lucky Ticket

C. Torn Lucky Ticket

时间:2024-04-27 15:45:18浏览次数:23  
标签:pre ten 要么 ll Torn Lucky 数分 Ticket 后面

原题链接

题解

1.题目对 \(i,j\) 没有限制,也就是说,i可以大于j,可以小于j,也可以等于j
2.找普适规律。不管谁和谁成功配对,要么两个数长度相等;要么前面的数长度大于后面的数,于是前面的数分后半部分出来;要么后面的数大于前面的数,于是后面的数分前半部分出来;

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll ten[7];
ll a[200005];
int main()
{
    ten[0]=1;
    for(ll i=1;i<=6;i++) ten[i]=ten[i-1]*10;

    ll n;
    cin>>n;
    ll ans=0;
    for(ll i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n);


    map<ll,ll> dp[7];
    for(ll i=1;i<=n;i++)
    {
        ll x=a[i];
        ll sum=0,len=0,tem=x;
        while(tem)
        {
            sum+=tem%10;
            len++;
            tem/=10;
        }

        ans+=dp[len][sum]*2;//左右呼唤

        ll pre=0;
        for(ll j=len;j>=len/2+2;j--)//后面的数分前半部分出来
        {
            pre=pre+x/ten[j-1]%10;//是数字之和不是数字截取
            ans+=dp[(j-1)-(len-(j-1))][sum-pre-pre];
        }

        pre=0;
        for(ll j=1;j<=len/2-(1-len%2);j++)//前面的数分后半部分出来
        {
            pre=pre+x/ten[j-1]%10;
            ans+=dp[len-j-j][sum-pre-pre];
        }

        dp[len][sum]++;
    }


    cout<<ans+n;
    return 0;
}

标签:pre,ten,要么,ll,Torn,Lucky,数分,Ticket,后面
From: https://www.cnblogs.com/pure4knowledge/p/18162124

相关文章

  • python tornado简易ws聊天室测试
    #-*-coding:utf-8-*-from__future__importunicode_literals,print_functionfromdatetimeimportdatetimeimporttornadofromtornado.optionsimportdefine,optionsfromtornado.websocketimportWebSocketHandler#设置服务器端口define("port",de......
  • 24/04/13 CF494C Helping People / HDU5866 Lucky E
    CF494C:题面翻译有一个长为\(n\)的数列,初始时为\(a_{1..n}\)。给你\(q\)个操作,第\(i\)个操作将\([l_i,r_i]\)内的数全部加一,有\(p_i\)的概率被执行。保证区间不会交错,即:\(\foralli,j\in[1,q],l_i\ler_i<l_j\ler_j\)或\(l_i\lel_j\ler_j\ler_i\)或\(l_j\le......
  • CF244B Undoubtedly Lucky Numbers 题解
    题目简述给定一个$n$,问有多少个小于等于$n$的数只由两个不同的数字$x$和$y$组成。题目分析直接枚举肯定不行,我们考虑枚举$x$和$y$,再利用深搜,生成所有不大于$n$且只由$x$和$y$组成的数字,利用map去重,统计答案即可。代码#include<iostream>#include<map>usi......
  • CF121A Lucky Sum 题解
    题面。不好意思,又双把通过率拉低了。在CF上交了22次才过。这里给出不同的写法。思路规律其他题解写得都很好,这里不需要再讲述如何推出规律。预处理出前\(5000\)个符合要求的数(其实我也不知道处理多少个刚好够,就随便写了一个数)。接下来借用到一点分块思想,将整个\([l,r]\)......
  • C. Ticket Hoarding
    C.TicketHoardingAstheCEOofastartupcompany,youwanttorewardeachofyour$k$employeeswithatickettotheupcomingconcert.Theticketswillbeonsalefor$n$days,andbysometimetravelling,youhavepredictedthatthepriceperticketat......
  • Lucky Chains
    题目链接EducationalCodeforcesRound139(RatedforDiv.2)D.LuckyChains取模的性质,更相减损术思路:我们假设链的长度为www,不妨设......
  • 「CF1766D」 Lucky Chains
    题意给定\(T\)组整数\(x,y(1\lex,y\le10^7)\),求出整数\(k\),使得\((x,y),(x+1,y+1),\cdots,(x+k,y+k)\)互质,\((x+k+1,y+k+1)\)不互质,若\(k\)有无数解,输出-1,否则输出\(k\)的值。分析当\(y-x=1\)时,\(k\)有无数组解。因为\(\gcd(x+k,y+k)\ne1\),由小学奥数的“......
  • 【前端素材】推荐优质电影票购票商城网站设计Ticket平台模板(附源码)
     一、需求分析1、功能分析在线电影票购票商城是指一个通过互联网提供电影票购买服务的平台。它通常包括以下功能:电影信息展示:商城会展示当前热映电影、即将上映电影和影片详情,包括电影名称、演员阵容、导演、剧情简介、上映时间等信息,帮助用户选择电影。影院选择和座位......
  • A. Rudolf and the Ticket
    题解简单的二分应用,对于每个bi我们只需找到最大的ci使得bi+ci<=target即可code #include<bits/stdc++.h>usingnamespacestd;inta[105],b[105];intmain(){//freopen("input.txt","r",stdin);intt;cin>>t;while(t--){int......
  • CF145C Lucky Subsequence 题解
    首先,我们对这个幸运数进行分析,发现:\(10^9\)以内只有\(1023\)个幸运数,即\(\sum\limits_{i=0}^92^i\)个。考虑对幸运数和非幸运数分类讨论。幸运数部分:01背包裸题,\(dp_{i,j}\)表示前\(i\)个幸运数里选了\(j\)个,转移方程为\(dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}\tim......