[codevs2640]打印页数

贪心,不知道怎么想的就大师难度了

有些细节需要处理一下:首先是注意一行可能有多个标注,用inc记录,初始值付成1.

另一个数组存好多个k(=0=只是觉得比较方便,反正数据弱),表示每一页(反正不会超过n,谁叫你说一定有解呢,就是人性,哼),用指针d记录打印到了第几页

最后从1到n扫一遍,可以放就放,不能放就下一页

代码

var
        f,t:array[0..5000] of longint;
        d,r,k,n,all,x,y,i,j:longint;


        begin
                readln(n,k);
                readln(all);
                for i:=1 to n do t[i]:=1;
                for i:=1 to n do f[i]:=k;
                d:=1;
                for i:=1 to all do
                begin
                        readln(x,y);
                        t[x]:=t[x]+y;
                end;

                for i:=1 to n do
                begin
                        if f[d]>=t[i] then dec(f[d],t[i])
                        else begin inc(d); dec(f[d],t[i]); end;
                end;

                writeln(d); 
        end.

 喜欢就收藏一下,vic私人qq:1064864324,加我一起讨论问题,一起进步^-^

原文地址:https://www.cnblogs.com/victorslave/p/4845428.html