[SDOI2019]染色(DP)】的更多相关文章

#include<bits/stdc++.h>using namespace std;const long long mod=998244353;long long f[200007][2],g[200007][2];long long a[200007],b[200007],c[200007];int n,k,cnt1,cnt2;long long qpow(long long a,long long p){    long long ans=1;    while(p){        i…
好神的题啊! 看了这题只会第一个subtask,又参考了HN-CJ鸽王zsy的题解,实在太菜了. 暴力转移是O(nc2),很显然没有分.考虑子任务1,2,只需要转移包含已染色格子的列,然后状态数只有O(nc),对于关键两列(即有染色的列)间,只有5种状态.而这个可以初始化转移,转移讨论有点复杂,而且我不会用数学公式,就不打出吧.转移后即可直接DP.然后对于子任务3,4,把它们分割即可,把两边方案乘起来就行了,于是可以做到O(nc),得到96分的好成绩.然后听Claris所述,DP所有转移操作即为…
Description Your task is to divide a number of persons into two teams, in such a way, that: everyone belongs to one of the teams; every team has at least one member; every person in the team knows every other person in his team; teams are as close in…
#include <iostream> #include <algorithm> #include <cstring> using namespace std; ; int g[N][N]; int r[N][N];//模型图 int c[N];// 染的颜色 ]; int snt; // 联通分量 int s[N]; //每个点所属联通分量 bool dp[N][N];// 前i个联通分量能否组成为J人的一组 int ans[N][N];// 前i个联通分量组成为J人…
题目大意:现有$n$条排成一行的木板,每个木板有一个目标颜色.你每次能将一个区间内的木板分别染成它们的目标颜色,而这次染色的代价为这个区间内不同目标颜色的木板的数量的平方.问将全部木板染成目标颜色的最小代价. 数据范围:$n≤50000$,颜色数量$≤50000$. 这题我们显然可以$dp$,令$f[i]$表示把前i个点覆盖完的最小代价,显然$f[i]=min(f[j-1]+w(j,i)^2)$ 其中$w(j,i)$表示区间$[i,j]$中的颜色数量. 这一题有一个隐藏条件,就是总代价不会超过$…
bzoj2958 序列染色 题目传送门 Description 给出一个长度为N由B.W.X三种字符组成的字符串S,你需要把每一个X染成B或W中的一个. 对于给出的K,问有多少种染色方式使得存在整数a,b,c,d使得: 1<=a<=b<c<=d<=N Sa,Sa+1,...,Sb均为B Sc,Sc+1,...,Sd均为W 其中b=a+K-1,d=c+K-1 由于方法可能很多,因此只需要输出最后的答案对109+7取模的结果. Input 第一行两个正整数N,K 第二行一个长度为…
题:https://codeforces.com/contest/1027/problem/E 题意:给定n*n的方格,可以染黑白,要求相邻俩行”完全“不同或完全相同,对于列也是一样.然后限制不能拥有k面积具有相同颜色的格子 分析: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; ll dp[M][M];///前i个存在最多连续j个相同的格子颜色 void init(){ dp[][]=1ll; dp…
LINK:树的染色 考场上以为这道题要爆蛋了 没想到 推出正解来了. 反正是先写了爆搜的 爆搜最近越写越熟练了 容易想到dp 容易设出状态 f[i][j]表示以i为根的子树内白色的值为j此时黑色的值怎么样. 可以发现 当白色值固定的时候黑色值可能有多个 所以合法不合法这个状态不太行. 可以上f[i][j][k]了 不过这样复杂度极高 转移很暴力 不一定能跑过40. 考虑 对于一个白色颜色和为j来说 那么黑色和 有k1 k2都是合法了 容易得到只有较小的一个才有用. 那么就有状态了 f[i][j]…
2958: 序列染色 题目:传送门 题解: 大难题啊(还是我太菜了) %一发大佬QTT 代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define mod 1000000007 using namespace std; typedef long long LL; int n,k; ],sw[]; LL f[…
#include<bits/stdc++.h>using namespace std;int a[200007];int b[200007];long long dp[200007];long long sum[200007];const long long mod =1e9+7;int main(){    dp[0]=1;    int n;    scanf("%d",&n);    for(int i=1;i<=n;i++)        scanf(…