首页 > 其他分享 >[JSOI2008] 最大数 (ST表)

[JSOI2008] 最大数 (ST表)

时间:2024-10-02 10:11:34浏览次数:8  
标签:最大数 int Max JSOI2008 ST NowSize ans lld

算法

观察到插入都在末尾进行
考虑逆向ST表

代码

#include <bits/stdc++.h>
const int MAXSIZE = 2e5 + 20;
#define int long long

int Time, D;

int t = 0;

/*反向st表方便处理末尾的插入*/
class reverse_ST
{
    private:
        int Max[MAXSIZE][20];

    public:
        int NowSize;

        void init()
        {
            memset(Max, 0, sizeof(Max));
            NowSize = 0;
        }

        void insert(int x)
        {
            Max[++NowSize][0] = x;
            for(int i = 1; NowSize - (1 << i) >= 0; i++)
            {
                Max[NowSize][i] = std::max(Max[NowSize][i - 1], Max[NowSize - (1 << (i - 1))][i - 1]);
            }
        }

        int find(int L, int R) 
        {
            int Length = R - L + 1;
            int k = log2(Length);

            return std::max(Max[R][k], Max[L + (1 << (k)) - 1][k]);
        }
}ST;

void solve()
{
    char type;
    ST.init();
    while(Time--)
    {
        std::cin >> type;
        if(type == 'A')
        {
            int x;
            scanf("%lld", &x);
            ST.insert((x + t) % D);
        }else{
            int L;
            scanf("%lld", &L);
            int ans = ST.find(ST.NowSize - L + 1, ST.NowSize);
            printf("%lld\n", ans);
            t = ans;
        }
    }
}

signed main()
{

    scanf("%lld %lld", &Time, &D);

    solve();
    return 0;
}

总结

代码

注意ST表的查询方式为

int Length = R - L + 1;
int k = log2(Length);

return std::max(Max[R][k], Max[L + (1 << (k)) - 1][k]);

思路

正难则反

标签:最大数,int,Max,JSOI2008,ST,NowSize,ans,lld
From: https://www.cnblogs.com/YzaCsp/p/18444458

相关文章

  • delphi 12 利用TNetHTTPClient 解决post https问题注意事项
          在以前的版本中,如果需要向https接口交互数据,需要openssl的支持,特别时openssl版本太多,往往需要调试很长时间, 现在新版的DelphiXE8以上的版本,有了TNetHttpClient,可以简单的是实现和https接口的交互。usesSystem.Net.URLClient,System.Net.HttpClient......
  • 解决 DedeCMS 报错“Please set ‘request_order’”的问题
    如果你使用的是虚拟主机,无法直接修改 php.ini 文件,可以通过修改DedeCMS的代码来解决这个问题。找到 common.inc.php 文件:打开织梦CMS安装目录下的 include/common.inc.php 文件。修改代码:使用文本编辑器打开 common.inc.php 文件。找到第34行:php ......
  • 织梦错误Please set ‘request_order’
    当你在使用DedeCMS并遇到错误提示“DedeCMSError:(PHP5.3andabove)Pleaseset‘request_order’inivaluetoincludeC,GandP(recommended:‘CGP’)inphp.ini,more…”时,可以通过以下两种方法来解决这个问题:方法1:修改 php.ini 文件找到 php.ini 文件:......
  • PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos(): Non-string needles
    当遇到PBootCMS附件上传失败,并报错 UNKNOW:Code:8192;Desc:stripos():Non-stringneedleswillbeinterpretedasstringsinthefuture. 时,这通常是因为PHP的版本更新导致某些函数的行为有所改变。在这个情况下,stripos() 函数在处理非字符串参数时会发出警告,因为它......
  • Study Plan For Algorithms - Part48
    1.不同的二叉搜索树II给定一个整数n,请生成并返回所有由n个节点组成且节点值从1到n互不相同的不同二叉搜索树。classSolution:defgenerateTrees(self,n:int)->List[Optional[TreeNode]]:ifn==0:return[]returnself.g......
  • AtCoder Beginner Contest 365
    A-LeapYear思路模拟即可;AC代码#include<bits/stdc++.h>#defineendl'\n'#defineintintlonglong#definepbpush_back#definebsbitsetusingnamespacestd;typedefpair<char,int>PCI;typedefpair<......
  • ABC 模拟赛 | A Passing Contest 001题解记录(A,B,C,D)
    比赛链接https://www.luogu.com.cn/contest/126344[APC001]A-CT不必多说,多次取模#include<iostream>#include<algorithm>#include<string>#include<string.h>#include<queue>#include<deque>#include<math.h>#include<map>......
  • CS3214 Customizable Shell
    CS3214FProject1-“CustomizableShell”DueDate: Seewebsiteforduedate(Latedaysmaybeused.)Thisprojectmustbedoneingroupsof2students.Self-selectedgroupsmusthaveregis-teredusingthegrouperapp(URL).Otherwise,apartnerwillbea......
  • 37_初识搜索引擎_快速掌握query string search语法以及_all metadata原理揭秘
    1、querystring基础语法GET/test_index/test_type/_search?q=test_field:testGET/test_index/test_type/_search?q=+test_field:testGET/test_index/test_type/_search?q=-test_field:test一个是掌握q=field:searchcontent的语法,还有一个是掌握+和-的含义2、_allmetada......
  • ABC225F String Cards
    题意给你\(n\)个串\(s_i\),你需要选出\(k\)个串并按照某个顺序拼接起来形成的字符串字典序最小。\(n,k,|s|\le50\)。分析由于顺序不固定,所以我们无法直接DP。而状压的复杂度也太高了,怎么办呢?考虑钦定一个顺序,使得按照这个顺序排列字符串一定最优。一个经典的错误想法......