首页 > 其他分享 >Acwing 第117场周赛

Acwing 第117场周赛

时间:2023-08-20 12:00:14浏览次数:35  
标签:周赛 int 道具 名字 伤害 117 奶牛 节点 Acwing

Acwing 第117场周赛

这次的题比较简单,但是在做第二题的时候有地方一开始没有想到,导致想的比较简单,提交错了两次,下次要彻底思考清楚再提交

A题

题意:

给定一个正整数 n,请你计算一共有多少个正整数数对 (a,b)同时满足:
a>b
a+b=n
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据占一行,包含一个正整数 n。

输出格式
每组数据输出一行结果,一个整数,表示满足条件的数对数量。
数据范围前 3个测试点满足 1≤T≤10。
所有测试点满足 1≤T≤104,1≤n≤2×109。

思路:

根据题意不难看出,我们要求的正整数数对的个数其实就是(n-1)/2个

代码:

#include<bits/stdc++.h>
using namespace std;
// const int N=1e5+10;
void solve(){
	int n;
	cin>>n;
	cout<<(n-1)/2<<endl;
	

}
int main(){
	int t;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;

}

B题

题意:

某款冒险游戏需要玩家通过 n个关卡获得最终胜利。
第一关为准备关卡,不会经历任何事件。
后续 n−1关,每一关都需要玩家依次经历以下两种事件:首先,玩家会获得一个免伤道具。游戏中一共包含 26种不同类型的免伤道具,用小写字母 a∼z来表示。然后,玩家会受到一次伤害。游戏中一共包含 26种不同类型的伤害,用大写字母 A∼Z来表示。免伤道具与伤害一一对应,道具 a对应伤害 A,道具 b对应伤害 B,以此类推。
当玩家受到某种伤害时,如果自身持有至少一个该伤害的对应免伤道具,则消耗一个对应免伤道具,并免除此次伤害,否则将受到一次伤害。
注意,当前关卡获得的道具即使当前关卡用不到,也可以留着以后关卡使用。
请你计算,整个游戏过程中玩家一共会受到多少次伤害。

思路:

这其实就是一个模拟题,我们只需要统计每关26种免疫道具的数量即可,注意有可能某一种道具不止有一个,可能有多个,因为可以留在后面的关卡,这里也是我一开始错误的点,我只记录了一个。

代码:

#include<bits/stdc++.h>
using namespace std;
int a[30];

void solve(){
	int n;
	cin>>n;
	memset(a,0,sizeof a);

	int ans=0;
	for(int i=1;i<=2*n-2;i++){
		char a1;
		cin>>a1;
		if(a1>='a'&&a1<='z'){
			int b=a1-'a';
			a[b]++;

		}
		else{
			int b=a1-'A';
			if(!a[b]){
				ans++;
			}
			else{
				a[b]-=1;
			}
		}
	}
	cout<<ans<<endl;
}
int main(){
	int t;
	// cin>>t;
	t=1;

	while(t--){
		solve();
	}
	return 0;
}

C题

题意:

贝茜(Bessie)作为约翰农场资历最老的牛,它拥有一个大家族,具体来说它一共有 n
个后代。
它的家族关系可以看作一个树形结构,它作为奶牛老祖视为树的根节点,即它没有父节点。现在,给定家谱树中其它牛的父节点信息,请你计算树中深度最大的节点的深度。
根节点的深度为 1。
注意:
树中每个节点都由节点对应的奶牛的名字表示。
每头奶牛都有一个独一无二的名字,名字中只包含大小写字母和数字。
名字中的字母不区分大小写,也就是说如果输入中出现了两个仅字母大小写不同的名字,那么它们对应的是同一头牛(同一节点)。
贝茜的名字就是 Bessie,当然在输入中名字中的字母不区分大小写。
输入保证,对于任何一对奶牛父子 ai,bi,在你得知奶牛 ai的父亲是奶牛 bi之前,你一定已经获知了奶牛 bi的父亲信息。
贝茜的父亲信息是无,因为它是根节点,这一点是你一开始就获知的。
输入格式
第一行包含整数 n,表示贝茜的后代数量。
接下来 n行,每行包含两个由大小写字母和数字构成的字符串 ai,bi,表示奶牛 ai的父亲是奶牛 bi。
提示:注意题目中提到过的输入顺序的特殊性。
输出格式
一个整数,表示树中深度最大的节点的深度。
数据范围
前 3个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤200,每个姓名字符串的长度取值范围为 [2,24]。

思路:

其实就是一个哈希表的简单应用,注意题中说名字不区分大小写,那么我们为了统一可以将所有名字转为大写或者小写。

代码:

#include<bits/stdc++.h>
using namespace std;
int a[30];
unordered_map<string, int> mp; // 将每头牛的名字映射到相对应的深度
string xiao(string s){
	for(int i=0;i<s.size();i++){
		s[i]=tolower(s[i]);
	}
	return s;
}
void solve(){
	
	mp["bessie"]=1;
	//确定根节点
	int n;
	cin>>n;
	int cnt=0;

	while(n--){
		string a,b;
		cin>>a>>b;
		a=xiao(a);
		b=xiao(b);
		mp[a]=mp[b]+1;
		cnt=max(cnt,mp[a]);

	}
	cout<<cnt<<endl;

}
int main(){
	int t;
	// cin>>t;
	t=1;

	while(t--){
		solve();
	}
	return 0;

}

标签:周赛,int,道具,名字,伤害,117,奶牛,节点,Acwing
From: https://www.cnblogs.com/du463/p/17643812.html

相关文章

  • 第111场双周赛
    (应该减8min问就是洗澡去了38开始做的) 四个字:浅尝辄止因为只能浅尝辄止 第一题: 思路两个遍历classSolution(object):defcountPairs(self,nums,target):""":typenums:List[int]:typetarget:int:rtype:int......
  • AcWing 861. 二分图的最大匹配
    题目给定一个二分图,其中左半部包含$n_1$个点(编号$1∼n_1$),右半部包含$n_2$个点(编号$1∼n_2$),二分图共包含$m$条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图$G$,在$G$的一个子图$M$中,$M$的边集......
  • Acwing 197 阶乘分解
    我觉得都不用过多解释,看代码就懂了#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6+10;intread(){ intx=0; chars=getchar(); while(s<'0'||s>'9') { s=getchar(); } while(s>='0'&&......
  • AcWing 860. 染色法判定二分图
    题目给定一个$n$个点$m$条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数$n$和$m$。接下来$m$行,每行包含两个整数$u$和$v$,表示点$u$和点$v$之间存在一条边。输出格式如果给定图是二分图,则输出Yes,否则输出No......
  • UVA11714 Blind Sorting 题解
    题目链接思路一道结论题,代码实现非常简单。把此题拆分成两个小问题。在最坏的情况下,需要几次询问,才能找出最大的数。在最坏的情况下,需要几次询问,才能找出次大数。对于找出最大的数,可以模拟二分查找来解决,每次将左边界右移或右边界左移,最终得到最大数。因此在最坏的情......
  • [ARC117D] Miracle Tree
    题目大意给定一棵\(n\)个节点的树,要求构造出一个点权序列\(E\),满足以下三个条件:所有\(E_i\ge1(1\lei\len)\)。对于任意一组\((i,j)(1≤i<j≤N)\),使\(|E_i-E_j|\geq\operatorname{dist}(i,j)\),\(\operatorname{dist}(i,j)\)即树上\(i\)和\(j\)两点距离。......
  • Programming abstractions in C阅读笔记: p114-p117
    《ProgrammingAbstractionsinC》学习第48天,p114-p117,​总结如下:一、技术总结主要通过randomnumber介绍了随机数的相关用法,interface​示例(random.h)​,clientprogram示例(craps.c)。#include<stdio.h>#include"genlib.h"#include"random.h"staticboolTryToMakePo......
  • AcWing 858. Prim算法求最小生成树
    题目给定一个$n$个点$m$条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图$G=(V,E)$,其中$V$表示图中点的集合,$E$表示图中边的集合,$n=|V|,m=|E|$。由$V$中的全部$n$个......
  • 第 358 场周赛 - 力扣(LeetCode)
    第358场周赛-力扣(LeetCode)2815.数组中的最大数对和-力扣(LeetCode)双for遍历即可classSolution{public:intmaxSum(vector<int>&nums){autore=[](intx){intma=0;while(x){if(x%10>ma)......
  • AcWing 854. Floyd求最短路
    题目给定一个$n$个点$m$条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定$k$个询问,每个询问包含两个整数$x$和$y$,表示查询从点$x$到点$y$的最短距离,如果路径不存在,则输出impossible。数据保证图中不存在负权回路。输入格式第一行包含三个整数$n,m,k......