首页 > 其他分享 >E. Final Countdown

E. Final Countdown

时间:2024-02-18 22:55:08浏览次数:21  
标签:数字 int cin Countdown -- Final

原题链接

题解

本题中,每一位数字的每一次变化都会对答案贡献1,所以对于第 \(i\) 位数字而言,它的贡献为从最左边到现在的数,设为 \(f[i]\)

所以答案为 \(\sum_{i=1}^{n}f[i]\),可以用高精度加法解决
然而这样一来时间复杂度就超了 \(O(t·n^2)\)

所以我们尝试从中找寻一些规律
我们发现,第 \(i\) 的数字会对答案 \([1,n-i+1]\) 位上的数字贡献加 \(s[i]\) ,
而我们统计每一位数字又是线性的, 即我们在统计完第 \(i\) 位的数字时,还要再统计 \(n-i\) 个数字
所以我们可以在 \(O(t·n)\) 的时间内完成

code

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

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        int a[400005]={0};
        int n;
        cin >> n;
        char s[n+5];
        scanf("%s",s+1);
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            cnt+=s[i]-'0';
            a[n-i+1]=cnt;
        }

        for(int i=1;i<=n;i++)
        {
            a[i+1]+=a[i]/10;
            a[i]%=10;
        }

        int start=n+1;
        if(a[start])
        {
            while(a[start])
            {
                a[start+1]=a[start]/10;
                a[start]%=10;
                start++;
            }
            start--;
        }
        else
        {
            while(!a[start])start--;
        }
        for(int i=start;i>=1;i--)cout<<a[i];
        puts("");
    }

    return 0;
}

标签:数字,int,cin,Countdown,--,Final
From: https://www.cnblogs.com/pure4knowledge/p/18020119

相关文章

  • finally语句块相关面试题
    publicstaticvoidm(){try{System.out.println("try...");System.exit(0);}finally{System.out.println("finally...");}}上述程序中,finally语句块中的内容还能被执行吗?答:不能被执行......
  • final和static修饰符
    1final基本介绍2final使用细节3fanal和staticfinal和static应该是同一级别的修饰符,最先的是范围修饰符(publicprotected默认private)接着就是fanal(表示不可更改)和static(不用实例化对象,可以通过类名调用类的成员)final和static结合使用效率更高,一般......
  • P9725 [EC Final 2022] Chase Game 2
    原题链接题解1.添加几条边,使得对于任意节点,都有环存在,且所在最小环的大小皆大于32.看成有中心点的散发图,最优添加情况为叶子节点相连3.如果两个叶子节点的父节点为lca,那么这两个叶子节点不能直接相连4.看成若干个菊花,每朵菊花的花瓣都是叶子节点,同一朵花上的花瓣不能直接相连......
  • 「JOI 2024 Final」礼物交换
    [link](https://loj.ac/p/4092)考虑单次询问怎么做。不难发现这是一个二分图匹配,左部点$i$可以匹配到右部点$j$当且仅当$A_i\geB_j\andi\neqj$。不妨设$B$递增,这当然可以通过排序实现。什么时候不存在完美匹配呢?就是存在左部点$i$,$i$只能匹配到右部点$[1,i-1]$(也......
  • AT_ddcc2019_final_a 题解
    原题传送门题目描述:企鹅经过$1$个雪地方格需要$1$秒,经过$1$个冰地方格需要$\frac{1}{(k+2)}$秒。$k$是紧接着冰雪方格之前的冰雪方格数。在企鹅开始之前,高桥可以把$1$个雪方块变成冰方块。问企鹅离开起点后到达终点最少需要多少时间?思路分析:这道题是模拟+贪心......
  • EC-Final-2021
    比赛链接A.DFSOrder签到题,最小值是深度,最大值是总点数减去子树大小,跑一个dfs就行。codeforA#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intn,dep[N],siz[N],ans[N][2];vector<int>G[N];voiddfs(intu,intf){dep[u]=de......
  • 通信工具类countdownlatch和cyclicbarrier
    类作用semaphore限制线程数量exchanger两个线程交换数据countdownlatch递减屏障,线程等待直到计数器减为0时开始工作cyclicbarrier循环屏障,等屏障的线程数达到初始化值时,执行自定义的任务phaser增强的cyclicbarriercountdownlatch和cyclicbarrier区......
  • 食物网Final
    #include<bits/stdc++.h>usingnamespacestd;intn,m,ti,lamp;doubleE[21][101],N[21][101],mp[21][21],tot[21][101],tot_0[21];intmain(){cin>>n>>m>>ti;for(inti=1;i<=m;i++){intstart,end;cin>......
  • Java并发基础:CountDownLatch全面解析!
    内容概要CountDownLatch的优点在于能够简洁高效地协调多个线程的执行顺序,确保一组线程都完成后才触发其他线程的执行,适用于资源加载、任务初始化等场景。它提供了清晰的等待/通知机制,易于理解和使用,是提升多线程程序性能和可靠性的重要工具。核心概念CountDownLatch是java.util......
  • try catch 有finally吗
    try-catch语句块可以包含finally子句。finally子句是可选的,并且在try-catch语句块中的异常处理完成后始终会执行,无论是否发生异常。无论异常是否被捕获,finally子句中的代码都会被执行。这使得finally子句非常适合用于释放资源或执行清理操作,以确保代码的一致性和完整性。以下是......