[原]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 ...
随机推荐
- 数据库事务 及ACID
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永 ...
- CSS学习笔记之定位
position 有4中不同类型的定位,分别为static.relative.absolute.fixed 1.static 元素框正常生成.块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创 ...
- java小程序实例 闰年
判断闰年. package com.test; import java.util.Scanner; import org.junit.Test; public class TestRunNian { ...
- JqGrid单选
You have to do some more stuff: 1. Set multiboxonly to true and multiselect to true 2. Define the ev ...
- Hibernate 只获取外键id,不获取内容
Hibernate,jpa注解映射中 A多对一B A的表中有B的外键. 如果想只获取A表中的B的外键而不想发送查询B的sql语句. 那么: @ManyToOne(fetch=FetchType.LAZ ...
- 编码中常用的SQL语法
蓝色标注的都是比较常见的SQL ====================== 开发中常见的SQL: left join , right join 防止丢弃数据 inner join CASE WHNE ...
- JS浮点数运算BUG破法
JS里,0.3*3 = 0.8999999999999999 破法1:((0.3*10)*3)/10 破法2:(0.3*3).toFixed(2)//保留两位小数 原因:js浮点数用的是IEEE754 ...
- SQL必知必会笔记(1)
去SQL AXDB 中Query数据 Open the SQL > Connect > Select AXDB > new Query select REFID, ITEMID, R ...
- Unity AssetBundles and Resources指引 (三) AssetBundle基础
本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...
- Android开发-API指南-Intent和Intent过滤器
Intents and Intent Filters 英文原文:http://developer.android.com/guide/components/intents-filters.html 采 ...