1050 Moving Tables
題目大意:
題意:在一個長走廊里搬桌子吴超,走廊的兩側都是房間,把桌子從一個房間搬到另外一個房間杯巨,走廊的寬度只能允許一個桌子通過每聪,每次搬桌子需要10分鐘(每一次允許再不交叉的走廊中同時搬桌子),問最少多長時間搬完疲眷。
思路:
不需要研究每次的前后房間號碼禾蚕,而可以簡單地每次都根據(jù)房間號碼在相應的數(shù)組內(nèi)做出累加,得到的最大數(shù)目即為最長的時間狂丝。
如圖:有四個桌子要搬:
重疊累加后的效果如圖:
最大的參數(shù)是3换淆,那么也就是說最大的時間是3*10。
依次類推几颜,只要得到1~200單位的每一個使用次數(shù)便可:
#include <stdio.h>
#include <string.h>
void main()
{
int A[201];
int i,j,k,n,m;
int a,b;
scanf("%d",&n);
while (n--)
{
memset(A,0,sizeof (A));
scanf("%d",&m);
while (m--)
{
scanf("%d%d",&a,&b);
if (a>b)
{
k=a;a=b;b=k;
}
if (a%2==1)
a=(a+1)/2;
else
a=a/2;
if (b%2==1)
b=(b+1)/2;
else
b=b/2;
for (i=a;i<=b;i++)
A[i]++;
}
int max=A[0];
for (i=1;i<200;i++)
{
if(A[i]>max)
max=A[i];
}
printf ("%d\n",max*10);
}
}
2037
今年暑假不AC
已知每個節(jié)目的開始時間和結束時間倍试,求解每天能看到的最多電視節(jié)目個數(shù):求最多個數(shù),那么就是取盡量多節(jié)目時間短的蛋哭,且在空閑的時間范圍內(nèi)選擇县习。而方法則在于在已知當前的時間的情況下,找出最短結束時間的節(jié)目具壮,該節(jié)目的結束時間可以更新為當前時間准颓,繼續(xù)尋找。
#include <stdio.h>
#include <string.h>
void main()
{
int A[201];
int i,j,k,n,m;
int a,b;
scanf("%d",&n);
while (n--)
{
memset(A,0,sizeof (A));
scanf("%d",&m);
while (m--)
{
scanf("%d%d",&a,&b);
if (a>b)
{
k=a;a=b;b=k;
}
if (a%2==1)
a=(a+1)/2;
else
a=a/2;
if (b%2==1)
b=(b+1)/2;
else
b=b/2;
for (i=a;i<=b;i++)
A[i]++;
}
int max=A[0];
for (i=1;i<200;i++)
{
if(A[i]>max)
max=A[i];
}
printf ("%d\n",max*10);
}
}