暑假集训CSP提高模拟2
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[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的更多相关文章
- 2015UESTC 暑假集训总结
day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...
- 牛客网NOIP赛前集训营-提高组(第四场)游记
牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...
- 牛客网NOIP赛前集训营-提高组(第四场)B区间
牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1 \dots a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 ...
- STL 入门 (17 暑假集训第一周)
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...
- 牛客网NOIP赛前集训营-提高组(第四场)B题 区间
牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ...
- 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告
目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...
- 20190820 Tue 集训总结&NOIP模拟 27
低谷度过了? 但是skyh阿卡了,还是反衬出我的辣鸡. T1知道要sort,却忘了判重,正解不如暴力分高,555. T2成功化出正解柿子,然后化过头了,化出了无法DP的柿子. 果然不够强,大神们一眼就 ...
- 暑假集训Day2 互不侵犯(状压dp)
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...
- 暑假集训Day1 整数划分
题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...
- #10471. 「2020-10-02 提高模拟赛」灌溉 (water)
题面:#10471. 「2020-10-02 提高模拟赛」灌溉 (water) 假设只有一组询问,我们可以用二分求解:二分最大距离是多少,然后找到深度最大的结点,并且把它的\(k\)倍祖先的一整子树删 ...
随机推荐
- SUM-ACM天梯赛
第一次天梯赛: B-B:孵化小鸡 题解:二进制枚举所有可能性,一个一个枚举出来,@离散数学,真值表. 题目如下: 二进制枚举代码如下 点击查看代码 #include <bits/stdc++.h ...
- Java编程指南:高级技巧解析 - Excel单元格样式的编程设置
最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ 前言 在Java开发中,处理Excel文件是一项常见的任务.在处理Excel文件时,经常需要对 ...
- 浅谈 golang 代码规范, 性能优化和需要注意的坑
浅谈 golang 代码规范, 性能优化和需要注意的坑 编码规范 [强制] 声明slice 申明 slice 最好使用 var t []int 而不是使用 t := make([]int, 0) 因为 ...
- 界面自动化测试录制工具,让python selenium自动化测试脚本开发更加方便
自动化测试中,QTP和selenium IDE都支持浏览器录制与回放功能,简单的来说就像一个记录操作步骤的机器人,可以按照记录的步骤重新执行一遍,这就是脚本录制.个人觉得传统录制工具有些弊端,加上要定 ...
- 神经网络之卷积篇:详解计算机视觉(Computer vision)
详解计算机视觉 计算机视觉是一个飞速发展的一个领域,这多亏了深度学习.深度学习与计算机视觉可以帮助汽车,查明周围的行人和汽车,并帮助汽车避开它们.还使得人脸识别技术变得更加效率和精准,即将能够体验到或 ...
- Jmeter函数助手21-evalVar
evalVar函数用于执行变量表达式. 变量的名称:填入变量的名称name.注意不是引用变量${name} 1.evalVar函数和eval函数的区别:evalVar只能接收变量名称:eval能接收引 ...
- exceptionx:灵活便捷的Python异常处理库,让异常处理更高效!
exceptionx English | 中文 exceptionx 是一个灵活且便捷的Python异常处理库,允许你动态创建异常类,并提供多种异常处理机制. exceptionx 的前身是 gqyl ...
- 什么是web3 为什么web3很重要
中心化网络已经帮助数十亿人融入了互联网,并在其上创建了稳定.可靠的基础设施. 与此同时,少数中心化巨头几乎垄断了互联网,甚至可以为所欲为. Web3 是摆脱这一困境的方案. 不同于科技巨头垄断的传统互 ...
- 【DataBase】MySQL 05 基础查询
MySQL数据库 05 基础查询 视频参考自:P18 - P27 https://www.bilibili.com/video/BV1xW411u7ax 配套的SQL脚本:https://shimo. ...
- Temperature 题解
前言 题目链接:洛谷:SPOJ:Hydro & bzoj. 题意简述 有一个长度为 \(n\) 的序列,每个位置值的范围为 \([L_i, R_i]\) 内,求原序列可能的最长不降子串长度. ...