第12届北师大校赛热身赛第二场 A.不和谐的长难句1

本文介绍了一道关于书籍排版的算法问题,通过合理的空行添加,确保每个长难句及其解释能在同一页内显示,避免因换页造成的阅读不便。

题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?

pid=17121

2014-04-25 22:59:49

不和谐的长难句1

Time Limit: 8000ms
Case Time Limit: 2000ms
Memory Limit: 65536KB
64-bit integer IO format:  %lld      Java class name:  Main
Font Size:  +  -
Type:   None Graph Theory      2-SAT     Articulation/Bridge/Biconnected Component      Cycles/Topological Sorting/Strongly Connected Component      Shortest Path          Bellman Ford         Dijkstra/Floyd Warshall      Euler Trail/Circuit      Heavy-Light Decomposition      Minimum Spanning Tree      Stable Marriage Problem      Trees      Directed Minimum Spanning Tree      Flow/Matching         Graph Matching              Bipartite Matching              Hopcroft–Karp Bipartite Matching              Weighted Bipartite Matching/Hungarian Algorithm          Flow              Max Flow/Min Cut              Min Cost Max Flow  DFS-like     Backtracking with Pruning/Branch and Bound      Basic Recursion      IDA* Search     Parsing/Grammar      Breadth First Search/Depth First Search      Advanced Search Techniques          Binary Search/Bisection          Ternary Search  Geometry      Basic Geometry     Computational Geometry      Convex Hull      Pick's Theorem Game Theory      Green Hackenbush/Colon Principle/Fusion Principle      Nim      Sprague-Grundy Number  Matrix     Gaussian Elimination      Matrix Exponentiation  Data Structures      Basic Data Structures      Binary Indexed Tree      Binary Search Tree      Hashing     Orthogonal Range Search      Range Minimum Query/Lowest Common Ancestor      Segment Tree/Interval Tree      Trie Tree      Sorting     Disjoint Set  String      Aho Corasick     Knuth-Morris-Pratt      Suffix Array/Suffix Tree  Math      Basic Math     Big Integer Arithmetic      Number Theory          Chinese Remainder Theorem          Extended Euclid          Inclusion/Exclusion          Modular Arithmetic      Combinatorics         Group Theory/Burnside's lemma          Counting      Probability/Expected Value  Others     Tricky      Hardest     Unusual      Brute Force      Implementation     Constructive Algorithms      Two Pointer      Bitmask     Beginner      Discrete Logarithm/Shank's Baby-step Giant-step Algorithm      Greedy      Divide and Conquer  Dynamic Programming                      Tag it!

某L近期很苦逼地在看一本叫做《鸡阿姨&鸡玛特 阅读难句教程》的书,这本书的主要内容就是解说一堆奇怪的难懂的无比冗长同一时候又让人看了想睡觉的“长难句”,每一个句子中都有无数不认识的单词外加倒装、省略、插入语、复杂修饰、和固定搭配。然后还总是让人看到晕头转向都看不到一个句号。

但更让人纠结的是,在这么BT的前提下,竟然还有些句子由于排版原因被分在了两页(即前一页的最后几行和后一页的前几行),这让某L非常恼火,于是他開始观察这本书的排版方式【这关注点真偏— —||】,他发现。这本书的结构事实上非常easy。书中共同拥有N(N<=10^6)个小段,每段包含一个带有编号长难句和其相应的解说。每一个长难句都占5行(包含其编号),而编号为i的长难句相应的解说占a[i]行。

排版顺序则是依照长难句的编号由小到大。每一个长难句之后紧接着就是其相应的解说。然后再紧跟着下一个长难句和其相应的解说……由于书中每一页最多仅仅能排30行内容。所以导致了上述悲剧的发生。

为了解决问题。某L想在每一个小段中间加上一些空行(当然也能够不加)。使得全部的长难句都在同一页内。那么他最少须要加多少个空行呢=,=

Input

一个整数N,表示一共同拥有N的小段

接下来N行,每行两个数m、a[m]。表示编号为m的长难句相应的解说占a[m]行。

0<N<=10^6

1<=m<=N,而且不会反复

a[m]为int型正整数。

Output

一个整数P。表示最少须要加入的空行的数目

Sample Input

2
1 24
2 10

Sample Output

1

Hint

输入量巨大。请使用scanf,使用cin的话可能TLE。


也是水题一道。。。

只是比赛的时候没想出来,后来才AC的。

。。设m为上次没放完的那一部分则 m=(m+5+a[i])%30,则30-m即为这次应该加上的行数,只是这样的算法会把最后一页的也加上,所以要扣掉



#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int a[1000003];
int main()
{
    int n,m,sum;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&m);
        scanf("%d",&a[m]);
    }
    sum=0;
    m=0;
    for(int i=1;i<=n;i++)
    {
        m=(m+5+a[i])%30;
        if(m>25&&m<30)
        {
            sum+=30-m;
            if(i!=n)
                m=0;
        }
    }
    if(m>25&&m<30)
        sum-=30-m;
    cout<<sum<<endl;
    return 0;
}






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5262327.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值