首页 > 其他分享 >海亮02/18杂题

海亮02/18杂题

时间:2024-02-18 15:12:17浏览次数:30  
标签:02 pre ch pw val int 海亮 杂题 mod

海亮02/18杂题

个人题单

T1

link

题意

给你一个长度为 \(n\) 的数列,然后给你 \(q\) 个交换或不交换操作,你可以选择操作或者不操作,问所有情况下逆序对的总和。

答案需要对 \(10 ^ 9 + 7\) 取模。

\(n\leq 3000\),\(q\leq 3000\)。

题解

发现一个问题,对于操作执不执行很难描述,怎么办?

我们考虑设 \(f(i,j)\) 表示 \(a_i>a_j\) 的情况占总情况数的比例(其实就是看、作期望啦),然后在最后把总情况数 \(2^q\) 乘一下即可。

然后考虑每个操作对 \(f\) 的影响。

不难发现,有影响的只有 \(f(x,i)\)(当然还有 \(f(i,x)\))和 \(f(y,i)\)(当然还有 \(f(i,y)\))。

发现影响是 \(O(n)\) 的,直接更新即可。

然后就做完了,整道题最难的点就是第一步转化拆贡献。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
bool stmemory;
namespace Call_me_Eric{
inline int read(){
    int x = 0, f = 1;char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
    return x * f;
}
const int maxn = 5e3 + 10, mod = 1e9 + 7;
int n, a, b;
int f[maxn][maxn][2], sum[maxn][maxn][2];
int qpow(int x,int a){
    int res = 1;
    while(a){
        if(a & 1){res = res * x % mod;}
        x = x * x % mod;a >>= 1;
    }
    return res;
}
int pw[maxn], pre[maxn];
void main(){
    n = read(); a = read(); b = read();if(a < b)swap(a, b);
    pw[0] = 1;for(int i = 1;i < maxn;i++){pw[i] = pw[i - 1] * 2 % mod;}
    pre[0] = f[0][0][0] = f[0][0][1] = sum[0][0][0] = sum[0][0][1] = 1;
    int ans = 0;
    for(int i = 1;i <= n;i++){
        sum[i][0][1] = f[i][0][1] = (pre[i - 1] - (i - b >= 0 ? pre[i - b] : 0) + mod) % mod;
        for(int j = 1;j <= i;j++){
            if(j >= b){
                int val = sum[i - b][j - b][0];
                if(j >= a)ans = (ans + val * pw[max(n - i - 1,0ll)] % mod) % mod;
                else f[i][j][1] = val;
            }
        }
        for(int j = 1;j <= i;j++){
            int val = sum[i - 1][j - 1][1];
            if(j >= a)ans = (ans + val * pw[max(n - i - 1,0ll)] % mod) % mod;
            else f[i][j][0] = val;
        }
        pre[i] = pre[i - 1];
        for(int j = 1;j <= i;j++){
            pre[i] = (pre[i] + f[i][j][0]) % mod;
            sum[i][j][0] = (sum[i - 1][j - 1][0] + f[i][j][0]) % mod;
            sum[i][j][1] = (sum[i - 1][j - 1][1] + f[i][j][1]) % mod;
        }
    }
    printf("%lld\n",ans);
    return;
}
};
bool edmemory;
signed main(){
    auto stclock = clock();
    Call_me_Eric::main();
    auto edclock = clock();
    cerr << (&stmemory - &edmemory) / 1024.0 / 1024.0 << " Mib cost.\n";
    cerr << (edclock - stclock) * 1.0 / CLOCKS_PER_SEC << " Sec cost.\n";
    return 0;
}

标签:02,pre,ch,pw,val,int,海亮,杂题,mod
From: https://www.cnblogs.com/Call-me-Eric/p/18019343

相关文章

  • ABAP:MM01/MM02/MM03物料主数据增强
    1.屏幕增强-在主表中附加结构(判断数据的主表,如MARA,MARC)增强字段数据元素勾选更改文档以后,会记录字段变更历史 -SPRO-->物流-常规-->物料主数据-->配置物料主记录-->创建定制子屏幕的程序 会生成对应的函数组--里面会包含两个屏幕(0001,0002)这里的0001屏幕作为......
  • SMU Winter 2024 div2 ptlks的周报Week 3(2.12-2.18)
    这周主要加强了对知识点的掌握。P10161[DTCPC2024]小方的疑惑10从题目可以得知a个连续括号贡献为a(a+1)/2,代价为2a。要求总贡献恰为k,且代价不高于n。一开始我想到了模拟,先取一个贡献低于k最大的a,剩下的再直接在外面套括号,结果wa。又想到可以分出多个a来组成k,就用递归,每次......
  • 2024年首发!高级界面控件Kendo UI全新发布2024 Q1
    KendoUI是带有jQuery、Angular、React和Vue库的JavaScriptUI组件的最终集合,无论选择哪种JavaScript框架,都可以快速构建高性能响应式Web应用程序。通过可自定义的UI组件,KendoUI可以创建数据丰富的桌面、平板和移动Web应用程序。通过响应式的布局、强大的数据绑定、跨浏览器兼容......
  • VNCTF2024-WEB-gxngxngxn
    VNCTF2024-WEB-gxngxngxnCheckin签到题,直接看js文件CutePath按照上述穿越下可以看到一串base64加密的,解密后是账号密码:登录看到有新功能,可以重命名文件.我们找到flag.txt文件,但是不能查看,我们可以利用重命名将flag.txt文件传送到share_main目录下,这样我们就可以查看......
  • 从嘉手札<2024-2-17(2)>
    也不知是岁月过得qianjuan还是花落得匆忙父亲的白发一天天的多下去时至今日竟也满头华发了小时候的父亲总是高大恣意潇洒夏天的蝉鸣悠悠记忆里父亲总是躺在沙发上鼾声大作我蹲在门口用放大镜找那些不知死活的蚂蚁晚风悄悄的吹起天边的月牙我抬起头湛蓝色的天空宛若宝......
  • Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341)(菜小白)
    A-Print341思路:给你一个整数N有N个0和N+1个1组成 01交替输出1 解法:输出10最后输出最后剩余的1即可Code:#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);intN;cin>>N......
  • 从嘉手札<2024-2-17>
    父亲和鬼离村庄很远的地方有一片荒地,因为闹鬼,所以一直荒着。两年前,家里要修一个羊圈,选了几个地方都在火线内,无奈选了那里。用大砖修了一间大房,给羊住;用同样的砖修了一个小房,给牧羊人住。我不在家的时候,父亲和鬼们一起住,说是鬼,其实父亲都认识。其中的一大半,是父亲给烧的尸......
  • P7167 [eJOI2020 Day1] Fountain-st表
    这个题目,可以看出每一个盘里的水往下流出的路径会是一样的,而且没有修改操作,所以我们可以预处理出每个盘里往下的路径,已经要下去所需要的水。那么首先需要寻找每个盘往下的第一个盘是那个。对于盘i来说,第一个盘j应满足$j>i&&D_j>D_i$,所以就可以想到用单调栈处理每个盘下第一......
  • 2024 学习计划
    经常容易忘记东西,记录下来会好一点;时间安排:jdk8-source-code,预计Q1结束skywalking,预计Q2结束spring,预计Q3结束dynamoDB细节2024.2SkyWalking希望深入理解JavaAgent,字节码插桩、SPI、Arthas;希望搞清楚java编写的项目转成exe的方式;SkyWalking的官方......
  • 2024.2HL集训日记
    Day0五点起来赶飞机,困。典中典之“尊敬的Merlin旅客,您乘坐的CZ6439航班很快就要起飞了"。感谢Nihachu的带队。到HL被大气磅礴的校园被震撼到了,于是乎被震地睡了一下午(见识到了HL难吃的午饭,尤其是那个浓缩了0x7f吨酱油的干菜扣肉。晚饭同理,但有自动贩卖机。6点机房集合,自由......