题解P3847 [TJOI2007]调整队形】的更多相关文章

P3847 [TJOI2007]调整队形 题目背景 学校艺术节上,规定合唱队要参加比赛,各个队员的衣服颜色不能很混乱:合唱队员应排成一横排,且衣服颜色必须是左右对称的. 例如:“红蓝绿蓝红”或“红蓝绿绿蓝红”都是符合的,而“红蓝绿红”或“蓝绿蓝红”就不符合要求. 合唱队人数自然很多,仅现有的同学就可能会有3000个.老师希望将合唱队调整得符合要求,但想要调整尽量少,减少麻烦.以下任一动作认为是一次调整: 题目描述 1.在队伍左或右边加一个人(衣服颜色依要求而定): 2.在队伍中任两个人中间插入一…
题目链接 区间 DP 的经典模型之一. 题意是将整个串通过四种操作变成一个回文串,根据套路,不难设计出 dp[i][j] 表示为使区间 [i, j] 成为回文串的最少操作次数. 先判断 a[i] 是否等于 a[j],如果相等,那么: f[i][j] = max(f[i][j], f[i + 1][j - 1]) 如果不相等,则改变一个: f[i][j] = max(f[i][j], f[i + 1][j - 1] + 1) 其实可以发现第一.二种操作都和第三种等价,这三种转移可以表示为: f[i…
题目链接 DP果真是考思维啊 增加一个数的操作等价于删掉那个不和谐的数的操作. 所以1.2操作可以忽略. 剩下3.4操作,则可以设计f[i][j]是将区间[i,j]变成回文序列需要的操作数. if(a[i]==a[j]) f[i][j]=f[i+1][j-1]; 如果不一致的话,考虑改.删左边.删右边三种操作. #include<cstdio> #include<cstring> #include<cstdlib> #include<cctype> #inc…
NC207040 丢手绢 题目 题目描述 "丢丢丢手绢,轻轻地放在小朋友的后面,大家不要告诉她,快点快点抓住她,快点快点抓住她." 牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的游戏,但是小朋友们太小了,不能围成一个均匀的圆圈,即每个小朋友的间隔可能会不一致.为了大家能够愉快的玩耍,我们需要知道离得最远的两个小朋友离得有多远(如果太远的话牛老师就要来帮忙调整队形啦!). 因为是玩丢手绢,所以小朋友只能沿着圆圈外围跑,所以我们定义两个小朋友的距离为沿着圆圈顺时针走或者逆时针走的最近距离…
[问题描述]回文词是一种对称的字符串--也就是说, 一个回文词, 从左到右读和从右到左读得到的结果是一样的. 任意给定一个字符串, 通过插入若干字符, 都可以变成一个回文词. 你的任务是写一个程序, 求出将给定字符串变成回文词所需插入的最少字符数.比如字符串" Ab3bd",在插入两个字符后可以变成一个回文词( " dAb3bAd" 或" Adb3bdA") .然而,插入两个以下的字符无法使它变成一个回文词.[输入文件]第一行包含一个整数N,表示…
题目:[USACO Jan07] 均衡队形 描述: 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比赛.为简化问题,他将从奶牛队列中选出一个连续区间来进行游戏.不过,参加游戏的奶牛要玩的开心的话就不能在身高上差距太大. 农夫约翰制定了 Q (1 ≤ Q ≤ 200,000) 个预定的参赛组,给出它们的身高 (1 ≤ 身高 ≤ 1,000,000).对每个参赛组,他需要你帮助确定组中最高牛和最低牛的…
题目 合唱队形首先要满足的是从1这个位置到中间任意的位置为单增的,从中间任意的位置到最后是单减的,且长度最长.这样才能满足出列的同学最少. 如果要满足这个条件那么我们可以先预处理出每个点的从前找的最长上升子序列的长度和从后找的最长上升子序列的长度. 再找一个最大值. 最后输出总人数减去这个留下的最多人数再加1. 代码: #include<iostream> #include<cstring> using namespace std; ],b[],c[],n,maxn;//c,b数组…
先上题目 P1091 合唱队形(点击打开题目) 题目解读: 1.由T1​<...<Ti​和Ti​>Ti+1​>…>TK​可以看出这题涉及最长上升子序列和最长下降子序列 2.注意点:当n=1时是允许的,就是说没有因为i=1,Ti=T1,所以最后全部人都要出列这种说法 初步思路: 建立两个函数,一个参数为l,r,判断l~r内最长上升子序列的最大长度,另外一个函数判断l~r内最长下降子序列的最大长度,无论你是先高后低,还是一路升高还是一路降低都可以用这两个函数解决 让i=1~n,然…
 题目 [题目描述]N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形.合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K).你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形.[输入格式]输入文件chorus.in的第一行是一个整数N,表示同学的总数.第一行…
文中给了你一些句子,以及让你任意插入某个位置以及查询某个位置的句子. 发现因为是句子很难搞,所以开个 map 离散一下成数字.然后在额外开一个 map 记录这个数字对应的句子. 然后你要写一种支持插入任意位置与查询任意位置的数据结构,显然可以平衡树. 但是我就不写! 使用块状链表的超高速实现,常数小还好写好调.最大的点用时也才 400ms .代码还短. 学习链接 // Problem: P3850 [TJOI2007]书架 // Contest: Luogu // URL: https://ww…