poj 杂题 - 1083 Moving Tables

这道题最主要的是看懂题目即可。我们需要算出搬动桌子的最短时间,根据这个图可以知道不同房间占用同一走廊。

这道题里1-4,2 -3显然占用同一走廊,但是2-3 和 4-5也占用了房间4和房间3的那个走廊,所以注意这个数据的最短时间是20,不是10。搞清楚这个就好做了,我们可以将房间偶数/2,奇数/2+1,这样2-3变成了1-2,4-5变成了2-3,自然占用了走廊。

#include<stdio.h>
#include<string.h>
#define max(x,y)(x>y?x:y)
#define min(x,y)(x<y?x:y)
#define MAX 201
int out[MAX];

int process(int x){
	if(x%2) return x/2+1;
	else return x/2;
}
int main(){
	int t,i,j,n,from,to,res;
	scanf("%d",&t);
	while(t--){
		memset(out,0,sizeof(out));
		scanf("%d",&n);
		for(i=0;i<n;i++){
			scanf("%d %d",&from,&to);
			for(j=min(process(from),process(to));j<=max(process(from),process(to));j++)
				out[j]++;
		}
		res =0;
		for(j=0;j<=MAX;j++) res = max(res,out[j]);
		printf("%d\n",res*10);
	}
	return 0;
}
时间: 2024-12-15 12:02:07

poj 杂题 - 1083 Moving Tables的相关文章

poj 杂题 - 2081 Recaman&#39;s Sequence

这道题目一开始就能知道考点在如何缩短查找时间.所以加快查找是我们的重点.但是在大数据面前,查找算法都不够快,所以我们用简单的hash思想来做. 我们开一个数组a,当出现了一个数b时,把该数作为下标调整值,即a[b] = -1,下一次出现该值的时候直接去找这个值作为下标的a值是否为-1即可. #include<stdio.h> #include<string.h> #define MAX 5000010 int p[MAX]={0}; int s[MAX]={0}; int main

poj 杂题 - 1959 Darts

这一题放在杂题里,是因为我没有用DP,而是使用的枚举,当然是受到了discuss里面的启发. 因为我们只能有三次机会,每一次只可以是固定的63个数,所以枚举感觉更加直观,但是不知道是不是没有DP快. #include<stdio.h> #include<string.h> int n; int Darts[63]; int main(){ int t,c=1,i,j,k,res; scanf("%d",&t); for(i = 0 ;i<=20;i

POJ 1083 Moving Tables 思路 难度:0

http://poj.org/problem?id=1083 这道题题意是有若干段线段,每次要求线段不重叠地取,问最少取多少次. 因为这些线段都是必须取的,所以需要让空隙最小 思路: 循环直到线段全部取完,对于某个刚取得线段ij,下一个线段km取起点k尽量靠近j且满足k>j的.记录循环次数cnt,答案是cnt*10 注意: 房间是相对的,也就是说对于奇数房间号,利用的走廊相当于对应的偶数房间号开始的那一段路程, 一段路程的开头不能是另外一段路程的结尾. #include <cstdio>

POJ 1083 Moving Tables

题意:一个建筑物里有400个房间,房间都在一层里,在一个走廊的两侧,如图,现在要搬n张桌子,告诉你每张桌子是从哪个屋搬到哪个屋,搬桌子的线路之间不可以有重叠,问最少搬几次. 解法:贪心.一开始觉得只要排个序,然后按顺序一次一次的分配就可以了……但是wa了……百度之后知道只要看哪块地的使用次数最多就是答案……于是A了之后出随机数据对拍,发现确实一开始的贪心是错的……嘤嘤嘤 代码: #include<stdio.h> #include<iostream> #include<alg

poj 杂题 - 1013 Counterfeit Dollar

判断硬币题.这道题目没咋知道怎么做,看了其他人的discuss才有了思路. 一,EVEN时,两边都是真币 二,非EVEN时,没上天平的都是真币 三,曾经被认为可能偏重,又出现在偏轻的一方的是真币. 我们可以用一个数组zeros存储一定是真币,即出现在even情况内的那些:另一个数组sus存储对可能是假币的怀疑情况,当出现在up时,左边的硬币sus--,右边的++.down时反过来,这样我们通过判断正负就能判断这个假币是light还是heavy,而被认为可能偏重,又出现在偏轻的一方sus自然会先+

poj 杂题 - 2231 Moo Volume

一开始以为是long long输入,后来发现用int就行,,,反正也是一个挺简单的题目,直接贴代码了. #include<stdio.h> #include<math.h> int cows[10005]={0}; int main(){ int n,i,j; long long res = 0,temp; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&cows[i]);

poj 1579 Moving Tables(水)

Description The Recaman's sequence is defined by a0 = 0 ; for m > 0, a m = a m−1 − m if the rsulting a m is positive and not already in the sequence, otherwise a m = am−1 + m. The first few numbers in the Recaman's Sequence is 0, 1, 3, 6, 2, 7, 13, 2

POJ 刷题指南

OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094) 初期: 一.基本算法: 枚举. (POJ 1753,POJ 2965) 贪心(POJ 1328,POJ 2109,POJ 2586) 递归和分治法. 递推. 构造法.(POJ 3295) 模拟法.(POJ 1068,POJ 2632,POJ 1573,POJ 2993,POJ 2996) 二

HDU1050:Moving Tables

Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 19156    Accepted Submission(s): 6532 Problem Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a