湘潭邀请赛 2018 D Circular Coloring
题意:
给一个环,环上有n+m个点。给n个点染成B,m个点染成W。求所有染色情况的每段长度乘积之和。
题解:
染成B的段数和染成W的段数是一样的(因为是环)。
第一段是可以移动的,例如BBWWW移动为BWWWB。
所以处理两个方程:b[i][j]代表把j分成i段的乘积和且第一段不能移动;f[i][j]代表把j分成i段的乘积和且第一段可以移动。
那么枚举分成的段数,对于当前枚举分成i段,答案就为:f[i][n]*b[i][m]+f[i][m]*b[i][n].
问题是方程怎么转移了。
对于b[i][j],枚举一个新加的数(1~j-i+1),即b[i][j] = 1*b[i-1][j-1]+2*b[i-1][j-2]+...+(j-i+1)*b[i-1][i-1].
对于f[i][j],确定他的第一个数是什么,然后枚举一个新加的数,即f[1][i] = i*i(确定第一个数);f[i][j] = 1*f[i-1][j-1]+2*f[i-1][j-2]+...+(j-i+1)*f[i-1][i-1].
HDU上建2个数组会MLE,所以只能在camp上过2个数组的。camp题目地址:https://www.icpc.camp/contests/6CP5W4knRaIRgU
#include <bits/stdc++.h>
using namespace std;
const int N = ;
const int mod = 1e9+;
typedef long long ll;
int n, m;
ll f[N][N], b[N][N];
ll ans;
int main() {
b[][] = ;
for(int i = ; i <= ; i++) {
ll sum = , res = ;
for(int j = i; j <= ; j++) {
res = (res+b[i-][j-])%mod;
sum = (sum+res)%mod;
b[i][j] = sum;
}
}
for(int i = ; i <= ; i++) f[][i] = (i*i)%mod;
for(int i = ; i <= ; i++) {
ll sum = , res = ;
for(int j = i; j <= ; j++) {
res = (res+f[i-][j-])%mod;
sum = (sum+res)%mod;
f[i][j] = sum;
}
}
while(~scanf("%d%d", &n, &m)) {
ans = ;
int up = min(m, n);
for(int i = ; i <= up; i++) {
ans = (ans+f[i][n]*b[i][m]+f[i][m]*b[i][n])%mod;
}
printf("%lld\n", ans);
}
}
湘潭邀请赛 2018 D Circular Coloring的更多相关文章
- 湘潭邀请赛 2018 I Longest Increasing Subsequence
题意: 给出一个长度为n的序列,序列中包含0.定义f(i)为把所有0变成i之后的Lis长度,求∑ni=1i⋅f(i). 题解: 设不考虑0的Lis长度为L,那么对于每个f(i),值为L或L+1. 预处 ...
- 湘潭邀请赛 2018 E From Tree to Graph
题意: 给出一棵树以及m,a,b,x0,y0.之后加m条边{(x1,LCA(x1,y1)),(x2,LCA(x2,y2))...(xm,LCA(xm,ym))}.定义z = f(0)^f(1)^... ...
- 2018 CCPC 湘潭邀请赛 & 2018 JSCPC
Problem A Problem B Problem C 这题用主席树轻松解决 可以二分答案,每次查询:也可以直接开个全局变量在主席树上二分: 时间复杂度$O(nlog^{2}n)$或$O(nlog ...
- 湘潭邀请赛+蓝桥国赛总结暨ACM退役总结
湘潭邀请赛已经过去三个星期,蓝桥也在上个星期结束,今天也是时候写一下总结了,这应该也是我的退役总结了~ --------------------------------湘潭邀请赛----------- ...
- 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)
湘潭邀请赛的一题,名字叫"超级FFT"最终暴力就行,还是思维不够灵活,要吸取教训. 由于每组数据总量只有1e5这个级别,和不超过1e6,故先预处理再暴力即可. #include&l ...
- 湘潭邀请赛 Hamiltonian Path
湘潭邀请赛的C题,哈密顿路径,边为有向且给定的所有边起点小于终点,怎么感觉是脑筋急转弯? 以后一定要牢记思维活跃一点,把复杂的事情尽量简单化而不是简单的事情复杂化. #include<cstdi ...
- XTU 1264 - Partial Sum - [2017湘潭邀请赛E题(江苏省赛)]
2017江苏省赛的E题,当时在场上看错了题目没做出来,现在补一下…… 题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id ...
- Circular Coloring
Circular Coloring 将n个0,m个1进行圆周排列,定义一个排列的权值为圆上所有相邻且相同的数字组成一段的段长的乘积,询问断环成链所有方案的权值之和,\(n,m\leq 5000\). ...
- 2018湘潭邀请赛 AFK题解 其他待补...
A.HDU6276:Easy h-index Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
随机推荐
- iOS新浪微博OAuth2.0认证代码
#import "ViewController.h" #import "AFNetworking.h" @interface ViewController () ...
- JS实现Promise原理
promise是用来解决Js中的异步问题的,js中所有的异步可从callback → promise → generator + co = async + await 其实所有的都是callback的 ...
- BFS算法入门--POJ3984
迷宫问题–POJ3984 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22008 Accepted: 12848 Descri ...
- Springcloud Eureka 启动失败:ERROR org.springframework.boot.SpringApplication - Application run failed
在测试Euruka作为服务注册中心的时候碰到了这个问题 [main] ERROR org.springframework.boot.SpringApplication - Application ru ...
- vue学习笔记-:class
当items.state为true时使用class='rad2state',否则为rad2(默认).
- 使用MyEclipse/Eclipse修改项目名称报Can't convert argument: null!
报错: java.lang.IllegalArgumentException: Can't convert argument: null! 方法/步骤 报错原因:使用MyEclipse修改项目名 ...
- python__基础 : 类的继承,调用父类的属性和方法
1.继承,调用父类属性方法 在python里面,继承一个类只需要这样写: class Animal: def heshui(self): print('动物正在喝水') class Cat(Anima ...
- 开放定址法——平方探测(Quadratic Probing)
为了消除一次聚集,我们使用一种新的方法:平方探测法.顾名思义就是冲突函数F(i)是二次函数的探测方法.通常会选择f(i)=i2.和上次一样,把{89,18,49,58,69}插入到一个散列表中,这次用 ...
- python Re库的介绍
re库的贪婪匹配和最小匹配 后面跟着?变为最小匹配
- 8 实现10mins用户登录与注册
1.重新认识登录 2.实现登录功能 (1)Django 自带的authenticate, login模块 from django.contrib.auth import authenticate, l ...