2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任何一条边 (u,v),都有 f(u)≠f(v). 定义函数 g(n,k) 的值为所有包含 n 个点的无自环.无重边的 k 可染色无向图中的边数最大值.举例来说,g(3,1)=0,g(3,2)=2,g(3,3)=3. 现在给出三个整数 n,l,r,你需要求解:\((\sum_{i=l}^rg(n,i)…
题目链接:K小数查询 题意:给你一个长度为$n$序列$A$,有$m$个操作,操作分为两种: 输入$x,y,c$,表示对$i\in[x,y] $,令$A_{i}=min(A_{i},c)$ 输入$x,y,k$,表示询问区间$[x,y]$中的第$k$小数 思路:数据范围不是很大,可以分块来做,记录每个块已经更新过的最小值$imin[]$,询问时二分答案,然后求出$[x,y]$区间中小于等于$mid$的数的个数$cnt$,通过判断$cnt$与$k$的大小来改变$l,r$即可 #include <ios…
#include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, s, t) for (int i = s; i < (int)t; i++) #define fi first #define se second #define all(x) x.begin(),x.end() #define pf2(x,y) printf("%d %d\n",…
题目传送门 sol:二分答案$K$,算大于$K$的乘积有多少个.关键在于怎么算这个个数,官方题解上给出的复杂度是$O(nlogn)$,那么计算个数的复杂度是$O(n)$的.感觉写着有点困难,自己写了一个复杂度是$O(nlog^{2}n)$,也够AC了.有正有负,控制边界有点难度. 二分答案 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; ;…
题目传送门 sol:先通过AC自动机构建字典,用$dp[i]$表示长串前$i$位的最小代价,若有一个单词$s$是长串的前$i$项的后缀,那么可以用$dp[i - len(s)] + val(s)$转移到$dp[i]$. AC自动机 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; ; const LL INF = 0x3f3f3f3f3f3f…
题:https://ac.nowcoder.com/acm/contest/4010/K 题意:用一些模式串凑成一个目标串,每个模式串有消耗,问组合的最小消耗,或不能组成输出-1: 分析:典型的AC自动机处理后在跳fail的过程中进行操作,这里操作就是dp计算最小.用dp[i]表示长串前ii位的最小代价,若有一个单词s是长串的前ii项的后缀,那么可以用dp[i−len(s)]+val(s)转移到dp[i] #include<bits/stdc++.h> using namespace std;…
Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果,糖果只存在一秒,下一秒就会消失. 假如wls第\(k\)秒在第\(i\)行第\(j\)列的格子上,满足\(T[i][j]|k\),则wls会得到一个糖果. wls每一秒只可以上下左右移动一格或停在原地. 请问wls从指定的\(S(xs,ys)​\)出发到达指定的\(T(xt,yt)​\),并且在路上…
给定字典和文章,每个单词有价值,求写文章的最小价值 标准的 AC 自动机 dp,设 \(f[i]\) 表示写 \(s[1..i]\) 的最小价值,建立AC自动机后根据 trans 边暴力转移即可 建了个中间图结果被卡内存了,被迫删掉 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 5e5+5; vector <pair<signed,signed> > g…
2020 CCPC-Wannafly Winter Camp Day2 A 托米的字符串 虽然每个子串出现的概率是相同的,但是同一长度的子串个数是不同的,所以要分别处理.计算出某一长度的情况下,元音字母的贡献,然后计算期望即可. cls题解上的思路很清晰...我的代码太暴力了. const int N = 1000010; char s[N]; int a[N],n; ll d[N],c[N]; int main() { scanf("%s",s+1); n = strlen(s+1)…
2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O O O day3 6 6/10 O O O O O Ø day4 5 6/11 O O O O O O day5 3 4/10 O O O O day7 7 7/10 O O O O O O O day8 7 5/10 O O O O O…