A.活动投票

主元素问题,用摩尔投票

#include<bits/stdc++.h>
using namespace std;
int n,a=-1,acnt,x;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&x);
if(acnt==0){
a=x;
acnt++;
}
else if(a==x){
acnt++;
}
else{
acnt--;
if(acnt==0) a=-1;
}
}
printf("%d",a);
}

B.序列

mei ting dong

C.Legacy

赛时打的时候想可能是 DIJ 会假,结果 DIJ 没假,但是建图意料之中的 T 了.

这道题的建图非常有特色,区间建图的话,虽然不知道怎么建,但是确实是应该想到线段树.

考虑建分层图,然后把目标区间用线段树拆成节点,因为目标区间可以是出边也可以是入边,所以分两层,然后在每层叶节点连边权为零的边,这样建图复杂度只有 \(log\). 然后在树上跑 DIJ 就行了

关于 SPFA

  • 它死了

D.DP搬运工1

题解里说了,考虑设一个 \(f_{i,j,k}\) 做 DP

但是我觉得题解里的说法不是很清楚,我对这个 DP 的理解是,假设我们现在有一堆格子需要填,用 \(i\) 来表示已经填入的数字数量,\(j\) 来表示目前的空缺总数(注意这里的 “空缺”,一个空格组成的联通块称作一个 “空缺”,这么定义是因为比较好转移),\(k\) 用来表示当前填入数字后的 \(\max\) 总和

我们考虑以下情况(用 \(S\) 表示一个空缺,\(x,y\) 分别表示数字)

xSy

在我们将 \(S\) 填上的时候,假设我们每次都填一个更大的值,显然,填上之前的和是 \(a+b\),之后的和是 \(2k\),显然这么做会很麻烦,因为我们在填的时候还要考虑先把 \(a+b\) 减掉. 因此我们可以想到,与其先加上 \(a+b\) 再减掉,还不如直接不统计这个 \(a+b\) 了,因此我们直接在最后填上的时候再加上边界的贡献,这样就会比较简单.

因此,枚举五种情况:填在外面并合并,填在外面并新建连通块,填在里面并左右合并,填在里面并左或右合并,填在里面并新建联通块. 可以分别得到连通块贡献 \(0,1,-1,0,1\),\(\max\) 求和贡献 \(i,0,2i,i,0\),并且注意情况 \(1,2,4\) 是左右均可的合并方式,方案数贡献需要乘二

初始化 \(f[1][0][0]=1\)

\[f_{i,j,k+i}=2f_{i-1,j,k}
\]
\[f_{i,j,k}=2f_{i-1,j-1,k}
\]
\[f_{i,j,k}=f_{i-1,j-1,k}
\]
\[f_{i,j,k+i}=2f_{i-1,j,k}
\]
\[f_{i,j,k+2i}=f_{i-1,j+1,k}
\]

统计答案 \(f[n][0][i]\)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int p=998244353;
int f[51][51][2501];
int n,kk;
signed main(){
cin>>n>>kk;
f[1][0][0]=1;
for(int i=2;i<=n;++i){
for(int j=0;j<=n-i+1;++j){
for(int k=0;k<=kk;++k){
if(!f[i-1][j][k]) continue;
if(j){
f[i][j][k+i]+=2*f[i-1][j][k]*j%p;
f[i][j+1][k]+=f[i-1][j][k]*j%p;
f[i][j-1][k+2*i]+=f[i-1][j][k]*j%p;
}
f[i][j][k+i]+=2*f[i-1][j][k]%p;
f[i][j+1][k]+=2*f[i-1][j][k]%p;
}
}
}
int ans=0;
for(int i=0;i<=kk;++i){
ans+=f[n][0][i];
ans%=p;
}
cout<<ans;
}

暑假集训CSP提高模拟2的更多相关文章

  1. 2015UESTC 暑假集训总结

    day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...

  2. 牛客网NOIP赛前集训营-提高组(第四场)游记

    牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...

  3. 牛客网NOIP赛前集训营-提高组(第四场)B区间

    牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1  \dots   a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 ...

  4. STL 入门 (17 暑假集训第一周)

    快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...

  5. 牛客网NOIP赛前集训营-提高组(第四场)B题 区间

    牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ...

  6. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告

    目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...

  7. 20190820 Tue 集训总结&NOIP模拟 27

    低谷度过了? 但是skyh阿卡了,还是反衬出我的辣鸡. T1知道要sort,却忘了判重,正解不如暴力分高,555. T2成功化出正解柿子,然后化过头了,化出了无法DP的柿子. 果然不够强,大神们一眼就 ...

  8. 暑假集训Day2 互不侵犯(状压dp)

    这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...

  9. 暑假集训Day1 整数划分

    题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...

  10. #10471. 「2020-10-02 提高模拟赛」灌溉 (water)

    题面:#10471. 「2020-10-02 提高模拟赛」灌溉 (water) 假设只有一组询问,我们可以用二分求解:二分最大距离是多少,然后找到深度最大的结点,并且把它的\(k\)倍祖先的一整子树删 ...

随机推荐

  1. 工作单元(UnitOfWork) 模式 (1)

    在开始UnitOfWork模式之前有必要回顾下我们耳熟能详的Data Access Object(DAO)模式,即数据访问对象.DAO是一种简单的模式,我们构建应用的时候经常会使用到它,它的功能就是将 ...

  2. Jmeter参数化2-读取文件

    如果你想要jmeter批量生成 指定 的参数值数据,可以使用导入文件参数化方法来实现 下面讲述两种jmeter读取文件参数值方法:"CSV 数据文件设置"."函数助手&q ...

  3. 小米(xiaomi)自动驾驶技术的原始技术积累 —— CyberDog 仿生四足机器狗

    相关: https://www.youtube.com/watch?v=f0q8tfZ89Qo 小米公司一直没有加入到制造电动车的行列中,直到几年前才感觉造车是必须要走的路了,但是造车就一定是要造电动 ...

  4. 浪潮计算平台之AI方向——AI_Station开发环境的使用总结

    概览: 1.   开发环境 使用默认的设置,不改挂载路径: 可以看到在容器内对挂载的目录进行文件操作是可以真实记录到实际的文件目录内的. 对挂载路径的另一种设置: 不使用默认的设置,手动更改挂载路径: ...

  5. 使用MindSpore_hub 进行 加载模型用于推理或迁移学习

    从官方资料: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/use/save_model.html?highlight=save_chec ...

  6. 代码随想录Day9

    KMP算法 主要用来进行字符串匹配 KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了. 所以如何记录已经匹配的文本内容,是KMP的重点 ...

  7. 使用Jackson读取xml

    找了不少,什么峰的,什么dn的参差不齐的资料,废话不少,问题是导入的包也没有.不多废话,看下面代码直接复用. package bean;import com.fasterxml.jackson.dat ...

  8. Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持

    就在昨晚,Spring AI发了个比较重要的更新.由于最近OpenAI推出了结构化输出的功能,可确保 AI 生成的响应严格遵守预定义的 JSON 模式.此功能显着提高了人工智能生成内容在现实应用中的可 ...

  9. [考试记录] 2024.8.10 csp-s 模拟赛18

    80 + 20 + 0 + 70 = 170 第三题应该有 10 分暴力的,但我没打. T1 星际旅行 题面翻译 总共有n个节点,m条路径,要求其中m-2条路径走两遍,剩下2条路径仅走一遍,问不同的路 ...

  10. vs code 快速配置

    1. 基本操作 打开工程文件: ctrl + p 在文件搜索内容: ctrl + shift + f 进入设置: ctrl + shift + p, 然后输入 user setting 添加插件: c ...