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

相关文章

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

CSS @media print 使用详解

《CSS@mediaprint使用详解》:本文主要介绍了CSS中的打印媒体查询@mediaprint包括基本语法、常见使用场景和代码示例,如隐藏非必要元素、调整字体和颜色、处理链接的URL显示、分页控制、调整边距和背景等,还提供了测试方法和关键注意事项,并分享了进阶技巧,详细内容请阅读本文,希望能对你有所帮助...

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1