首页 > TAG信息列表 > SCOI2007

题解 P4163 [SCOI2007]排列

强烈谴责只有 125MB 的行为,然后我没删调试是个什么 SB。。。 闲话少说,切入正题—— 首先看到取余和数字是可以排列的,我们自然而然的想到了数位 dp,但是很显然这题不是的数位 dp 通常解决的是 \(1\sim k\) 之间符合要求的数这里是恰好符合的。 发现 \(s\) 长度很小,只有 \(15\),所以

题解 [SCOI2007]压缩

好题。 显然区间 dp,令 \(f_{l, r}\) 为 \([l, r]\) 之间的最短的长度。如果我们要压缩,那么就要考虑 M 与 R 的位置。由于我们大体是从左往右来转移的,所以显然我们只需要记录一下 M,R 是可以枚举的。令 \(f_{l, r, 0/1}\) 代表 \([l, r]\) 之间有没有 M 的最短长度。 我们默认 \((l

P2470 [SCOI2007]压缩

[SCOI2007]压缩 Luogu P2470 题目描述 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息。压缩后的字符串除了小写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一个M(如果当前位置左边没有M,则从串的开始算起)开始的解压结果(称为缓

P4467 [SCOI2007]k短路

P4467 [SCOI2007]k短路 #include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <cstring> using namespace std; int cnt2,poi1[51],nxt1[2501],des1[2501],cst1[2501]; int cnt1,poi2[51],nxt2[2501],des2[25

P2471 [SCOI2007]降雨量

题目描述 我们常常会说这样的话:“X 年是自 Y 年以来降雨量最多的”。它的含义是 X 年的降雨量不超过 Y 年,且对于任意 Y<Z<X,Z 年的降雨量严格小于 X 年。例如 2002,2003,2004 和 2005 年的降雨量分别为 4920,5901,2832 和 3890,则可以说“2005 年是自 2003 年以来最多的”,但不能说“2005

[SCOI2007]组队

嘟嘟嘟   这题有人说部分分O(n3)暴力,然而我暴力都没写过,调了半天也没用……还是看题解吧 首先,咱把A * ( h – minH ) + B * ( s – minS ) <= C 变个型,得到 A * h + B * s - C <= A * minH + B * minS. 令 sum = A * h + B * s - C,如果我们把所有球员按sum排序,就能保证取球员的

[SCOI2007]压缩

V.[SCOI2007]压缩 这种DP状态需要考虑到各种状态的题最讨厌了…… 思路1.设\(f[i][j]\)表示将区间\([i,j]\)里面所有东西压一起的最小代价 有两种转移: 砍成两段拼一起 样例里面这种方法,MaRR=aaaa 这种倍增法 然后我就写出了这样的代码: #include<bits/stdc++.h> using namesp

[SCOI2007]修车

链接 这道题有一个比较神奇的转化。 很显然,我们要求最少总等待时间。 一般而言,我们看见本题,第一反应都是检查选了多少个,来决定第一个的费用。但是,这样存在巨大的后效性,因为我们每多选一个,之后都会被迫都多加上一个,是一个十分的复杂的动态问题。 我们试图将这样一个问题静态化,即我

P2472 [SCOI2007]蜥蜴

主要问题是每个石柱能站的次数有限,那石柱就对应一条边,走 \(a\) 次对应流量为 \(a\) #include<bits/stdc++.h> using namespace std; #define rg register inline int read(){ rg char ch=getchar(); rg int x=0,f=0; while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();

[SCOI2007]k短路(A*)

题目描述 有nn个城市和mm条单向道路,城市编号为11到nn。每条道路连接两个不同的城市,且任意两条道路要么起点不同要么终点不同,因此nn和mm满足m \le n(n-1)m≤n(n−1)。 给定两个城市a和b,可以给a到b的所有简单路(所有城市最多经过一次,包括起点和终点)排序:先按长度从小到大排序,长度相同

【SCOI2007】降雨量

新人求助,降雨量那题本机AC提交WAWAWA…… 原题: 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”。它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年。例如2002,2003,2004和2005年的降雨量分别为4920,5901,2832和3890,则可以说“2005年是自2003年以来最多的”,但

bzoj1071 [SCOI2007]组队

题目链接 problem 给出A,B,C和n个二元组(x,y)。 问最多选多少个二元组使得所选二元组均满足$A\times (x-minx) + B \times (y - miny) \le C$。其中$minx,miny$分别表示所选二元组中最小的x,y。 solution 将题目中的式子展开得: \(Ax - Aminx + By - Bminy \le C\) \(Ax + By \le C +

【Luogu P2471】[SCOI2007]降雨量

Luogu P2471 啊啊啊啊这真是一道史上最毒瘤的题目!!!!! 题意就是给出n个年份的降雨量 询问:“自从\(y\)年以来\(x\)年的降雨量最大”的正确性。 显然有多种情况需要考虑,那么就需要通过分类讨论理清程序的逻辑了。 对于“自从\(y\)年以来\(x\)年的降雨量最大”这样一句话,可以转化成如下条

bzoj1072/scoi2007 排列(状压dp

Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0)。例如123434有90种排列能 被2整除,其中末位为2的有30种,末位为4的有60种。 Input 输入第一行是一个整数T,表示测试数据的个数,以下每行一组s和d,中间用空格隔开。s保证只包含数字0, 1 , 2, 3,

BZOJ 1070: [SCOI2007]修车 最小费用最大流

title BZOJ 1070 LUOGU 2053 题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的。现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小。 说明:顾客的等待时间是指从他

[洛谷P2472] [SCOI2007]蜥蜴

题目链接: 蜥蜴 题目分析: 一道网络流,先来分析一下问题: 在一个\(r*c\)的图中分布了一些数,其他地方都用\(0\)填充,我们分别从指定的一些数出发,每次可以移动到周围距离为\(d\)以内的数上(或图外),原来的数会被\(-1\),任何时候数不能为负。各个数走法之间互相影响。问至多有多少个数出发

P2053 [SCOI2007]修车

题目链接 这是一道很不错的费用流好题,建图的思想很是巧妙 我们把每个工人拆成\(n\)个点,表示当前工人在\(n\)个不同的时间段,那么\(m\)个工人就是\(n*m\)个点,然后把这些点向汇点连一条费用为0边权为1的边,也就是同一时段一个工人只能维修一辆车。对于每辆车,我们先从汇点连出一条费用为

BZOJ1066: [SCOI2007]蜥蜴

BZOJ1066: [SCOI2007]蜥蜴 Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。 石柱都不稳定,每次当蜥蜴

[bzoj1071] [SCOI2007]组队

Description   NBA每年都有球员选秀环节。通常用速度和身高两项数据来衡量一个篮球运动员的基本素质。假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有队员都应该满足: A * ( height – minH ) + B * ( speed – minV ) <= C 其中A和B,C为给定

[SCOI2007]修车

题目 洛谷 做法 假设一位修理员修理的顺序分别为\(a[1],a[2]...a[n]\),时间分别为\(w[1],w[2]...w[3]\) 总等待时间为\(\sum\limits_{i=1}^n w[1]*(n-i+1)\) 则\(S\)(超级源点)向n辆车连(1流量,0费用)的边,右部分是\(n*m\)个二元组\((x,y)\)表示第\(x\)个人修的第\(y\)辆车 左右连边

[SCOI2007]最大土地面积

嘟嘟嘟 无意间看到了一个计算几何。 \(n <= 2000\)就很愉快了。枚举求完凸包后\(O(n ^ 2)\)枚举对角线,然后另两个点用旋转卡壳维护就完事了。 结果数据(或是题意)坑人,有的有重复的点,如果选了两个重复的点的话就算成三角形了(凭什么),所以应该求一个最简凸包(就是点最少)。 哎,本来十几分

BZOJ 1070 [SCOI2007]修车 (费用流)

BZOJ 1070 [SCOI2007]修车 (费用流) 计算出每一辆车的离开的时间有些难。 可以考虑每一辆车对时间造成的贡献。 首先把每一个工作人员拆成n个点。 重点来了:第i个点代表这个人修的车中倒数第i辆 由于我们无法确定是该人修多少辆车。 我们反过来设就没有问题。 然后将每辆车向这些点

luogu P2470 [SCOI2007]压缩

传送门 dalao们怎么状态都设的两维以上啊?qwq 完全可以一维状态的说 设\(f[i]\)为前缀i的答案,转移就枚举从前面哪里转移过来\(f[i]=min(f[j-1]+w(j,i))(j\in [1,i])\) 现在要知道\(w(i,j)\)怎么写,也就是区间\([i,j]\)的最小长度(要求区间最多只能在开头有一个W),首先不压缩的长度