【题解】—— [NOIP2004 普及组] 不高兴的津津

[NOIP2004 普及组] 不高兴的津津

通往洛谷的传送门

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式

输入包括 7 7 7 行数据,分别表示周一到周日的日程安排。每行包括两个小于 10 10 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式

一个数字。如果不会不高兴则输出 0 0 0,如果会则输出最不高兴的是周几(用 1 , 2 , 3 , 4 , 5 , 6 , 7 1, 2, 3, 4, 5, 6, 7 1,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

输入输出样例

输入 #1

5 3
6 2
7 2
5 3
5 4
0 4
0 6

输出 #1

3

提示

NOIP2004 普及组第 1 题

  • 2021-10-27:增加一组 hack 数据
  • 2022-06-05:又增加一组 hack 数据

1.题意解析

    先定义一个变量is_happy,储存津津是否开心。然后预处理。如果津津开心就直接输出0,否则将数组排序,输出第一天不开心的星期数。代码比较精简。

2.AC代码

#include<bits/stdc++.h>
using namespace std;
struct day
{
	int hour,num;
	day(int _num,int _hour):num(_num),hour(_hour){}
	day(){}
}a[8];//储存每一天的上课时间和星期数 
int maxn;
bool is_happy=true;//记录津津是否开心 
bool cmp(day a,day b)//排序规则 
{
	if(a.hour==b.hour)return a.num<b.num;
	return a.hour>b.hour;
}
int main()
{
    for(int i=1;i<=7;i++)//输入和预处理 
    {
    	int in_shool,out_shool; 
    	cin>>in_shool>>out_shool;
    	a[i]=day(i,in_shool+out_shool);
    	if(a[i].hour>8)is_happy=false; 
	}
	if(is_happy)//如果开心,直接输出0 
	{
		cout<<0;
		return 0;
	}
	sort(a+1,a+8,cmp);//排序 
	cout<<a[1].num;
	return 0;
}

喜欢就订阅此专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝胖子教编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值