AtCoder의 Robot arms 문제를 그림에 그려 이해해 본다(PHP)
문제는 여기입니다.
입력 예
입력 예4
2 4
4 3
9 3
100 5
 그림
이렇게 그림에 그려 보면 "어째서 그런 일인가, 확실히 그렇다고 하네요"라는 느낌이 들었습니다.
 
1번째의 가장 오른쪽 가장자리와 2번째의 가장 왼쪽 끝을 비교해 가고, 2번째의 왼쪽 끝이 1번째의 오른쪽 끝보다 숫자가 작으면, 그 2번째를 제거해 나가면 좋을 뿐입니다.
 코드
코드로 하면 이런 느낌.
PHP<?php
    fscanf(STDIN, "%d", $n);
    for ($i = 0; $i < $n; $i++) {
        fscanf(STDIN, "%d %d", $x, $l);
        $ss[] = max(0, $x - $l);
        $ts[] = $x + $l;
    }
    array_multisort($ts, SORT_ASC, $ss);
    $t = 0;
    $count = 0;
    for ($i = 0; $i < $n; $i++) {
        if ($ss[$i] >= $x) {
            $count++;
            $t = $ts[$i];
        }
    }
    echo $count . "\n";
시간에 여유가 생기면 수시로 갱신하고 싶습니다.
코멘트 있으면, 꼭 잘 부탁드립니다!
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(AtCoder의 Robot arms 문제를 그림에 그려 이해해 본다(PHP)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/kakudaisuke/items/88d322cdc1c521954960
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
4
2 4
4 3
9 3
100 5
이렇게 그림에 그려 보면 "어째서 그런 일인가, 확실히 그렇다고 하네요"라는 느낌이 들었습니다.

1번째의 가장 오른쪽 가장자리와 2번째의 가장 왼쪽 끝을 비교해 가고, 2번째의 왼쪽 끝이 1번째의 오른쪽 끝보다 숫자가 작으면, 그 2번째를 제거해 나가면 좋을 뿐입니다.
코드
코드로 하면 이런 느낌.
PHP<?php
    fscanf(STDIN, "%d", $n);
    for ($i = 0; $i < $n; $i++) {
        fscanf(STDIN, "%d %d", $x, $l);
        $ss[] = max(0, $x - $l);
        $ts[] = $x + $l;
    }
    array_multisort($ts, SORT_ASC, $ss);
    $t = 0;
    $count = 0;
    for ($i = 0; $i < $n; $i++) {
        if ($ss[$i] >= $x) {
            $count++;
            $t = $ts[$i];
        }
    }
    echo $count . "\n";
시간에 여유가 생기면 수시로 갱신하고 싶습니다.
코멘트 있으면, 꼭 잘 부탁드립니다!
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(AtCoder의 Robot arms 문제를 그림에 그려 이해해 본다(PHP)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/kakudaisuke/items/88d322cdc1c521954960
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
<?php
    fscanf(STDIN, "%d", $n);
    for ($i = 0; $i < $n; $i++) {
        fscanf(STDIN, "%d %d", $x, $l);
        $ss[] = max(0, $x - $l);
        $ts[] = $x + $l;
    }
    array_multisort($ts, SORT_ASC, $ss);
    $t = 0;
    $count = 0;
    for ($i = 0; $i < $n; $i++) {
        if ($ss[$i] >= $x) {
            $count++;
            $t = $ts[$i];
        }
    }
    echo $count . "\n";
Reference
이 문제에 관하여(AtCoder의 Robot arms 문제를 그림에 그려 이해해 본다(PHP)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kakudaisuke/items/88d322cdc1c521954960텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)