首页 > 其他分享 >「COCI 2006-2007 #4」 ZBRKA

「COCI 2006-2007 #4」 ZBRKA

时间:2024-02-23 20:46:41浏览次数:20  
标签:ll nc long 枚举 2006 2007 逆序 COCI mod

题意概括

题面很清楚,不多赘述了。

分析

设 \(f_{i,j}\) 表示已用前 \(i\) 个数,使数列出现 \(j\) 个逆序对的方案数。

因为从小到大枚举 \(i\),所以填 \(i\) 时前面所有的数都比它小,那么 \(i\) 每向前移动一位,就会增加一个逆序对。所以可以直接枚举每一个 \(i,j\),再枚举插入 \(i\) 的位置,转移方程是 \(f_{i,j}=\sum\limits_{k=0}^{i-1} f_{i-1,j-k}\)。但这样是 \(O(nc^2)\) 的,会 TLE

但是可以发现,第三维就是在找 \([j-i+1,i-1]\) 的区间,所以可以加入一个前缀和,把复杂度优化到 \(O(nc)\),通过这道题。

Code

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll mod=1e9+7;
ll n,c,f[10005]={1},s[10005];
signed main(){
    cin>>n>>c;
    for(ll i=2;i<=n;++i){
        s[0]=f[0];
        for(ll j=1;j<=c;++j)s[j]=(s[j-1]+f[j])%mod;//预处理前缀和
        for(ll j=0;j<=c;++j){
            if(j>=i)f[j]=(s[j]-s[j-i]+mod)%mod;
            else f[j]=s[j];
        }//计算f[j]
    }
    cout<<f[c];
    return 0;
}

标签:ll,nc,long,枚举,2006,2007,逆序,COCI,mod
From: https://www.cnblogs.com/run-away/p/18030327

相关文章

  • 动物园 (APIO 2007) 状压DP
    动物园\([APIO\2007]\)·题意:新建的圆形动物园是亚太地区的骄傲。圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物。如下图所示:你是动物园的公关主管。你要做的是,让每个参观动物园的游客都尽可能高兴。今天有一群小朋友来到动物园参观,你希望能让他......
  • 动物园(APIO 2007)(状压DP)
    动物园题解题目描述原题来自:APIO2007新建的圆形动物园是亚太地区的骄傲。圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物。如下图所示:你是动物园的公关主管。你要做的是,让每个参观动物园的游客都尽可能高兴。今天有一群小朋友来到动物园参观,你希望......
  • 洛谷 P6785 [COCI2013-2014#6] KRUŽNICE
    COCI的题。显然,手模样例发现答案分为以下几个贡献:所有圆外面的那个大平面,贡献为\(1\)。每个圆至少被分成一部分,贡献为\(n\)。如果有一个圆被“拦腰截断了”,即整条直径上都被更小的圆填满了,就额外对答案贡献加\(1\),这也是我们所求部分。暴力跳set遇事不决,先打暴力;不加......
  • [BZOJ1047][HAOI2007][AcWing1091]理想的正方形(单调队列)
    此题的数据相当大,暴力的显然过不了,即使是O(abn)的算法也会超时,所以只能考虑O(ablogn)或O(ab)的算法。50分暴力#include<bits/stdc++.h>usingnamespacestd;intn,a,b,m[1001][1001];intdx(intx,inty){ intmaxn=0,minn=0x7fffffff; for(inti=x;i<=x+n-1;++i){ for(in......
  • P5057 [CQOI2006] 简单题
    原题链接题解区间修改+单点查询对于一个点,查询的时候翻转的次数如果是奇数,是1,如果是偶数,是0所以题目转变成对区间上的点加一,然后求单点的奇偶性树状数组对一串序列加1,相当于对其差分序列的\([l]++,[r+1]--\)code#include<bits/stdc++.h>usingnamespacestd;inta[10000......
  • P6354 [COCI2007-2008#3] TAJNA
    题目描述使用一种加密算法。设字符串的长度为nn,则构造一个矩阵,使得r×c=nr×c=n且在r≤cr≤c的情况下使得rr尽量大。然后把给定的明文按照由上到下,从左到右的顺序填充这个r×cr×c的矩阵。得到的密文就是把矩阵按照从左到右,从上到下的顺序输出的字符串。给定你明文,......
  • P2036 [COCI2008-2009#2] PERKET题解
    【问题分析】分析题目可得此问题为01背包问题因此题数据较小所以可用枚举每一样物品选或不选的方法来写【设计程序】#include<bits/stdc++.h>#include<iostream>#include<stdio.h>#include<cstdio>#include<queue>usingnamespacestd;constintN=10+5;struct......
  • 洛谷 P9912 [COCI 2023/2024 #2] Zatopljenje 题解
    首先发现区间中的个数等于\(\texttt{高度大于x的位置的个数}-\texttt{连续两个位置都是大于x的位置的个数}\)。具体令\(H_i=\min(h_i,h_{i+1})(i\in[1,n-1])\),那么对于一次询问答案\(ans=\sum\limits_{i=l}^{r}[h_i>x]-\sum\limits_{i=l}^{r-1}[H_i>x]\),其......
  • P1873 [COCI 2011/2012 #5] EKO / 砍树
    题目链接:一、本题为什么能想到利用二分解决?\(1.\)有单调性提高伐木机的高度,显然地,得到的木头会减少。同样地,放低得到的木头会增多。而正因为答案有单调性,所以我们可以使用二分。\(2.\)数据范围大如果采用暴力枚举,时间复杂度为\(O(n\cdotm)\)会超时。用二分优化后时间......
  • P1093 [NOIP2007 普及组] 奖学金
    1.题目介绍[NOIP2007普及组]奖学金题目背景NOIP2007普及组T1题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前\(5\)名学生发奖学金。期末,每个学生都有\(3\)门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩......