• 2022727 #19 ABC221H & uoj449,AGC038E,uoj514


    呜呜呜,远溯太好听了啊啊啊啊。

    052 ABC221H Count Multiset

    给了我很深印象的一场 ABC。

    差分,即计数“\(\leqslant x\) 的数有多少个”对应的序列,其形态即二维平面从 \((0,0)\)\((n,k)\) 的一条由上步、右步组成的折线,且满足面积为 \(n\),每一个极长上步段长度不超过 \(m\)

    (注意,你如果将 \(x,y\) 设反是不好处理的,因为限制变为了每个极长右步段长度不超过 \(m\),此时你需要对问题转置)

    发现倒数第 \(i\) 行高度不超过 \(\frac ni\),直接设计 dp 记录总面积,位置和当前高度,前缀和优化即可,复杂度 \(O(n^2\log n)\)

    进一步,你发现当前位置是无关紧要的,只需记录高度,复杂度 \(O(n^2)\)

    (所以这道题我是怎么说这么长的,有用的不就两个字“差分”吗)

    #include<stdio.h>
    const int maxn=5005,mod=998244353;
    int n,m;
    int f[maxn][maxn],sum[maxn][maxn];
    int main(){
    	scanf("%d%d",&n,&m);
    	f[0][0]=1;
    	for(int i=0;i<=n;i++)
    		sum[0][i]=1;
    	for(int i=1;i<=n;i++)
    		for(int j=0;j<=n;j++){
    			if(j<=i)
    				f[i][j]=(sum[i-j][j]-(j-m-1<0? 0:sum[i-j][j-m-1])+mod)%mod;
    			sum[i][j]=((j==0? 0:sum[i][j-1])+f[i][j])%mod;
    		}
    	for(int i=1;i<=n;i++)
    		printf("%d\n",f[n][i]);
    	return 0;
    }
    

    053 uoj#449. 【集训队作业2018】喂鸽子 / AGC038E Gachapon / uoj#514. 【UR #19】通用测评号

    以前做的题都忘了,怎么救?

    uoj449:

    我们直接上 min-max 容斥,问题变为“\(c\) 只鸽子中有一只饱了的期望时间”。

    枚举这个时间,先给饱的鸽子分配,然后

  • 相关阅读:
    算法----递归
    函数调用栈、任务队列、事件轮询、宏任务、微任务
    苹果浏览器和ios中,时间字符串转换问题
    npm 命令行基本操作
    一些积累(做阿里笔试题)……
    CSS reset
    一些正则表达式的实例,供参考使用
    不同浏览器获取不同高与宽的方法
    盒子模型
    CSS中的字体样式和文本样式
  • 原文地址:https://www.cnblogs.com/xiaoziyao/p/16524764.html
Copyright © 2020-2023  润新知