首页 > 其他分享 >ABC 379(E-F)

ABC 379(E-F)

时间:2024-11-10 17:31:34浏览次数:1  
标签:pre ABC int namespace long 379 ans define

ABC379

E

伪装高精的找规律题

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define pii pair<int, int>
#define mkp make_pair
using namespace std;
const int N = 3e5 + 5;
int pre[N], ans[N];
signed main()
{
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    string s;
    cin >> s;
    s = '1' + s;
    for (int i = 1; i <= n; i++){
        pre[i] = pre[i - 1] + i * (s[i] - '0');
    }
    int rem=0;
    for(int i=n;i>=1;i--){
        ans[i]=(rem+pre[i])%10;
        rem=(pre[i]+rem)/10;
    }
    if(rem!=0){
        cout<<rem;
    }
    for(int i=1;i<=n;i++)cout<<ans[i];
    cout<<endl;
}

F

单调栈二分或者单调栈树状数组


#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
#define mkp make_pair
using namespace std;
const int N = 2e5 + 5;
int pre[N], ans[N],t[N],h[N];
vector<pii>vt[N];
#define lowbit(x) (x&(-x))
int que(int x){
    int res=0;
    while(x>0){
        res+=t[x];
        x-=lowbit(x);
    }
    return res;
}
void upd(int x,int k){
    while(x<N){
        t[x]+=k;
        x+=lowbit(x);
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    int n, q;
    cin >> n >> q;
    stack<int> sta;
    for (int i = 1; i <= n; i++)
    {
        cin >> h[i];
    }
    for(int i=1;i<=q;i++){
        int l,r;cin>>l>>r;
        vt[l].push_back(mkp(r,i));
    }
    for(int i=n;i>=1;i--){
        for(auto j:vt[i]){
            ans[j.second]=que(n)-que(j.first);
        }   
        while(!sta.empty()&&h[sta.top()]<h[i])upd(sta.top(),-1),sta.pop();
        sta.push(i);upd(i,1);
    }
    for(int i=1;i<=q;i++)cout<<ans[i]<<endl;
}

标签:pre,ABC,int,namespace,long,379,ans,define
From: https://www.cnblogs.com/lyrrr/p/18538230

相关文章

  • ABC379E 题解
    ABC379E题解一道很好的题,开始还以为是高精度来着,但是发现不必要也不能用高精度,而是用一种技巧代替。题意Youaregivenastring\(S\)oflength\(N\)consistingofdigitsfrom1through9.Foreachpairofintegers\((i,j)\(1\leqi\leqj\leqN)\),define\(f(......
  • 小D的abc变换问题-动态规划或者递归
    问题描述小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换:将 'a' 变成 'bc'将 'b' 变成 'ca'将 'c' 变成 'ab'小D将重复该操作 k 次。你的任务是输出经过 k 次变换后,得到的最终字符串。例如:对于初始字符串 "abc",执......
  • 题解:[ABC379D] Home Garden
    [ABC379D]HomeGarden题意:开始有一个空集,有\(Q\)次操作,每次有标识数\(op\):若\(op\)为\(1\):为集合添加一个元素\(0\)。若\(op\)为\(2\):输入\(T\),为集合内所有元素增加\(T\)。若\(op\)为\(3\):输入\(H\),删除集合内不小于\(H\)的元素,并输出删除元素个数。......
  • 题解:AT_abc379_e [ABC379E] E - Sum of All Substrings
    很水的一道题。我们先把题目上各地的数字看成一个序列,然后考虑计算该序列分别会对答案的每一位产生多少贡献。具体的,我们从后往前考虑答案的每一位。通过简单推演可知,设你当前考虑到答案的第\(i\)个数字,那么原序列对这一位的贡献为\(\sum_{j=1}^{n-i+1}a_j\timesj\)。这个......
  • AtCoder Beginner Contest 379
    A-Cyclic题意输入\(3\)个连续字符\(a,b,c\),输出另外两种顺序。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>pii;constintmxn=1e6+5;voidsolve(){ chara,b,c; cin......
  • 题解:AT_abc379_d [ABC379D] Home Garden
    难度严格小于C题。你考虑每盆花被种植的时间一定单调不降,这启示我们去用二分。具体的,我们用一个数组\(a\)表示当前所有的花的种植时间,并记录一个当前时间\(t\)。对于每个1操作都在数组后面加上个元素\(t\),对于\(2\)操作让\(t\leftarrowt+T\)。对于操作3,能够摘取的......
  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)题解
    总体情况A-Cyclic题意给你一个三位整数\(N\),其中每个数字都是介于\(1\)和\(9\)之间的整数。设\(a\),\(b\),\(c\)分别是\(N\)的百位、十位和个位数。打印一个按此顺序排列\(b\),\(c\),\(a\)所组成的整数,以及一个按此顺序排列\(c\),\(a\),\(b\)所组成......
  • AT_abc379_g
    过于一眼的轮廓线dp。兼纪念abc首场无伤AK。首先我们可以经过缜密的计算的得到矩形的宽不超过\(14\)。然后现在你有\(4\)个数(边界视作\(0\))。不难想到\(4\)进制状压轮廓线dp。轮廓线dp状压dp的一种,轮廓线是分隔已处理部分与未处理部分的线。在本题中,轮廓线......
  • [ABC365C] Transportation Expenses
    [ABC365C]TransportationExpenses题面翻译【题目描述】有NNN个人参加某项活动,第ii......
  • ABC378 E 题解
    ABC378E题解题意给定序列\(A\),求\(\sum_{1\lel\ler\len}(\sum_{l\lei\ler}A_i\modM)\)计算所有区间和取模之后的结果再求和。注意外层是没有取模的。如果是外层也要取模的情况,那还是十分好办的,直接贡献法计算每个数字被统计了多少次就可以了。问题就在于外层没......