本文出自: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 point
int i, t;
//num;
//freopen("test", "r", stdin);
scanf("%d", &t);
while (t--)
{
//input data
scanf("%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 data
for (i = 0; i < n; i++)
{
sum += te[i].num;
// if(sum == s)
// {
// print(i)
// update(s);
// sum = 0;
// }
// else
if(sum > s)
{
print(i, te[i].num + (s - sum));
update(s);
sum = 0;
i--;
}
else
{
print(i);
}
} //end of i
printf("\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 point
int i, t;
//num;
//freopen("test", "r", stdin);
scanf("%d", &t);
while (t--)
{
//input data
scanf("%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 data
for (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 i
printf("\n");
} // end of t;
} int main()
{
ace();
return 0;
}
作者:svitter 发表于2014-5-4 17:12:46 原文链接
阅读:200 评论:1 查看评论

[原]sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛的更多相关文章

  1. 山东省第四届ACM省赛

    排名:http://acm.sdut.edu.cn/sd2012/2013.htm 解题报告:http://www.tuicool.com/articles/FnEZJb A.Rescue The P ...

  2. [原]sdut2605 A^X mod P 山东省第四届ACM省赛(打表,快速幂模思想,哈希)

    本文出自:http://blog.csdn.net/svitter 题意: f(x) = K, x = 1 f(x) = (a*f(x-1) + b)%m , x > 1 求出( A^(f(1) ...

  3. 2013年山东省第四届ACM大学生程序设计竞赛-最后一道大水题:Contest Print Server

    点击打开链接 2226: Contest Print Server Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 53  Solved: 18 [Su ...

  4. 山东省赛J题:Contest Print Server

    Description In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source c ...

  5. 模拟 2013年山东省赛 J Contest Print Server

    题目传送门 /* 题意:每支队伍需求打印机打印n张纸,当打印纸数累计到s时,打印机崩溃,打印出当前打印的纸数,s更新为(s*x+y)%mod 累计数清空为0,重新累计 模拟简单题:关键看懂题意 注意: ...

  6. 2013年山东省第四届ACM大学生程序设计竞赛J题:Contest Print Server

    题目描述     In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source code ...

  7. sdutoj 2624 Contest Print Server

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2624 Contest Print Server ...

  8. 山东省第四届ACM大学生程序设计竞赛解题报告(部分)

    2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...

  9. 山东省第四届ACM程序设计竞赛部分题解

    A : Rescue The Princess 题意: 给你平面上的两个点A,B,求点C使得A,B,C逆时针成等边三角形. 思路: http://www.cnblogs.com/E-star/arch ...

随机推荐

  1. strace命令

    简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...

  2. 微信消息接收 验证URL有效性 C#代码示例

    官方文档只给出了PHP的示例代码 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: 参数 描述 signature 微信加密签名,signature结合了开发者填 ...

  3. 用JSON方式回调服务器

    <script language="javascript"> $(function(){ $.getJSON('http://xxx/system/ecmall_ins ...

  4. [HDU 1114] Piggy-Bank (动态规划)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 简单完全背包,不多说. #include <cstdio> #include < ...

  5. iOS中FMDB的使用【单例】

    DYDB.h Objective-C 12345678910111213141516 #import <Foundation/Foundation.h> #import <FMDB/ ...

  6. adb bugreport > d:/bug.txt

    adb bugreport > d: 快速下载anr等bug日志

  7. 安装 Python

    Python安装.配置图文详解 一. Python简介: Python在Linux.windows.Mac os等操作系统下都有相应的版本,不管在什么操作系统下,它都能够正常工作.除非使用平台相关功能 ...

  8. jmeter随笔(7)--查看请求响应,为空

    问题:查看请求响应,为空 解决办法: 1.在jmeter3.0版本上找到请求,在[Advanced]下勾选"从HTML文件获取所有内含的资源" 2.运行查看,结果如下

  9. CODESOFT中线条形状该如何绘制

    CODESOFT条码设计软件提供了一系列工具,可帮助您设计完美的标签.在CODESOFT进行标签设计时,经常会需要创建除条码,文本对象除外的一些对象,那就是形状对象.如线条.圆形.矩形等.通过下面的示 ...

  10. 转——Android应用开发性能优化完全分析

    [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...