P3845 [TJOI2007]球赛】的更多相关文章

题目描述: 两个球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已经抽签决定比赛名单. 有人向队员打听比赛安排的名单.a说他不和x比,c说他不和x,z比,请编程找出三队赛手的名单. 分析:要找去三队赛手的名单,也就是要分别找到a,b,c的对手,我们通过排除法,循环遍历所有的可能性得到结果. 程序代码: #include<iostream> using namespace std; void fun() { for(char i='x';i<='z';i++) { fo…
dp(i)表示前i个人最少坐多少辆车, dp(i) = min(dp(j) + 1, dp(i)) (0 <= j < i 且 (i, j]的人能坐在一辆车上) 时间复杂度O(n²) --------------------------------------------------------------------------- #include<bits/stdc++.h>   using namespace std;   const int maxn = 2509;   i…
度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 293    Accepted Submission(s): 130 Problem Description 世界杯正如火如荼地开展!度度熊来到了一家酒吧. 有 N 对情侣相约一起看世界杯,荧幕前正好有 2×N 个横排的位置. 所有人都会随机坐在某个位置上. 当然,如果某一对情…
题目链接 luogu [TJOI2007]线段 题解 dp[i][0/1]第i行在左/右端点的最短路 瞎转移 代码 #include<bits/stdc++.h> using namespace std; inline int read() { int x= 0 ,f = 1; char c = getchar(); while(c < '0' || c > '9')c = getchar(); while(c <= '9' &&c >= '0')x =…
P3847 [TJOI2007]调整队形 题目背景 学校艺术节上,规定合唱队要参加比赛,各个队员的衣服颜色不能很混乱:合唱队员应排成一横排,且衣服颜色必须是左右对称的. 例如:“红蓝绿蓝红”或“红蓝绿绿蓝红”都是符合的,而“红蓝绿红”或“蓝绿蓝红”就不符合要求. 合唱队人数自然很多,仅现有的同学就可能会有3000个.老师希望将合唱队调整得符合要求,但想要调整尽量少,减少麻烦.以下任一动作认为是一次调整: 题目描述 1.在队伍左或右边加一个人(衣服颜色依要求而定): 2.在队伍中任两个人中间插入一…
题目链接:P3853 [TJOI2007]路标设置 是个水二分,那你还\(WA\).很简单,就是练了练和早上那题相似的题. 二分答案即可,复杂度\(O(Nlogl)\),可以通过本题. 不过,需要注意的是,若整除,\(cnt--\),否则和我一样成\(80pts\). \(Code\): #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int l,n,k,ans=0…
bzoj3367[Usaco2004 Feb]The Big Game 球赛 题意: n只奶牛,每只支持两个球队中的一个,它们依次上车,上到一定程度可以开走这辆车并换下一辆继续上.要求一辆车上支持不同球队的奶牛数的差≤I,或者这辆车上只有支持同一球队的牛.问通过安排换车时机所能得到的车数的最小值.n≤2500. 题解: f[i]=f[j]+1,abs(sum[0][i]-sum[0][j]-sum[1][i]+sum[1][j])<=I||sum[0][i]==sum[0][j]||sum[1]…
文中给了你一些句子,以及让你任意插入某个位置以及查询某个位置的句子. 发现因为是句子很难搞,所以开个 map 离散一下成数字.然后在额外开一个 map 记录这个数字对应的句子. 然后你要写一种支持插入任意位置与查询任意位置的数据结构,显然可以平衡树. 但是我就不写! 使用块状链表的超高速实现,常数小还好写好调.最大的点用时也才 400ms .代码还短. 学习链接 // Problem: P3850 [TJOI2007]书架 // Contest: Luogu // URL: https://ww…
题目链接 区间 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…
传送门 思路: 类似于数列分段的二分查找答案.设目前的 mid 是一个最小的“空旷指数”,那么在 sum 数组(路标数组)里每两个相邻间的路标距离一定要小于等于目前的 mid , 如果大于,那就必须使用一些路标去填补这个距离. 两个路标之间距离大于 mid 又要分为两种情况:①两路标之间距离不能整除 mid ,则要放置 ( sum [ i+1 ] -sum [ i ] )/mid 个路标.②如果两路标之间距离能够整除 mid 则所放置的路标数要 -1 . 每一次二分判断 mid 距离是否满足 c…