首页 > 其他分享 >题解:洛谷 P10497 [USACO03Open] Lost Cows

题解:洛谷 P10497 [USACO03Open] Lost Cows

时间:2024-09-01 08:54:41浏览次数:3  
标签:bf 洛谷 Lost int 题解 ans 编号 奶牛

原题链接

思路 + 算法

首先,考虑读入到 \(a_i\) 时,如果要得到此时的最优解(指所有牛的编号不重不漏地覆盖 \([1,i]\) 的所有编号),对于第 \(i\) 头奶牛,因为在它前面有 \(a_i\) 头奶牛的编号小于它,所以第 \(i\) 头奶牛的编号应当为 \(a_i+1\)。

如果有一头新的奶牛 \(i+1\) 加入到这个奶牛序列,要使它的编号恰好为 \(a_{i+1}+1\),原来编号为 \(a_{i+1}+1\) 的奶牛就必须让编号 \(+1\) 来让出这个编号。同样,编号大于 \(a_{i+1}+1\) 的奶牛也必须跟着增加编号来维持前 \(i\) 头奶牛之间的相对关系。

那么我们的暴力算法就出现了:

每读入一个新的 \(\bf{a_i}\),就让它之前编号大于等于 \(\bf{a_i}\) 的奶牛的编号增加 \(\bf{1}\),最后再将第 \(\bf{i}\) 头奶牛的编号设置为 \(\bf{a_i+1}\)。

最后输出所有奶牛的编号即可,注意第一头奶牛的编号要在输入前初始化为 \(1\)。

时间复杂度 \(O(N^2)\)。

AC 代码

#include<cstdio>
using namespace std;

const int N=1e5+5;
int n,a[N],ans[N];

int main()
{
	scanf("%d",&n);
	ans[1]=1;
	for(int i=2;i<=n;i++)
	{
		scanf("%d",&a[i]);
		for(int j=1;j<i;j++)
			if(ans[j]>a[i]) ans[j]++;
		ans[i]=a[i]+1;
	}
	for(int i=1;i<=n;i++)
		printf("%d\n",ans[i]);
	return 0;
}

标签:bf,洛谷,Lost,int,题解,ans,编号,奶牛
From: https://www.cnblogs.com/jerrycyx/p/18391001

相关文章

  • 题解:洛谷 P10878 [JRKSJ R9] 在相思树下 III
    原题链接解析在操作一时,最小值如果在最后一位,其无法更新任何数,会被删除;否则不在最后一位时一定会被其右侧更大的数更新。所以在操作一时,最小值一定会被更新掉。同理,在操作二时,最大值一定会被更新掉。由此,操作一决定了答案的下限,操作二决定了答案的上限。所以可以得出贪心策略......
  • LOJ #6089. 小 Y 的背包计数问题 题解
    Description小Y有一个大小为\(n\)的背包,并且小Y有\(n\)种物品。对于第\(i\)种物品,共有\(i\)个可以使用,并且对于每一个\(i\)物品,体积均为\(i\)。求小Y把该背包装满的方案数为多少,答案对于\(23333333\)取模。定义两种不同的方案为:当且仅当至少存在一种物品的......
  • 学校训练赛的一些题解
    第二十一届宁波大学程序设计竞赛(重现赛链接)C游戏开发部的小游戏(C)赛时并没有写出来,果然dp还得多练)将所有石头视为容量为\(n\)的背包,每堆石头的数量即背包中物品的质量,对于\(a_i\leqf_i\leqb_i\),由于\(f_i\)最终取值唯一,可当作分组背包处理。将大小为\(i\)的\(t\)......
  • 洛谷 P11012 颜料
    洛谷P11012颜料题意给出长度为\(n\)的序列\(a\)。定义一段区间\([l,r]\)的绚丽程度\(X_{l,r}\)为\(\sum_{i=1}^{W}\sum_{j=i+1}^W\min(c_i,c_j)\),其中\(W\)是值域,\(c_i\)表示\(a\)序列\([l,r]\)中\(i\)出现的次数,求绚丽程度至少为\(k\)的区间长度最小值。......
  • 洛谷 P11011 点的覆盖
    洛谷P11011点的覆盖题意给定一个四边平行于坐标轴的矩形\(A\),给定\(n\)个在矩形\(A\)内部(可能在边缘上)的点。求有多少个\(A\)的子矩形覆盖了所有\(n\)个点(允许在边缘上)。所有坐标都是整数。思路求出:\(X_1=\max_{i=1}^nx_i\),\(X_2=\min_{i=1}^nx_i\),\(Y_1=\max_......
  • CCF-CSP 2024 --重塑矩阵1,2c语言题解
     创作想法是因为像我当初大一时候想参加一些比赛但是奈何只学了c和c相关数据结构,但是对于许多竞赛的题目的题解往往都是c++或者其他面向对象的编程语言,让我们难以在c语言基础上入手这些比较复杂的题目。 创造的目的是为了帮助各位同时提高我对c语言编程的理解和锻炼个人......
  • CSP-J 2020 初赛试题解析(第一部分:单项选择题(5-10))
    ......
  • 【秋招笔试】8.30饿了么秋招(算法岗)-三语言题解
    ......
  • Leetcode 第 408 场周赛题解
    Leetcode第408场周赛题解Leetcode第408场周赛题解题目1:3232.判断是否可以赢得数字游戏思路代码复杂度分析题目2:3233.统计不是特殊数字的数字数量思路代码复杂度分析题目3:3234.统计1显著的字符串的数量思路代码复杂度分析题目4:3235.判断矩形的两个角落是否......
  • 【C语言进阶】C语言指针进阶实战:优化与难题解析
    ......