题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?
pid=17121
2014-04-25 22:59:49
不和谐的长难句1
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
Sample Input
Sample Output
Hint
输入量巨大。请使用scanf,使用cin的话可能TLE。
也是水题一道。。。 只是比赛的时候没想出来,后来才AC的。
。。设m为上次没放完的那一部分则 m=(m+5+a[i])%30,则30-m即为这次应该加上的行数,只是这样的算法会把最后一页的也加上,所以要扣掉
#include #include #include #include #include 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< <
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5262327.html,如需转载请自行联系原作者