【JSOI 2007】祖玛
【题目链接】
【算法】
f[i][j]表示第i段到第j段,最少需要多少次全部消除
那么,当color[i] = color[j]时 :
若s[i] + s[j] > 2,根据题目中所说的“连锁反应”,很容易得到f[i][j] = f[i+1][j-1]
若s[i] + s[j] = 2,我们就需要先消除i到j,然后再花一颗珠子消除剩余的,则 f[i][j] = f[i+1][j-1] + 1
否则,显然有 : f[i][j] = max{f[i][k] + f[k+1][j]} (i <= k < j)
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1020
const int INF = 1e9; struct info
{
int s,col;
} t[MAXN]; int i,j,x,len,n,k;
int a[MAXN],f[MAXN][MAXN]; template <typename T> inline void read(T &x)
{
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x)
{
if (x < )
{
putchar('-');
x = -x;
}
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x)
{
write(x);
puts("");
} int main()
{ read(n);
for (i = ; i <= n; i++) read(a[i]);
len = ;
t[].col = a[];
t[].s = ;
for (i = ; i <= n; i++)
{
if (a[i] == a[i-]) t[len].s++;
else
{
len++;
t[len].s = ;
t[len].col = a[i];
}
}
for (i = ; i <= len; i++)
{
for (j = ; j <= len; j++)
{
f[i][j] = INF;
}
}
for (i = ; i <= len; i++)
{
if (t[i].s == ) f[i][i] = ;
else f[i][i] = ;
}
for (k = ; k <= len; k++)
{
for (i = ; i <= len - k + ; i++)
{
j = i + k - ;
if (t[i].col == t[j].col)
{
if (t[i].s + t[j].s > ) f[i][j] = f[i+][j-];
else f[i][j] = f[i+][j-] + ;
}
for (x = i; x < j; x++) f[i][j] = min(f[i][j],f[i][x]+f[x+][j]);
}
}
writeln(f[][len]); return ;
}
【JSOI 2007】祖玛的更多相关文章
- [BZOJ 1032][JSOI 2007]祖玛 题解(区间DP)
[BZOJ 1032][JSOI 2007]祖玛 Description https://www.lydsy.com/JudgeOnline/problem.php?id=1032 Solution ...
- BZOJ 1032 JSOI 2007 祖码Zuma 区间DP
题目大意:依照祖玛的玩法(任意选颜色),给出一段区间.问最少用多少个球可以把全部颜色块都消除. 思路:把输入数据依照连续的块处理.保存成颜色和数量.然后用这个来DP.我们知道,一个单独的块须要两个同样 ...
- 【BZOJ 1031】【JSOI 2007】字符加密Cipher
后缀数组模板题,看了一天的后缀数组啊,我怎么这么弱TwT #include<cstdio> #include<cstring> #include<algorithm> ...
- 【BZOJ 1030】【JSOI 2007】文本生成器 AC自动机+递推
一直不理解到底怎么做啊,想了好久$TwT$ 最后终于明白了为什么找到第一个满足条件的$fail$就计算,因为避免重复,这个回答,,, 然后$root$下面要接上26个节点,这里26个字母中不在字典内的 ...
- [JSOI 2007]麻将
Description 题库链接 给你一副麻将,胡牌的条件是一对将和若干顺子和刻子组成.现在给你 \(m\) 张牌,牌共 \(n\) 种,问你听哪一张牌. \(1\leq n\leq 400,1\le ...
- [JSOI 2007]字符加密Cipher
Description 题库链接 给你一个长度为 \(n\) 的字符串,首尾相接依次断开每个断点可以得到 \(n\) 个长度为 \(n\) 的字符串,将其排序按序输出每个字符串的最后一个字母. \(1 ...
- 解题:JSOI 2007 重要的城市
题面 考虑一个点$x$,如果某两个点$u,v$间的所有最短路都经过$x$,那么$x$肯定是重要的.这个题$n$比较小,所以我们直接跑floyd,在过程中记录 当发生松弛时,我们具体讨论: 如果这个长度 ...
- [JSOI 2007] 字符加密
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1031 [算法] 将字符串倍长 , 构建后缀数组 , 然后按要求输出即可 时间复杂度 ...
- 【JSOI 2007】建筑抢修
[题目链接] 点击打开链接 [算法] 将T2从小到大排序,当决策当前建筑修或不修时,若当前花费时间 + T1 <= T2,则修,否则判断T1是否小于之前修的 T1最大的建筑,若小于,则修,我们可 ...
随机推荐
- CLR Via CSharp读书笔记(26) - 计算限制的异步操作
执行上下文: 执行上下文包括安全设置(压缩栈.Thread的Principal属性和Windows身份),宿主设置(System.Threading.HostExecutionContextManag ...
- 【板+背包】多重背包 HDU Coins
http://acm.hdu.edu.cn/showproblem.php?pid=2844 [题意] 给定n种价值为Ci,个数为Wi的硬币,问在1~V中的这些数中哪些数能由这些硬币组成? [思路] ...
- bzoj 1702 贪心,前缀和
[Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 807 Solved: ...
- CF778A:String Game
给出字符串s和t,以及s的长度n的一个全排列,求按照这个排列依次删除s的字符,删到何时s中不含子序列t. 解法一: t中的每个字符的位置在s中跳啊跳,合法的情况下t中的字符在s中的位置应该是单调递增的 ...
- [bzoj4199][Noi2015]品酒大会_后缀自动机_后缀树_树形dp
品酒大会 bzoj-4199 Noi-2015 题目大意:给定一个字符串,如果其两个子串的前$r$个字符相等,那么称这两个子串的开头两个位置$r$相似.如果两个位置勾兑在一起那么美味度为两个位置的乘积 ...
- 编写一个删除c语言程序文件中所有的注释语句
//删除c语言程序中所有的注释语句,要正确处理带引号的字符串与字符串常量 #include <stdio.h> using namespace std; #define MAXLINE 1 ...
- 七天从零基础学习android(3)--实现过程
首先这是我对自己编写程序的认识,要实现一个程序,根据之前编写C++的经验,要对所编写的软件有一个模糊的了解. 一个记账本软件,要实现的过程是,添加收支,显示本日,本月或本年的收支状态.然而基于是完全没 ...
- 一个动态链接的问题,dlsym后符号调用主函数的符号报告无法找到
先看看状况(小心头疼) client.c 编译得到 client:在 client 的 main 中用 dlopen( "./liba.so", RTLD_LAZY|RTLD_GL ...
- 【scrapy】Item及Spider
Items Item objects are simple containers used to collect the scraped data.They provide a dictionary- ...
- Hibernate复习之Hibernate基本介绍
众所周知.眼下流行的面向对象的对象关系映射的Java持久层框架有MyBatis和Hibernate.他们都是对象关系映射ORM. 解决的主要问题就是对象-关系的映射.域模型和关系模型都分别建立在概念模 ...