1. 程式人生 > >2016SDAU程式設計練習三1007

2016SDAU程式設計練習三1007

Problem G

Problem Description都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10米範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接。由於gameboy平時老呆在房間裡玩遊戲,雖然在遊戲中是個身手敏捷的高手,但在現實中運動神經特別遲鈍,每秒種只有在移動不超過一米的範圍內接住墜落的餡餅。現在給這條小徑如圖示上座標:<br><center><img src=../../../data/images/1176_1.jpg></center><br>為了使問題簡化,假設在接下來的一段時間裡,餡餅都掉落在0-10這11個位置。開始時gameboy站在5這個位置,因此在第一秒,他只能接到4,5,6這三個位置中其中一個位置上的餡餅。問gameboy最多可能接到多少個餡餅?(假設他的揹包可以容納無窮多個餡餅)<br>
 


Input輸入資料有多組。每組資料的第一行為以正整數n(0<n<100000),表示有n個餡餅掉在這條小徑上。在結下來的n行中,每行有兩個整數x,T(0<T<100000),表示在第T秒有一個餡餅掉在x點上。同一秒鐘在同一點上可能掉下多個餡餅。n=0時輸入結束。<br>
 


Output每一組輸入資料對應一行輸出。輸出一個整數m,表示gameboy最多可能接到m個餡餅。<br>提示:本題的輸入資料量比較大,建議用scanf讀入,用cin可能會超時。<br><br>
 


Sample Input6
5 1
4 1
6 1
7 2
7 2
8 3
0
 


Sample Output4

思路:類似數塔,每個數下面取三個數最大,上網找了比較好的解釋

第0秒                       5                               (這裡的數字指的是第N秒可能到達的位置座標)

第1秒                     4 5 6

第2秒                   3 4 5 6 7

第3秒                 2 3 4 5 6 7 8

第4秒               1 2 3 4 5 6 7 8 9

第5秒             0 1 2 3 4 5 6 7 8 9 10

第6秒             0 1 2 3 4 5 6 7 8 9 10

第7秒 .................  

可以發現從第5秒開始之後就都是 0 1 2 3 4 5 6 7 8 9 10 ,所以第5秒之前的情況單獨寫一下,然後第5秒之後,注意一下邊界 0和10這兩個位置,特判一下

感想:網上其實有很多思路挺好的

AC程式碼:

#include <iostream>
#include <stdio.h>
#include<string.h>
using namespace std;
int a[12][100002];
int max(int a,int b,int c=-1)
{
    int t;
    if(a>b)
        t=a;
    else
        t=b;
    if(t<c)
        t=c;
    return t;

}
int main()
{
    int j,i,k,n,m,t,p;


    while (scanf("%d",&n))
    {
        if (n==0) break;
        memset(a,0,sizeof(a));
        int maxx=0;
        for (i=0;i<n;i++)
        {
            scanf("%d%d",&p,&t);
            a[p][t]++;
            if(t>maxx)
                maxx=t;
        }
        for(i=maxx-1;i>=0;i--)
        {
            a[0][i]+=max(a[0][i+1],a[1][i+1]);
            a[10][i]+=max(a[9][i+1],a[10][i+1]);
            for(j=1;j<10;j++)
            {
                a[j][i]+=max(a[j-1][i+1],a[j][i+1],a[j+1][i+1]);
            }
        }
        cout<<a[5][0]<<endl;

    }

    return 0;
}

相關推薦

2016SDAU程式設計練習1007

Problem G Problem Description都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10米範圍內。餡餅如果掉在了地上當然就不能吃了,所以

2016SDAU程式設計練習1010

Problem J  Problem Description 有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少種走法?   Input 輸入資料首先包含一個整數N,表示測試例項的個數,然後是N行資料,每行包含一個整數M(1<=M&l

2016SDAU程式設計練習1012

Problem L  Problem Description 在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.<br>例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:<br><img src=

2016SDAU程式設計練習1001

Problem A Problem Description   Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For

2016SDAU程式設計練習1014

Problem N  Problem Description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。<br><

2016SDAU程式設計練習1017

Problem Q  Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to col

2016SDAU程式設計練習二1002

Strange fuction  Problem Description Now, here is a fuction:<br>&nbsp;&nbsp;F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 &lt

2016SDAU程式設計練習二1018

Tempter of the Bone  Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked

2016SDAU程式設計練習二1024

Sequence one  Problem Description Search is important in the acm algorithm. When you want to solve a problem by using the search method,

2016SDAU程式設計練習二1015

Knight Moves  Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the short

2016SDAU課程練習1001

題目題意: 最長上升子序列問題。 Sample Input 2 5 6 -1 5 4 -7 7 0 6 -1 1 -6 7 -5 Sample Output Case 1: 14 1 4 Case 2: 7 1 6 解題思路: 以每個數作為最後一個數考慮,

2016SDAU程式設計練習二1008

猜數字  A有1數m,B來猜.B每猜一次,A就說太大t太小或;對了問B猜n次可以猜到的最大數。   Input 第1行是整數T,表示有T組資料,下面有T行 <br>每行一個整數n (1 ≤ n ≤ 30) <br>   Output 猜n次可以猜到

2016SDAU程式設計練習二1009

連連看  Problem Description “連連看”相信很多人都玩過。沒玩過也沒關係,下面我給大家介紹一下游戲規則:在一個棋盤中,放了很多的棋子。如果某兩個相同的棋子,可以通過一條線連起來(這條線不能經過其它棋子),而且線的轉折次數不超過兩次,那麼這兩個棋子就可以

2016SDAU程式設計練習二1025

Sequence two  Problem Description Search is important in the acm algorithm. When you want to solve a problem by using the search method,

2016SDAU程式設計練習二1013

A strange lift  Problem Description There is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0

C Primer Plus(第6版)第程式設計練習答案

       這裡是第三章程式設計練習的答案,依舊是適合萌新正規中距的程式設計風格,不過對第一問稍微進行了進一步的討論。        萬丈高樓平地起,雖然題目中有很多程式(實際上絕大部分)都能夠辦到腦補,不過推薦新手

C Primer Plus 6 第程式設計練習

一、知識點複習 程式離不開資料,C語言提供兩大資料型別:整數型別和浮點數型別。 最初K&R給出的C語言關鍵字有int、long、short、unsigned、char、float、double,C90標準增加了signed和void,之後C99標準又添加了_Bool

每日練習:《Python程式設計快速上手+讓繁瑣工作自動化》第五章實踐專案

假設征服一條龍的戰利品表示為這樣的字串列表:dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']寫一個名為 addToInventory(inventory, addedItems)的函式,其中 inventory 引數是

c++ Primer Plus 第六版 程式設計練習答案第

3.1 #include<stdafx.h> #include <iostream> using namespace std; const int inch_per_feet = 12;//一英尺(inch)等於12英寸(feet) int main() { int

C Primer Plus 第程式設計練習

1.通過試驗(即編寫帶有此類問題的程式)觀察系統如何處理整數上溢、浮點數上溢和浮點數下溢的情況。 #include<stdio.h> int main(void) { unsigned int a = 4294967295; float b = 3.4e38; flo