贪心,不知道怎么想的就大师难度了
有些细节需要处理一下:首先是注意一行可能有多个标注,用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,加我一起讨论问题,一起进步^-^