POj 1879 Tempus et mobilius Time and motion (模拟+群)
题目特别长,大意为球的传递。
三个轨道,一个库。各自是分钟单位的轨道。5min单位的轨道。一小时单位的轨道。还有就是n容量的库。
每过一分钟,一个小球从库里面出来,库符合先进先出,进入分钟轨道。假设分钟轨道里面已经有了4个,那么这四个就滑入库,而这个球则进入5min轨道,假设5min轨道已经有了11个。这11个就滑入库。而这个球则滑入小时轨道。假设小时轨道已经有了11个,则这11个滑入库。这个球最后滑入库。在轨道中的球滑入库中,轨道里的球满足先进后出。
如此,轨道是栈。库是队列。并且模拟过程也出来了。
暴力会爆
这个题目
提升了我的调试能力。
1. 大规模数据用freopen输入输出,再用UE等软件对照diff,找到问题后再调试
2.中途设置条件输出。
#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#define maxn 1005
using namespace std;
int N,M;
int a[200];
int q[60*24*10];
int Mstack[3][20];//sec min hou
int top[3];
int vis[200];
int head,tail;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int solve()
{
int i,j,k,flag;
int cnt,ans;
for(i=1;i<=N;i++)
q[i]=a[i]=i;
head=1;tail=N+1;
memset(top,0,sizeof(top));
memset(vis,0,sizeof(vis));
for(j=tail,i=1;i<=60*24;i++)
{
if(top[0]==4){
for(k=0;k<4;k++) q[j++]=Mstack[0][--top[0]];
if(top[1]==11){
for(k=0;k<11;k++) q[j++]=Mstack[1][--top[1]];
if(top[2]==11){
for(k=0;k<11;k++) q[j++]=Mstack[2][--top[2]];
q[j++]=q[i];
}else Mstack[2][top[2]++]=q[i];
}else Mstack[1][top[1]++]=q[i];
}else Mstack[0][top[0]++]=q[i]; /*if(i>=720)
printf("%d\n",q[i]); printf("\n");*/ }
ans=1;
for(j=i;j<N+i;j++)
{
if(vis[j-i+1]==0)
{
vis[j-i+1]=1;
k=q[j];
cnt=1;
while(vis[k]==0)
{
cnt++;
vis[k]=1;
k=q[i+k-1];
}
ans=ans/gcd(ans,cnt)*cnt;
}
}
return ans;
}
int main()
{
//freopen("E:\\out.txt","w",stdout);
while(scanf("%d",&N),N)
{
printf("%d balls cycle after %d days.\n",N,solve());
}
return 0;
}
POj 1879 Tempus et mobilius Time and motion (模拟+群)的更多相关文章
- POJ 1879 Tempus et mobilius Time and motion 队列和栈
很简单的队列和栈的应用,不过读明白题意非常重要:(直接引用白书的题解)三个轨道,一个库.分别是分钟单位的轨道,5min单位的轨道,一小时单位的轨道,还有就是n容量的库.每过一分钟,一个小球从库里面出来 ...
- UVA 239 - Tempus et mobilius. Time and motion(更换周期)
UVA 239 - Tempus et mobilius. Time and motion 题目链接 题意:这题题意也是吊得飞起,看了老半天,大概是这样: 有一个放球的队列.和3个轨道(说白了就是栈) ...
- POJ 1573 Robot Motion 模拟 难度:0
#define ONLINE_JUDGE #include<cstdio> #include <cstring> #include <algorithm> usin ...
- poj 1879 Truck History
本题链接:点击打开链接 题目大意: 输入n表示卡车辆数,输入每辆卡车编号.即长度为7的字符串,每辆卡车编号均可由其他类型编号衍生过来,求由当中一辆衍生出其他全部的最小衍生次数(有一个字符不同就需衍生一 ...
- POJ 1879
栈和队列的综合应用,利用栈和队列分别模拟分,5分,时槽,以及小球队列 利用求出一天后的置换可以求出周期,进而求出最大公约数(可以利用矩阵的角度,也许可以简化,因为每次都是乘上一个相同的置换矩阵) 要注 ...
- uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟
挺水的模拟题,刚开始题目看错了,poj竟然过了...无奈.uva果断wa了 搞清题目意思后改了一下,过了uva. 题目要求模拟木块移动: 有n(0<n<25)快block,有5种操作: m ...
- poj 2993 Emag eht htiw Em Pleh(模拟)
题目:http://poj.org/problem?id=2993 题意:和2996反着 #include <iostream> #include<cstdio> #inclu ...
- POJ 2632 Crashing Robots(较为繁琐的模拟)
题目链接:http://poj.org/problem?id=2632 题目大意:题意简单,N个机器人在一个A*B的网格上运动,告诉你机器人的起始位置和对它的具体操作,输出结果: 1.Robot i ...
- POJ 3419 Difference Is Beautiful(RMQ+二分 或者 模拟)
Difference Is Beautiful Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%lld & %l ...
随机推荐
- 跟我一起写 Makefile(一)
跟我一起写 Makefile 陈皓 概述—— 什么是makefile?也许非常多Winodws的程序猿都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我认为要作一个好的和pro ...
- 【linux】开发环境说明
欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...
- Endnote X6 如何修改输出格式(output style)成为自己想要的输出格式:
Endnote X6 如何修改输出格式(output style)成为自己想要的输出格式: (1)首先尝试在endnote output style 网站中查找: http://www.endnote ...
- 用SignalR做类似QQ登录的应用
原文:用SignalR做类似QQ登录的应用 首先通过NuGet下载signalr包 在工程下新建一个类,继承Hub public class DemoHub:Hub { public class Us ...
- Java开源运行分析工具(转)
FProfiler FProfiler是一个非常快的Java profiler.它利用BCEL和log4j来记录每个方法从开始到结尾的日记.FProfiler可以用来在你的应用程序,Servle ...
- 北京出dell s2740显示器 1900 - V2EX
水木社区归档站 北京出dell s2740显示器 1900 - V2EX 北京出dell s2740显示器 1900 By kekex · 6 小时 6 分钟前 · 188 次点击 购于今年4月份 镜 ...
- HDU3709:Balanced Number(数位DP+记忆化DFS)
Problem Description A balanced number is a non-negative integer that can be balanced if a pivot is p ...
- webdynpro 调用应用程序做跳转
1.是调用指的是调用生成应用程序,非webdynpro组件程序, 如下: 1)调用页面,并传值 METHOD get_zgmtpage . DATA:lw_application_name TYPE ...
- UVA 725 – Division
Description Write a program that finds and displays all pairs of 5-digit numbers that between them ...
- 基于visual Studio2013解决面试题之0407数组差
题目