4-8 UVA 12108 特别困的学生 Extraordinarily Tired Students

一个简单的题,虽然简单,但自己也一直卡在变量的赋值的问题上本来赋给结构体内部,却赋给了main函数里的变量。

一个小小小小的教训,下次注意,!

大体思路:

从题目阐述来看题目条件(1 ≤ a,b ≤ 5),而学生的数量也是很小(1 ≤ n ≤ 10),总之,数据量非常少,来判断是不是找到

都清醒的情况可以开大循环的终止条件,因为数据量很小,1000 + 5足够,做完之后,我搜索了一下学长写的,好像

500就差不多可以AC啦!所以不要怕会RE!!这个题非常适合建立一个学生类型的结构体数组(15个就非常保险了),

存取醒的时间,睡的时间,和周期时间(醒和睡 的总长度)和c(当前的时刻,可以判断下一刻是不是睡觉)。写main

函数依旧是先写整体框架,在写其他函数(自顶向下,逐步求精),就是用到一个获取醒的时间函数,函数里就是先判

断睡觉的个数,在根据c和a,b的关系 来 判断下一刻是否睡觉。最后返回醒的数量。给main函数里的for循环来判断是

不是停止循环:

#include<stdio.h>
#include<string.h>
#define N 1000 + 5
#define MAXN 10 + 5
struct student
{
    int a,b,c,len;
    int is_sleep;
}stu[MAXN];
int get_awake(int m)
{
    int i,j,num = 0;
    for (i = 1; i <= m; i++)
        if (!stu[i].is_sleep)num++;
    if (2 * num < m)//sleep!
    {
        for (i = 1; i <= m; i++)
        {
            stu[i].c = (stu[i].c + 1) % stu[i].len;
            if (stu[i].c == 0)stu[i].c = stu[i].len;
            if (stu[i].c > stu[i].a)stu[i].is_sleep = 1;
            else stu[i].is_sleep = 0;
        }
    }else
    {
        for (i = 1; i <= m; i++)
        {
            stu[i].c = (stu[i].c + 1) % stu[i].len;
            if (stu[i].c == 0)stu[i].c = stu[i].len;
            if (stu[i].c > stu[i].a)stu[i].is_sleep = 1;
            else stu[i].is_sleep = 0;
            if (stu[i].c == stu[i].a + 1)
            {
                stu[i].is_sleep = 0;
                stu[i].c = 1;
            }
        }
    }
    return num;
}
int main()
{
    int m,cont = 0,awake;
    while(scanf("%d",&m) == 1 && m)
    {
        int i,a,b,c;
        for(i = 1; i <= m; i++)
        {
            scanf("%d%d%d",&stu[i].a,&stu[i].b,&stu[i].c);
            stu[i].len = stu[i].a + stu[i].b;
            if (stu[i].c > stu[i].a)stu[i].is_sleep = 1;
            else stu[i].is_sleep = 0;
        }
        for (i = 1; i < N; i++)
        {
            awake = get_awake(m);
            if (m - awake == 0){printf("Case %d: %d\n",++cont,i);break;}
        }
        if (i == N)printf("Case %d: -1\n",++cont);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要安装 MySQL 和 SQLAlchemy。如果你已经安装了 MySQL 和 SQLAlchemy,你需要导入这些模块: ```python from sqlalchemy import create_engine, Column, Integer, String, DateTime from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker ``` 然后,你需要连接到 MySQL 数据库。你需要知道数据库的用户名、密码、主机和数据库名。 ```python engine = create_engine('mysql+pymysql://用户名:密码@主机/数据库名') ``` 接下来,你需要创建数据库模型。首先,你需要创建一个 `Base` 类,然后使用它来声明你的模型: ```python Base = declarative_base() class MyModel(Base): __tablename__ = 'my_table' id = Column(Integer, primary_key=True) hash = Column(String) name = Column(String) code = Column(String) description = Column(String) category = Column(String) launcher_id = Column(String) eve_coin_id = Column(String) tail_reveal = Column(String) nft_uri = Column(String) ``` 现在,你可以创建数据表,并将你的 JSON 数据上传到 MySQL 数据库: ```python Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() # 读取 JSON 文件 import json with open('data.json', 'r') as f: data = json.load(f) # 将 JSON 数据上传到 MySQL 数据库 for item in data: record = MyModel(**item) session.add(record) session.commit() ``` 最后,你可以定义一个类来实现批量增删改查和单条数据增删改查: ```python

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值