UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门:
[1]:AtCoder
[2]:UPC比赛场
[3]:UPC补题场
参考资料
[1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html
B.Reversi(记录结果再利用的DP)
•参考资料
[1]:中国石油大学(华东), 张森
•题意
有 n 个石子,编号为 1~n ,第 i 个石子被涂成颜色 coli;
操作:任选两个颜色相同的石子 i,j ,i 与 j 之间的所有石子涂成颜色 coli;
上述操作可以不执行,也可以执行多次;
求最多有多少不同的颜色序列;
•题解
定义 dp[ i ] 前 i 个石子最多的不同的颜色序列;
对于第 i 个石子,可求出距石子 i 最近的石子 j ,并且石子 j 满足 j < i && coli = colj ;
那么对于位置 i , j :
①如果不执行操作,那么 dp[ i ]=dp[ i-1 ];
②如果执行操作,并且 j ≠ i-1 ,那么 dp[ i ] = dp[ j ];
综上,对于第 i 个位置的石子,首先令 dp[ i ]=dp[ i-1 ],如果 j ≠ i-1,dp[ i ] += dp[ j ];
•Code
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int MOD=1e9+;
const int maxn=2e5+; int n;
int col[maxn];
int pos[maxn];
ll dp[maxn]; ll Solve()
{
dp[]=;
dp[]=;
pos[col[]]=; for(int i=;i <= n;++i)
{
dp[i]=dp[i-];
int j=pos[col[i]]; if(j != i-)
{
dp[i] += dp[j];
dp[i] %= MOD;
} pos[col[i]]=i;///不管j是否为i-1,都要更新pos[col[i]];
}
return dp[n]%MOD;
}
int main()
{
scanf("%d",&n);
for(int i=;i <= n;++i)
scanf("%d",col+i); printf("%d\n",Solve()); return ;
}
G.轮回(待解决)
•参考资料
[1]:wjyyy
UPC个人训练赛第十五场(AtCoder Grand Contest 031)的更多相关文章
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十五场
传送门 A: Colorful Subsequence •题意 给一个长为n的小写字母序列,从中选出字母组成子序列 问最多能组成多少种每个字母都不相同的子序列 (不同位置的相同字母也算是不同的一种) ...
- 问题 J: Palindromic Password ( 2018组队训练赛第十五场) (简单模拟)
问题 J: Palindromic Password 时间限制: 3 Sec 内存限制: 128 MB提交: 217 解决: 62[提交][状态][讨论版][命题人:admin] 题目描述 The ...
- 问题 C: Frosh Week(2018组队训练赛第十五场)(签到)
问题 C: Frosh Week 时间限制: 4 Sec 内存限制: 128 MB提交: 145 解决: 63[提交][状态][讨论版][命题人:admin] 题目描述 Professor Zac ...
- UPC 2019年第二阶段我要变强个人训练赛第十六场
传送门: [1]:UPC比赛场 [2]:UPC补题场 F.gu集合(数论) •题目描述 题目描述: Dew有一个长为n的集合S. 有一天,他想选k个不同的元素出来做游戏. 但是Dew只有两只手,所以他 ...
- 备战省赛组队训练赛第十四场(UPC)
codeforces:传送门 upc:传送门 外来题解: [1]:https://blog.csdn.net/ccsu_cat/article/details/86707446 [2]:https:/ ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十四场
A.JOIOJI •传送门 [1]:BZOJ [2]:洛谷 •思路 在一个区间(L,R]内,JOI的个数是相等的,也就是R[J]-L[J]=R[O]-L[O]=R[I]-L[I], 利用前缀和的思想, ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场
E: 飞碟解除器 •题目描述 wjyyy在玩跑跑卡丁车的时候,获得了一个飞碟解除器,这样他就可以免受飞碟的减速干扰了.飞碟解除器每秒末都会攻击一次飞碟,但每次只有p/q的概率成功攻击飞碟.当飞碟被成功 ...
- 备战省赛组队训练赛第十八场(UPC)
传送门 题解:by 青岛大学 A:https://blog.csdn.net/birdmanqin/article/details/89789424 B:https://blog.csdn.net/b ...
- 备战省赛组队训练赛第十六场(UPC)
传送门 题解: by 烟台大学 (提取码:8972)
随机推荐
- 【花般绽放】balibali
先放项目地址:https://github.com/1067011734/balibali 感谢无私的程序员们分享 我们边看效果边看代码 项目运行出来的效果 先看Home页面 轮播 //src\pag ...
- MySQL安装后设置root 密码
Mysql安装完成后初始化root 密码为空,直接回车 使用命令行: mysqladmin -u root password "123456" 来设置root密码.这里我设置的密码 ...
- Thread class vs Runnnable interface(转)
http://developer.51cto.com/art/201203/321042.htm Thread(Runnable target) Allocates a new Thread obje ...
- js表格上下移动添加删除
html部分 <div onclick='fn()'>加</div> <table width="250" border="1" ...
- ubuntu 使用glfw.h 出现函数无法调用
最近在学习在Ubuntu下使用qt进行opengl开发,使用到了glfw这个库.我安装官网的编译和安装方法进行了配置安装,在usr/local/include的下产生了glfw.h文件. 于是我在我的 ...
- BZOJ 4034 洛谷3178 树上操作题解
一个很裸的树链剖分模板.注意一下数据范围,有的地方要开longlong,这就是唯一的陷阱了. # include<iostream> # include<cstdio> # i ...
- 17.使用android_studio开发libgdx
以前用eclipse开发libgdx,由于每次开机都会自检一遍安卓环境,觉得慢,就把安卓项目包给关掉了,结果再打开资源目录发生了变化,导致安卓打包不了,所以决定尝试使用as开发 首先安装as,导入gd ...
- Android7.0 添加快速设定Quick Settings Tile
Android7.0新推出了一个非常实用的功能--添加快速设定(或者翻译成快速设置),但是感觉社区里关注的人比较少,可能目前为止国内还没有Android7.0的手机,但是越早接触越好,甚至可以告诉产品 ...
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
- 利用微信提高APP下载的3个推广方式!
http://www.cocoachina.com/market/20150615/12149.html 走进移动互联网时代,各式各样App层出不穷,开发者们已经早一步走在了我们前面,为我们想到了一切 ...