sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛

本文主要是介绍sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文出自:http://blog.csdn.net/svitter

原题:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2624


题意:为什么每次都是我做这么坑爹的题目TAT

一开始的名字我在想名字有没有空格,就像是之前

Sdut2411 Pixel density 山东省第三届ACM省赛(输入输出字符串处理)

这道题目,以至于第一篇WA我根本想不出到底是name的问题还是其他方面的问题。后来证明果然是没读懂题意,哎,坑爹啊。


给你五个数 n,s, x,  y , mod,然后输入n行数据,以Team_name +"request"+num+"pages."的形式给你。

然后就出现坑了。

这句话。the printer will break down when the printed pages counter reached s(s is generated by the function s=(s*x+y)%mod ) and then the counter will become 0. In the same time the last request will be reprint from the very begin if it isn't complete yet(The data guaranteed that every request will be completed in some time).

我的理解是,每当数量达到s,那么调用生成函数生成新的s,如果之前的没有打印完,那么重新全部打印出来。

但是事实上,是超过s的话,那么。。。。。。下面是我的AC代码,if前面的注释就是我先前的代码,问题就出在只要到达s(正好等于也算),那么就更新s。= =然后我就呵呵的WA了。(这两个的差距就在于是否多输出一个0.)

- -结合实践的话确实也能想明白- -就是你正好打完了你还更新s干什么。。。

下面是两个思路的AC代码:

//============================================================================
// Name        : 省赛字符串.cpp
// Author      : Vit
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================#include <iostream>
#include <stdio.h>
#include <string.h>using namespace std;struct Team
{char name[21];int num;
};Team te[102];int n, s, x, y, mod;void update(int &s)
{s = ((s * x) % mod + y % mod) % mod;if(s == 0)update(s);
}
void print(int i)
{printf("%d pages for %s\n", te[i].num, te[i].name);
}
void print(int i, int num)
{printf("%d pages for %s\n", num, te[i].name);
}void ace()
{//work pointint i, t;//num;//freopen("test", "r", stdin);scanf("%d", &t);while (t--){//input datascanf("%d%d%d%d%d", &n, &s, &x, &y, &mod);for (i = 0; i < n; i++){scanf("%s request %d pages", te[i].name, &te[i].num);}int sum = 0;//handle datafor (i = 0; i < n; i++){sum += te[i].num;
//			if(sum == s)
//			{
//                print(i)
//                update(s);
//                sum = 0;
//            }
//            elseif(sum > s){print(i, te[i].num + (s - sum));update(s);sum = 0;i--;}else{print(i);}} //end of iprintf("\n");} // end of t;
}int main()
{ace();return 0;
}

第二种:

//============================================================================
// Name        : 省赛字符串.cpp
// Author      : Vit
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================#include <iostream>
#include <stdio.h>
#include <string.h>using namespace std;struct Team
{char name[21];int num;
};Team te[102];int n, s, x, y, mod;void update(int &s)
{s = ((s * x) % mod + y % mod) % mod;if(s == 0)update(s);
}
void print(int i)
{printf("%d pages for %s\n", te[i].num, te[i].name);
}
void print(int i, int num)
{printf("%d pages for %s\n", num, te[i].name);
}void ace()
{//work pointint i, t;//num;//freopen("test", "r", stdin);scanf("%d", &t);while (t--){//input datascanf("%d%d%d%d%d", &n, &s, &x, &y, &mod);for (i = 0; i < n; i++){scanf("%s request %d pages", te[i].name, &te[i].num);}int sum = s;//handle datafor (i = 0; i < n; i++){if(sum >= te[i].num){print(i);sum -= te[i].num;}else if(sum < te[i].num){print(i, sum);update(s);sum = s;i--;}} //end of iprintf("\n");} // end of t;
}int main()
{ace();return 0;
}


这篇关于sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757488

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名