2021庐阳区赛

【P11704】 跳跃
提交1.04K

 

通过1.03K

 

时间限制1000MS

 

内存限制128MB
题目描述

猴子的正上方,每1米处,都有一个桃子,一共有N个桃子,每个桃子都有其能量值,摘下这个桃子吃下就获得了这个能力值。猴子每跳1米会消耗1个点能量,在能量值允许的下,它可以跳到任何一个可以到达的高度,并且将这个高度及以下高度的桃子摘下吃掉。确保猴子初始的能量一定可以摘下所有的桃子。求该猴子摘下吃掉所有的桃子后,保留最多的能量值

输入格式

第一行  两个整数N和M,表示桃子的数量和猴子的初始能量

第二行,N个非负整数,依次描述从下向上描述各桃子的能量值。

输出格式

一个整数,意义如题所述。

输入样例#1
3 2 
2 2 2
输出样例#1
4
题目说明

1<=N <=2000000

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2000010;
long long n, l, sum[2000010], m, f[maxn];
int q[maxn], front, rear;
struct node {
	int v, s;
	bool operator < (node rhs)const {
		return v-s< rhs.v-rhs.s;
	}
};
ll readint() {
	ll sum=0;
	char ch=getchar();
	while(ch>'9'||ch<'0') ch =getchar();
	while(ch>='0'&&ch<='9') {
		sum = sum*10+ch-'0';
		ch=getchar();
	}
	return sum;
}
priority_queue<node> pq;
int main() {
	ll t;
	node tmp, top;
	n=readint(), m = readint();
	for(int i=1; i<=n; i++) {
		t=readint();
		sum[i]=sum[i-1]+t;
	}
	tmp.v=m, tmp.s=0;
	pq.push(tmp);
	ll front=0, rear=1;
	for(int i=1; i<=n; i++) {
		while(!pq.empty()) {
			top = pq.top();
			if(top.v<i)
				pq.pop();
			else
				break;
		}
		f[i] = sum[i]-i+pq.top().v-pq.top().s;
		tmp.v=f[i], tmp.s=sum[i];
		pq.push(tmp);
	}
	cout<<f[n];
	return 0;
}
【P11703】 载重
提交1.04K

 

通过1.03K

 

时间限制1000MS

 

内存限制128MB
题目描述

某星球发生灾难,他们需要乘坐飞船逃离该星球,该星球有N个居民,已经排好队,要求按照队伍的顺序登船,飞船只能飞行M趟,为了控制成本,需要将飞船的承重设计的尽可能的小;给定N个居民的体重,求飞船的承重。

输入格式

第一行两个整数N和M,意义如题所述;

第二行,N个整数,表示居民的体重,

输出格式

一个整数,意义如题所述。

输入样例#1
8 3 
40 30 50 80 100 120 40 60 
输出样例#1
220
题目说明

1<=N<=1000000; 1<=M<=100000;

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
long long n, l, num[1000010], m;
bool check(ll mid){
	ll cnt=1, sum=0;
	for(int i=1; i<=n; i++){
		if(num[i]>mid)
			return false;
		if(sum+num[i]>mid){
			cnt++;
			sum=num[i];
		}else
			sum=sum+num[i];
	}
	return cnt<=m;
}
int main(){
	ll L=0, R=0, ans=0;
	cin>>n>>m;
	for(int i=1; i<=n; i++){
		cin>>num[i];
		R=R+num[i];
	}
	while(L<=R){
		ll mid = (L+R)/2;
		if(check(mid)){
			ans=mid;
			R=mid-1;
		}else
			L=mid+1;
	}
	cout<<ans;
	return 0;
}
【P11702】 连接
提交1.05K

 

通过1.03K

 

时间限制1000MS

 

内存限制128MB
题目描述

N个钢管,各有各的长度,现在想尽可能焊接成一 根长度为L的旗杆,当然有可能不能正好拼接出这个长度,但是要求尽可能接近这个长度,长一点或短一点也是可以, 请你找出最好的方案。

输入格式

第一行两个整数, N和L。

第二行N个整数,表示N个钢管的长度。

输出格式

一个整数,为最佳拼接的长度同期望旗杆长度的差值的绝对值。

输入样例#1
5 16 
3 1 3 5 6
输出样例#1
1
题目说明

 N<=20

#include<bits/stdc++.h>
using namespace std;
int n, l, num[30], ans;
void dfs(int cur, int len){
	if(cur>n){
		ans=min(ans, abs(len-l));
		return;
	}
	dfs(cur+1, len);
	dfs(cur+1, len+num[cur]);
}
int main(){
	cin>>n>>l;
	for(int i=1; i<=n; i++){
		cin>>num[i];
		ans+=num[i];
	}
	ans=max(ans, abs(ans-l));
	dfs(1, 0);
	cout<<ans;
	return 0;
}
【P11701】 第几天
提交1.08K

 

通过1.06K

 

时间限制1000MS

 

内存限制128MB
题目描述

给定一个日期,求这一天是当年的第几天。每年的元旦,1月1日,都是每年的第一天,但是每年的最后一天,12月31日,有可能是第365天,也有可能是第366天,因为闰年的二月是29天,平年的二月是28天。一月、三月、五月、七月、八月、十月、十二月都是31天,四月、六月、九月、十一月都是30天。能被4整除但不能被100整除,或者能被400整除的年份为闰年。

输入格式

一行,包含正整数,它们分别表示年、月、日。

输出格式

一个整数,为输入所代表的一天在当年的第几天。每年的元旦为一年中的第一天。

输入样例#1
2021 10 17
输出样例#1
290
#include<bits/stdc++.h>
using namespace std;
int month[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(){
	int y, m, d;
	cin>>y>>m>>d;
	if(y%400==0||y%100!=0&&y%4==0)
		month[2]=29;
	int ans=0;
	for(int i=1; i<m; i++)
		ans+=month[i];
	ans+=d;
	cout<<ans;
	return 0;
} 
【P11700】 邮票交易
提交0.21K

 

通过0.17K

 

时间限制1000MS

 

内存限制128MB
题目描述

四牌楼青云楼有一个邮票交易市场。给定某一枚邮票连续N天的价格,如果只允许交易一次,即先买入一次,后卖出一次。求最大的利益。没有合适的买入和卖出时机的话,可以不交易,大不了收益为0,也不能做亏本的买卖。低买高卖是交易的原则。

输入格式

第一行一个整数N。

第二行,N个整数,依次表示第1天~第N天的邮票价格。

输出格式

一个整数,意义如题所述。

输入样例#1

7 1 5 6 4 
输出样例#1
5
输入样例#2

5 4 3 2 2
输出样例#2
0
题目说明

1<=N<=1000000

#include<bits/stdc++.h>
using namespace std;
int main() {
	int n;
	cin>>n;
	int m=0,mn=999999,x;
	while(n--){
		cin>>x;
		mn=min(mn,x);
		m=max(m,x-mn);
	}
	cout<<m;
	return 0;
}
【P11699】 合格
提交0.25K

 

通过0.18K

 

时间限制1000MS

 

内存限制128MB
题目描述

爸爸今年继续教育一共三门课程,只要有一门课程不及格,就没有通过学习,后果就是拿不到继续教育证书,给出爸爸三门课程的成绩,判断爸爸是否通过了今年继续教育的学习。三门课都是百分制,小于60分为不及格。

输入格式

一行,包含三个在0到100之间的整数,分别是三门课程的成绩。

输出格式

若通过学习输出pass,反之则输出no。

输入样例#1
59 88 75
输出样例#1
no
输入样例#2
99 100 98
输出样例#2
pass
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a, b, c;
	cin>>a>>b>>c;
	if(a>=60&&b>=60&&c>=60){
		cout<<"pass";
	}else
	cout<<"no";
    return 0;
}

庐阳区2022年信息学竞试题工作日(day)将是一项具有挑战性和丰富内容的学术竞活动。信息学竞是一项旨在考察参者在计算机科学、算法设计和编程技能等方面的能力的竞活动。 在庐阳区2022年信息学竞试题中,参者将面临各种具有难度的问题,这些问题往往涉及到计算机科学的基本概念和算法设计。参者需要独立思考和解决这些问题,表现出对编程语言和算法的掌握能力。 试题中可能包括编写程序解决问题的任务,参者需要用合适的编程语言编写程序,并根据题目需求输出正确的结果。这个过程要求参者在理解问题、设计算法和实现代码等方面具备扎实的计算机科学基础知识和编程技巧。 庐阳区2022年信息学竞试题将在工作日进行。参者需要在规定的时间内完成试题,并提交自己的答案。竞的评判标准将根据参者题目的正确性、程序的效率和代码的质量等方面进行评估。 信息学竞的目的是激发学生对计算机科学的兴趣,提高他们的编程和问题解决能力。通过参与竞,学生们可以拓宽视野、增加知识储备,并提高自己在计算机科学领域的竞争力。 参与庐阳区2022年信息学竞试题的选手们将面临一项充满挑战的学术竞,他们需要发挥自己的聪明才智,展现自己的实力。希望这次竞能够激发更多对信息学的热爱,培养更多的优秀人才。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值