When a student is too tired, he can't help sleeping in class, even if his favorite teacher is right here in front of him. Imagine you have a class of extraordinarily tired students, how long do you have to wait, before all the students are listening…
算法完全转载...原博客(https://blog.csdn.net/u014800748/article/details/38407087) 题目简单叙述 题目就是一堆学生他们有清醒的时候和昏迷的时候,并且这些都是成为了一个周期,他们还必须当其他昏迷的人大于等于清醒的人的时候才会睡觉要不就再来一个清醒的周期,最初会输入此时存在于周期的哪一个位置. 做法(完全按照原博客) 首先我们寻找一个较大的数我原本寻找的是1e6,最后又发现5e3也行,罚时瞬间从几十ms降到了0.这个数是用来计算总共要模拟的…
思路: ①用结构体stu,属性有清醒时间,睡眠时间,开始处于的时间,状态(醒着还是睡着), 还有计数器. ②二维数组存表格. ③在确定接下来要进入的状态之后,就一次把表格里持续状态的数据都修改掉,比如: 第一个学生的数据是2 3 1,那么开始的时候他要进入2t的清醒期,此时就把data[0][0]和data[0][1]修改为0(代表清醒), 再比如如果确定了接下来进入睡眠,长度为5,就把未来5个数据都修改掉. ④判断第i个时间段是否能进入睡眠要查第i-1的时间段的睡眠和清醒的人数.⑤设定2000…
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa12108 - Extraordinarily Tired Students #include<iostream> struct how_cute_my_sleepy_boys_are { int a,//awaken period : a>=1; b,//sleeping period : b<=5; s,//state : 0醒着,1睡觉; t;//…
不知道叫什么,好像是模拟的方法,看懂了题就好办(英语硬伤←_←) 题意大概是当一个同学想睡觉的时候判断周围睡觉的人数,不睡的人数大于等于睡觉的话就死撑着,否则就睡觉. 一开始没有什么思路,就直接用了个结构体,主要是把每个人醒着与睡着合在一个字符串中,中途出了点事过几天再来把上次的错误改了后,ac是ac了,但是2141的代码量还是吓到了O__O "- 虽说不推荐看,但还是留在这当做纪念吧http://paste.ubuntu.com/23809285/ 后来觉得没必要用结构体,就直接用数组,写完后…
[链接] 我是链接,点我呀:) [题意] [题解] 一个单位时间.一个单位时间地模拟就好. 然后对于每个人. 记录它所处的周期下标idx 每个单位时间都会让每个人的idx++ 注意从醒着到睡着的分界线的处理就好. 可以多循环几次..超过上限认为无解 (其他题解也提供了一种方法,就是如果状态和初始的情况相同的话.就无解了即形成了一个环. (可能如果无解一定会形成环? [代码] #include <bits/stdc++.h> #define rep1(i,a,b) for (int i = a;…
"One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome ournew insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a horizontal pole L cm long. Each ant is facing e…
https://vjudge.net/problem/UVA-12108 题意:给出n个学生的“清醒—睡眠”周期和初始时间点,每个学生在睡眠时需要判断全班睡觉人数是否严格大于清醒人数,否则在坚持一个清醒周期后再次判断.求出多长时间时全班都是清醒状态. 思路:水题吧.一次次的枚举下去,循环终止的条件就是和初始状态相同. #include<iostream> using namespace std; struct Node { int A; int B; int C; }stu[]; ]; int…
  Updating a Dictionary  In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, and values are non-negative integers. Given an old dictionary and a new dictionary, find out what were changed. Each dictionar…
  Robot Instructions  You have a robot standing on the origin of x axis. The robot will be given some instructions. Your task is to predict its position after executing all the instructions. LEFT: move one unit left (decrease p by 1, where p is the p…
  MySQL/MariaDB数据库的事务和隔离级别 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.事务概述 1>.事务Transactions 一组原子性的SQL语句,或一个独立工作单元. 2>.事务日志 由于直接对源表进行修改当服务器突然掉电可能会导致源表数据被损坏,因此可以将修改先记录事务信息,后根据事务日志信息再对源表实现undo,redo等故障恢复功能 redo: 将事务日志中已经commit的事务进行复现操作,即对源表进行修改. undo: 将事务日志中未…
挺水的模拟题,刚开始题目看错了,poj竟然过了...无奈.uva果断wa了 搞清题目意思后改了一下,过了uva. 题目要求模拟木块移动: 有n(0<n<25)快block,有5种操作: move a onto b  在将a搬到b上之前,先把a和b上的积木放回原來的位置 move a over b在将a搬到b所在的那堆积木上前,先把a上的积木放回原來的位罝 pile a onto b 将包括a本身和上方的积木一起放到b上,在放之前b上方的积木放回原来的位置 pile a over b 将包括a本…
双向约瑟夫环. 数据规模只有20,模拟掉了.(其实公式我还是不太会推,有空得看看) 值得注意的是两个方向找值不是找到一个去掉一个,而是找到后同时去掉. 还有输出也很坑爹! 在这里不得不抱怨下Uva的oj,少了个s,少了个空行什么的都不会显示pe,就给个wa,让人还以为算法有问题.原本以为Uva没有pe,然后据说这边的输出空行如果不对的话就会显示pe... 代码: #include <cstdio> #include <cstring> const int maxn = 22; in…
题意:蚂蚁在木棍上爬,速度1cm/s,给出木棍长度和每只蚂蚁的位置,问蚂蚁全部下木棍的最长时间和最短时间. 模拟一下,发现其实灰常水的贪心... 不能直接求最大和最小的= =.只要求出每只蚂蚁都走长路下木棍时的最大值,和走短路时的就行了. 代码: /* * Author: illuz <iilluzen@gmail.com> * Blog: http://blog.csdn.net/hcbbt * File: uva10714.cpp * Lauguage: C/C++ * Create Da…
UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20或30 2.头一张+尾两张和为10或20或30 3.尾三张和为10或20或30 就把这三张牌拿走,放到总牌堆底(这步要不断运行直到不再满足条件或牌堆没了) 假设有一个牌堆由于这个操作被取完了,那么以后将不在这个位置发牌. 假设最后7个牌堆都能够消掉,那么赢,总牌堆用完,那么输,否则平(即不断循环)…
题意:一题街道上很多酒店,交易葡萄酒,正数为卖出葡萄酒,负数为需要葡萄酒,总需求量和总售出量是相等的,从一家店到另外一家店需要路费(路费=距离×运算量),假设每家店线性排列且相邻两店之间距离都是1,求最小路费. 在纸上模拟了一下,你会发现一家店如果卖酒,它的最终流向就是向两边运送:如果买酒,那它就在那边等别家店送酒过来.(我在废话...) 然后第一家店肯定是向右边运酒了,最小的运费当然是卖给右边尽量近的店了,然后第一家店的供求就为0,不需要再考虑了,这样就变成后面几家去买卖的子问题了. 这样是可…
题意:给出几个圆的半径,贴着底下排放在一个长方形里面,求出如何摆放能使长方形底下长度最短. 由于球的个数不会超过8, 所以用全排列一个一个计算底下的长度,然后记录最短就行了. 全排列用next_permutation函数,计算长度时坐标模拟着摆放就行了. 摆放时折腾了不久,一开始一个一个把圆放到最左端,然后和前面摆好的圆比较检查是否会出现两个圆重叠,是的话就把当前圆向右移动到相切的位置.然后判断宽度. 结果发现过不了几个例子,检查了好久,终于发现问题出在初始位置上,如果出现一个特别小的圆放到最左…
题目的隐含条件将这道题指向了最小生成树: 利用类似prim的方法,枚举所有子图并判断是否包含询问点,如果包含那么可以更新答案: 边统计边更新,且由于更新一定是向更多的点状态下更新,所以一定可以统计到答案,不至于到全部是inf的情况 再更新答案时记录ps,pe两个变量分别表示此状态最后一次更新前的状态,边,会在寻找路径时用到 最后统计到的答案ans,走到初始的t,路径中打下vis标记后再从头dfs沿着vis打过的走下去,并在路径中遇到叶子节点时顺便将走过的路径放入vector 最后利用vector…
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2151 题意 麻将,有13张牌,问再加哪一张牌可以凑成一对,若干个三张和若干个三联. 思路 如刘书思路,明显,这是一道模拟题. 感想 1. 三倍ice cream! 代码 #include <algorithm> #include <cassert> #incl…
The only printer in the computer science students' union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs in the printer queue and you may have to wait for hours to get a single page of output. Because some jobs are mor…
from CSDN: https://blog.csdn.net/su_cicada/article/details/87898579 例题6-1 并行程序模拟( Concurrency Simulator, ACM/ICPC World Finals 1991, UVa210) 你的任务是模拟n个程序( 按输入顺序编号为1- n) 的并行执行. 每个程序包含不超过 25条语句, 格式一共有5种: var = constant( 赋值) : print var( 打印) : lock: unlo…
题目链接: https://cn.vjudge.net/problem/UVA-213 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=149 题目大意: 给一种编码方式,0,00,01,10,000,...,依次对应一个字符: 一开始需要读入3位长的2进制数来表示接下来的解码长度L,接下来读L位,解码,直到读入L个1停止. 接下来继续读解…
UVA 1156 - Pixel Shuffle 题目链接 题意:依据题目中的变换方式,给定一串变换方式,问须要运行几次才干回复原图像 思路:这题恶心的一比,先模拟求出一次变换后的相应的矩阵,然后对该矩阵求出全部循环长度,全部循环长度的公倍数就是答案 代码: #include <stdio.h> #include <string.h> const int N = 1100; int t, n, g[N][N], vis[N][N], save[N][N]; char str[N],…
Circle of Students time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There are nn students standing in a circle in some order. The index of the ii-th student is pipi. It is guaranteed that a…
题目大意:给出i,输出第i个镜像数,不能有前导0. 题解:从外层开始模拟 #include <stdio.h> int p(int x) { int sum, i; ;i<=x;i++) sum *= ; return sum; } int main() { ], c; while(~scanf("%d", &n)) { ) break; i=; *p((i-)/)) { n -= *p((i-)/); i++; } c = (i+)/; t=; while(…
Division 紫书入门级别的暴力,可我还是写了好长时间 = = [题目链接]uva 725 [题目类型]化简暴力 &题解: 首先要看懂题意,他的意思也就是0~9都只出现一遍,在这2个5位数中. 接着,你要知道:枚举一个5位数就够了,不用2个5位数都枚举,因为你可以通过n知道第2个5位数. 最后set维护出现的次数,ok判断是否可行,pri输出. [时间复杂度]O(1e5) &代码: #include <bits/stdc++.h> using namespace std;…
用一个队列模拟,还有一个数组cnt记录9个优先级的任务的数量,每次找到当前最大优先级的任务然后出队,并及时更新cnt数组. #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <queue> using namespace std; struct Task { int pos, pri; Task(, ):pos(pos),…
题意: 模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是Home键,如果是']'则认作End键. 问最终屏幕上显示的结果是什么字符串. 分析: 如果在数组用大量的移动字符必然很耗时.所以next数组表示显示屏中s[i]右边的字符编号,变量cur模拟光标,即当前光标位于s[cur]的右边. 变量last记录显示屏最后一个字符的下标. 我理解的连接的情况应该是这样子的: //#define LOCAL #include <cstdio> #include <cstring&…
题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间. 这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数组开到maxn*maxn.另外当所要打印的文件优先级不是最高的时候也需要排列到后面. 0.016s. 代码: #include <cstdio> const int maxn = 101; int t, n, m, time; int q[maxn*maxn]; int print() { int…
模拟题 题目描述挺长的.... #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #include <set> #include <queue> #include <stack> #include <vector> #include <sstream> #include <string> #inclu…