[原]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 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;
}
[原]sdut2624 Contest Print Server (大水+大坑)山东省第四届ACM省赛的更多相关文章
- 山东省第四届ACM省赛
排名:http://acm.sdut.edu.cn/sd2012/2013.htm 解题报告:http://www.tuicool.com/articles/FnEZJb A.Rescue The P ...
- [原]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) ...
- 2013年山东省第四届ACM大学生程序设计竞赛-最后一道大水题:Contest Print Server
点击打开链接 2226: Contest Print Server Time Limit: 1 Sec Memory Limit: 128 MB Submit: 53 Solved: 18 [Su ...
- 山东省赛J题:Contest Print Server
Description In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source c ...
- 模拟 2013年山东省赛 J Contest Print Server
题目传送门 /* 题意:每支队伍需求打印机打印n张纸,当打印纸数累计到s时,打印机崩溃,打印出当前打印的纸数,s更新为(s*x+y)%mod 累计数清空为0,重新累计 模拟简单题:关键看懂题意 注意: ...
- 2013年山东省第四届ACM大学生程序设计竞赛J题:Contest Print Server
题目描述 In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source code ...
- sdutoj 2624 Contest Print Server
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2624 Contest Print Server ...
- 山东省第四届ACM大学生程序设计竞赛解题报告(部分)
2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...
- 山东省第四届ACM程序设计竞赛部分题解
A : Rescue The Princess 题意: 给你平面上的两个点A,B,求点C使得A,B,C逆时针成等边三角形. 思路: http://www.cnblogs.com/E-star/arch ...
随机推荐
- Android之Handler
1.Handler默认情况下与主线程处于同一线程 public class MainActivity extends Activity { private Button startButton = n ...
- 通过JSTL+EL实现循环迭代
使用前需要导入包 jstl.jar 和 standard.jar <%@ page language="java" import="java.util.*,com. ...
- ios模拟器未能安装此应用程序
网上介绍了很多方法,觉得有些不太靠谱.这里只解释我试验过的最简单最粗暴的方法: 删除模拟器上旧的APP 以外,也可以做 CLEAN (cmd+shift+K) 把旧的build 删掉.
- ios下,对于position:fixed支持不完美的额解决方案
ios下,当有文本框时,会调用输入法,而这个时候,定位(fixed)在底部的东西,就会被弹上例,离底部有段距离,这算是个坑了. 我的解决方案是这样的. 除了定位在底部的元素外,用一个大div把其他元素 ...
- 字典查找、linq、foreach、yield等几种查找性能对比
先上代码,以1千万记录的内存查找测试: List<Student> stuList = new List<Student>(); Dictionary<int, Stud ...
- [kuangbin带你飞]专题七 线段树
ID Origin Title 228 / 440 Problem A HDU 1166 敌兵布阵 207 / 438 Problem B HDU 1754 I Hate It ...
- [SQL]把同一字段里的多行数据用一行显示
declare @t table(id int,num int) insert @t , union all , union all , --select * from @t ----查询 decla ...
- [转]iOS技巧之获取本机通讯录中的内容,解析通讯录源代码
一.在工程中添加AddressBook.framework和AddressBookUI.framework 二.获取通讯录 1.在infterface中定义数组并在init方法中初始化 ? 1 2 3 ...
- Android开发-API指南-<compatible-screens>
<compatible-screens> 英文原文:http://developer.android.com/guide/topics/manifest/compatible-screen ...
- The str method
__str__ is a special method name, like __init__, that is supposed to return a string representation ...