8月22日小练

网站:8月21日小练

A   Find the Shortest Common Superstring     HDU 1841

B   免费馅饼     HDU 1176    DP

思路:从时间后往前推,dp[i][j]表示在i,j地能接到的最多的馅饼数。

代码:      46ms

 1 #include <stdio.h>

 2 #include <iostream>

 3 #include <string.h>

 4 using namespace std;

 5 int dp[100005][12];

 6 int max(int a,int b,int c)

 7 {

 8     return a>b?(a>c?a:c):(b>c?b:c);

 9 }

10 int main()

11 {

12     int n,i,x,t,maxx,j;

13     while(~scanf("%d",&n)&&n)

14     {

15         memset(dp,0,sizeof(dp));

16         maxx=-1;

17         for(i=1;i<=n;i++)

18         {

19             scanf("%d %d",&x,&t);

20             maxx=max(maxx,t);

21             dp[t][x]++;//在t秒x地的馅饼+1

22         }

23         for(i=maxx-1;i>=0;i--)   //从后往前推

24         {

25             dp[i][0]+=max(dp[i+1][0],dp[i+1][1]);

26             for(j=1;j<=10;j++)

27                 dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1],dp[i+1][j-1]);

28         }

29         printf("%d\n",dp[0][5]);//dp[0][5]是起点状态

30     }

31     return 0;

32 }

C     Lowest Bit    HDU 1196    水题,不解释

代码: 0ms

 1 #include <stdio.h>

 2 #include <iostream>

 3 using namespace std;

 4 int main()

 5 {

 6     int n;

 7     while(~scanf("%d",&n)&&n)

 8     {

 9         printf("%d\n",n&(-n));

10     }

11     return 0;

12 }

D  迷宫城堡    HDU 1269

E   Optimal Parking   HDU 1673   水题,不解释

代码:   0ms

 1 #include <stdio.h>

 2 #include <iostream>

 3 #include <string.h>

 4 #include <algorithm>

 5 using namespace std;

 6 int a[22];

 7 int main()

 8 {

 9     int T;

10     scanf("%d",&T);

11     while(T--)

12     {

13         int n,i,sum;

14         scanf("%d",&n);

15         for(i=1;i<=n;i++)

16             scanf("%d",&a[i]);

17         sort(a+1,a+1+n);

18         sum=(a[n]-a[1])*2;

19         printf("%d\n",sum);

20     }

21     return 0;

22 }
View Code

 

 

 

 

你可能感兴趣的:(8月22日小练)