CF 1027E Inverse Coloring
当天晚上并没有看懂题意,然后就刚了40分钟F,但是没有弄出来呜呜呜。
推荐博客: https://blog.csdn.net/Dream_maker_yk/article/details/81840495
考虑到我们写出一行和一列的情况就可以还原出整个正方形,而这一行和这一列的长度是一样的,所以我们可以合在一起dp。
我们设$f_{i, j}$表示在前$i$个格子中最长的一个颜色的长度为$j$的方案数,有转移方程:
$f_{i, j} = \sum_{j = 1}^{i}\sum_{k = 1}^{j}f_{i - k, min(j, i - k)}$
注意到这时候我们算出来的$f_{i, j}$实际上是包含了$f_{i, j - 1}, f_{i, j - 2}...$的情况的,所以我们再差分一遍使$f_{i, j}$的定义表示为长度为$i$的序列中最长的连续相同的颜色段恰好为$j$的方案数。
然后我们只要枚举这个连续的最长段的长度去累加答案就好了,其实到现在为止我们都只是计算了一种颜色的情况,考虑到把黑白格子反一反就可以得到完全相同的另外的合法情况,所以最后把答案乘以二。
枚举时注意小细节$j$的范围要小于$n$,我就是这样RE了一次。
Code:
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = ;
const ll P = 998244353LL; int n, siz;
ll f[N][N]; inline int min(int x, int y) {
return x > y ? y : x;
} int main() {
scanf("%d%d", &n, &siz); f[][] = 1LL;
for(int i = ; i <= n; i++)
for(int j = ; j <= i; j++)
for(int k = ; k <= j; k++)
f[i][j] = (f[i][j] + f[i - k][min(j, i - k)]) % P;
for(int i = n; i >= ; i--)
f[n][i] = (f[n][i] - f[n][i - ] % P + P) % P; /* for(int i = 1; i <= n; i++)
printf("%lld ", f[n][i]);
printf("\n"); */ ll ans = 0LL;
for(int i = ; i <= n; i++)
for(int j = ; j * i < siz && j <= n; j++)
ans = (ans + f[n][i] * f[n][j] % P) % P;
ans = ans * % P;
printf("%lld\n", ans); return ;
}
CF 1027E Inverse Coloring的更多相关文章
- Codeforces 1027E Inverse Coloring 【DP】
Codeforces 1027E Inverse Coloring 题目链接 #include<bits/stdc++.h> using namespace std; #define N ...
- codeforces 1027E. Inverse Coloring(计数)
一开始发现的性质是确定了第一行后,后面的行只需要考虑和前面的行相同或者不同,整个过程只需要考虑行,构出的图一定符合性质(即同样满足列的性质),但是接下来死活定义不出状态,事实证明自己还是想的太少了 思 ...
- codeforces 1027 E. Inverse coloring (DP)
E. Inverse Coloring time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CF1027E Inverse Coloring
题意:n × n的矩阵,每个位置可以被染成黑/白色. 一种gay的染色是任意相邻两行的元素,每两个要么都相同,要么都不同.列同理. 一种gaygay的染色是一种gay的染色,其中没有哪个颜色的子矩阵大 ...
- 【CF1027E】Inverse Coloring(DP)
题意:给出一个n*n的矩阵,要求在每个位置涂上黑/白色, 要求满足:任意相邻的两行,其颜色要么完全相同,要么完全相反 任意相邻的两列,其颜色也要么相同要么完全相反 且这个矩形中,不存在任意一个大小大于 ...
- Educational Codeforces Round 49 (Rated for Div. 2)
题目链接 还缺F和G,至少上橙之后把F补了吧. A - Palindromic Twist 题意:每个字母恰好操作一次,变成其之前或者其之后的一个字母,注意'a'和'z'不互通,求是否可以变成回文串. ...
- Codeforces Edu Round 49 A-E
A. Palindromic Twist 由于必须改变.所以要使\(a[i] = a[n - i + 1]\). 要么同向走,但必须满足之前的\(a[i] = a[n - i + 1]\). 要么相遇 ...
- CF 149D Coloring Brackets(区间DP,好题,给配对的括号上色,求上色方案数,限制条件多,dp四维)
1.http://codeforces.com/problemset/problem/149/D 2.题目大意 给一个给定括号序列,给该括号上色,上色有三个要求 1.只有三种上色方案,不上色,上红色, ...
- CF 149D Coloring Brackets 区间dp ****
给一个给定括号序列,给该括号上色,上色有三个要求 1.只有三种上色方案,不上色,上红色,上蓝色 2.每对括号必须只能给其中的一个上色 3.相邻的两个不能上同色,可以都不上色 求0-len-1这一区间内 ...
随机推荐
- brew安装php和扩展
brew install homebrew/php/php56 --with-apache 报错: checking if the location of ZLIB install directory ...
- [转载] 最简单的基于FFmpeg的AVDevice例子(读取摄像头)
=====================================================最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDev ...
- HihoCoder1449 重复旋律6(后缀自动机)
描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi想知道一部作品中所有长度为K的旋律中出现次数最多的旋律的出现次数.但是K不是固定的,小Hi想知道对 ...
- Maven里头的pom.xml配置详解
正常的pom配置文件如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http ...
- zookeeper环境及dubbo-admin管理平台搭建
一. Zookeeper的安装使用 1.1 Zookeeper介绍 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hb ...
- 洛谷P4721 【模板】分治 FFT(分治FFT)
传送门 多项式求逆的解法看这里 我们考虑用分治 假设现在已经求出了$[l,mid]$的答案,要计算他们对$[mid+1,r]$的答案的影响 那么对右边部分的点$f_x$的影响就是$f_x+=\sum_ ...
- laravel csrf保护
有时候我们的项目需要和外部的项目进行接口对接,如果是post的方式请求;laravel要求csrf保护 但是别人是ci框架或者没有csrf_token的;该如何处理呢? 可以把我们不需要csrf的ur ...
- ABP 学习系列 - 目录
一.ABP 学习系列 - 入门介绍之单表 http://www.cnblogs.com/yabu007/p/8067694.html 二.ABP 学习系列 - 入门介绍之多表 http://www.c ...
- Solaris Tips: Repairing the Boot Archive (ZT)
http://www.seedsofgenius.net/solaris/solaris-tips-repairing-the-boot-archive 注意以下是系统盘非镜像情况下的操作,如果系统盘 ...
- 如何判断python的数据类型,用type函数
用 type 函数 In [29]: type(dataset) Out[29]: list 查询list的行数 In [38]: len(dataset) In [39]: Out[38]: 36 ...