网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

1.15USACO铜组测试2(21JanContest)-创新互联

T1奶牛唱歌 问题描述

一个鲜为人知的事实是,奶牛拥有自己的文字:「牛文」。牛文由 26 个字母 ‘a’ 到 ‘z’ 组成,但是当奶牛说牛文时,可能与我们所熟悉的 ‘abcdefghijklmnopqrstuvwxyz’ 不同,她会按某种特定的顺序排列字母。

创新互联服务项目包括麻阳网站建设、麻阳网站制作、麻阳网页制作以及麻阳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,麻阳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到麻阳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

为了打发时间,奶牛 Bessie 在反复哼唱牛文字母歌,而 Farmer John 好奇她唱了多少遍。

给定一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母,计算 Bessie 至少唱了几遍完整的牛文字母歌,使得 Farmer John 能够听到给定的字符串。Farmer John 并不始终注意 Bessie 所唱的内容,所以他可能会漏听 Bessie 唱过的一些字母。给定的字符串仅包含他记得他所听到的字母。

输入格式

输入的第一行包含 26 个小写字母 ‘a’ 到 ‘z’ 的牛文字母表顺序。下一行包含一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母。字符串的长度不小于 1 且不大于 1000。

输出格式

输出 Bessie 所唱的完整的牛文字母歌的最小次数。

输入样例

abcdefghijklmnopqrstuvwxyz
mood

输出样例

3

样例说明

在这个样例中,牛文字母表与日常的字母表的排列一致。

Bessie 至少唱了三遍牛文字母歌。有可能 Bessie 只唱了三遍牛文字母歌,而 Farmer John 听到了以下被标记为大写的字母。
abcdefghijklMnOpqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcDefghijklmnopqrstuvwxyz

测试点性质

测试点 2-5 中,牛文字母表与日常的字母表相同。
测试点 6-10 没有额外限制。

思路

将每个顺序做一个代数进行比较,因为不会有重复的,看有多少个后面的小于等于前面的即可

代码
#includeusing namespace std;

mapmp;
string s , st;

int main(){cin >>s >>st;
	for(int i = 0; i< s.size(); ++i)
		mp[s[i]] = i;
	int ans = 1;
	for(int i = 0; i< st.size() - 1; ++i)
		if(mp[st[i + 1]]<= mp[st[i]])
			ans++;
	cout<< ans<< endl;
	return 0;
}
T2照片分组 问题描述

Farmer John 正再一次尝试给他的 N 头奶牛拍照(2≤N≤1000)。

每头奶牛有一个范围在 1…100 之内的整数的「品种编号」。Farmer John 对他的照片有一个十分古怪的构思:他希望将所有的奶牛分为不相交的若干组(换句话说,将每头奶牛分到恰好一组中)并将这些组排成一行,使得第一组的奶牛的品种编号之和为偶数,第二组的编号之和为奇数,以此类推,奇偶交替。

Farmer John 可以分成的大组数是多少?

输入格式

输入的第一行包含 N。下一行包含 N 个空格分隔的整数,为 N 头奶牛的品种编号。

输出格式

输出 Farmer John 的照片中的大组数。可以证明,至少存在一种符合要求的分组方案。

输入样例

7
1 3 5 7 9 11 13

输出样例

3

样例说明

在这个样例中,以下是一种分成大组数三组的方案。将 1 和 3 分在第一组,5、7 和 9 分在第二组,11 和 13 分在第三组。

输入样例

7
11 2 17 13 1 15 3

输出样例

5

样例说明

在这个样例中,以下是一种分成大组数五组的方案。将 2 分在第一组,11 分在第二组,13 和 1 分在第三组,15 分在第四组,17 和 3 分在第五组。

思路

因为偶数加偶数等于偶数,偶数加奇数等于奇数
奇数加奇数等于偶数,奇数加偶数等于偶数
分为以下几种情况

1 .奇数和偶数个数相同 , 可以直接配对输出个数

2 .偶数个数大于奇数,先把每个奇数配一个偶数,因为偶数和偶数相加只能是偶数,所以可以有下一组的偶数但是构不成奇数,偶数加上去是不影响数字的奇偶性的,所以把剩下的数字加到前面即可,不影响答案

3 . 奇数的个数大于偶数,先将每一个偶数和一个奇数配对,
两个奇数相加是一个偶数,如果剩下的奇数是三的倍数,每三个奇数配成两组,如果除以三余二剩下的便可以合成一个偶数进行下一组,
如果余一就只能抽出两个奇数合成一个偶数加到前面的数字中剩下的奇数个数就余二了,同上

代码
#includeusing namespace std;
const int MAXN = 1e3 + 10;

int n , even , odd , ans;

int main(){cin >>n;
	int temp;
	for(int i = 1; i<= n; ++i){cin >>temp;
		if(temp % 2)
			odd++;
		else
			even++;
	}
	if(even == odd)
		cout<< even + odd<< endl;
	else if(odd >even){ans = 2 * even;
		odd -= even;
		if(odd == 1)
			ans--;
		else{	if(odd % 3 == 0)
				ans += 2 * (odd / 3);
			else if(odd % 3 == 1){		odd -= 2;
				ans += 2 * (odd / 3);
				ans++;
			}
			else{		ans += 2 * (odd / 3);
				ans++;
			}
		}
		cout<< ans<< endl;
	}
	else{cout<< 2 * odd + 1<< endl;
	}
	return 0;
}
T3牛舍安排 问题描述

Farmer John 有 N 头奶牛(1≤N≤20),高度为 a1…aN。他的牛栏有 N 个牛棚,高度限制分别为 b1…bN(例如,如果 b5=17,那么一头高度不超过 17 的奶牛可以住在牛棚 5 里)。Farmer John 有多少种不同的方式安排他的奶牛,使得每头奶牛均住在不同的牛棚里,并且使得每个牛棚的高度限制均得到满足?

输入格式

输入的第一行包含 N。

第二行包含 N 个空格分隔的整数 a1,a2,…,aN。

第三行包含 N 个空格分隔的整数 b1,b2,…,bN。所有的高度和高度限制均在范围 内。

输出格式

输出 Farmer John 可以将每头奶牛安排到不同的牛棚里,使得每个牛棚的高度限制均得到满足的方法数。注意输出的数量可能需要使用 64 位整数型,例如 C++ 中的 long long。

输入样例

4
1 2 3 4
2 4 3 4

输出样例

8

样例说明

在这个例子中,我们不能将第三头奶牛安排到第一个牛棚里,因为 3=a3>b1=2。类似地,我们不能将第四头奶牛安排到第一或第三个牛棚里。一种符合高度限制的安排方式为将奶牛 1 安排到牛棚 1,奶牛 2 安排到牛棚 2,奶牛 3 安排到牛棚 3,奶牛 4 安排到牛棚 4。

测试点性质

测试点 1-5 满足 N≤8。
测试点 6-12 没有额外限制。

思路

将奶牛和牛棚都排个序,将每个奶牛可以住的牛棚用数组存储一下,
因为从后往前每个奶牛可以住的牛棚都会随着前面奶牛住的个数而减小,每个奶牛可以住的牛棚减去大于它的奶牛个数,用乘法原理乘一下即可

代码
#includeusing namespace std;
const int MAXN = 110;
#define int long long

int n , a[MAXN] , b[MAXN] , c[MAXN];

signed main(){cin >>n;
	for(int i = 1; i<= n; ++i)
		cin >>a[i];
	for(int i = 1; i<= n; ++i)
		cin >>b[i];
	sort(a + 1 , a + 1 + n);
	sort(b + 1 , b + 1 + n);
	for(int i = 1; i<= n; ++i){int temp = 0;
		for(int j = 1; j<= n; ++j)
			if(a[i]<= b[j])
				temp++;
		c[i] = temp;
	}
	for(int i = 1; i<= n; ++i)
		c[i] -= (n - i);
	int ans = 1;
	for(int i = 1; i<= n; ++i)
		if(c[i] >0)
			ans *= c[i];
	cout<< ans<< endl;
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:1.15USACO铜组测试2(21JanContest)-创新互联
浏览地址:http://bjjierui.cn/article/dceoeh.html

其他资讯