【普及模拟】生产武器
来源:互联网 发布:淘宝选款技巧 编辑:程序博客网 时间:2024/04/28 17:33
题目描述
最近,飞过海在OI总部总算弄了个小差,现在他又被调去了OI防卫部门来制造对付基德的工具。当然,这些工作是在OI总部内的机器上进行的,可是飞过海从来没有此经验,现在飞过海又接到了一批新的任务,现在他要编程来控制机器。已知机器一天工作N mins,当飞过海按动开始按钮的时候机器就开始运转。
现在OI总司给了K个生产目标,可是只有一台机器,所以总司希望知道最少机器能生产多少个零件(也就是最少工作多少分钟)。如果同时有许多的零件要加工,机器只能选择一个。但是一个零件任务是有时间限制的,也就是说,1个零件必须从P分开始,持续T分钟(好牵强的规定啊!)。
由于飞过海很忙,所以请你来编写一下这个程序吧!
输入
输入文件中的第一行为两个整数N,K(1<=N<=10000000,1<=K<=100000),其中:N表示机器的运转时间(由于机器要维护,它只能工作那么多时间),单位为分钟,K表示总司布置的零件总数。
接下来的K行,每行有两个整数P,T,表示该任务从第P分钟开始,持续时间为T分钟。
输出
输出文件中仅一行为一个数,表示机器最多可能加工零件的最少时间。
样例输入
1 1
1 1
样例输出
1
TJ
DP。
BC
var n,m,i,ans:longint; f:array[0..20000000]of longint; a,b:array[0..200000]of longint;procedure kp(l,r:longint);var i,j,mid,t:longint;begin i:=l; j:=r; mid:=a[(l+r)div 2]; repeat while a[i]<mid do inc(i); while a[j]>mid do dec(j); if i<=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; t:=b[i]; b[i]:=b[j]; b[j]:=t; inc(i); dec(j); end; until i>j; if l<j then kp(l,j); if i<r then kp(i,r);end;begin assign(input,'produce.in');reset(input); assign(output,'produce.out');rewrite(output); readln(n,m); for i:=1 to m do readln(a[i],b[i]); kp(1,m); for i:=n downto 1 do begin if i<>a[m] then f[i]:=f[i+1]+1 else begin while i=a[m] do begin if f[i+b[m]]>f[i] then f[i]:=f[i+b[m]]; dec(m); end; end; end; ans:=n-f[1]; writeln(ans); close(input);close(output);end.
阅读全文
2 2
- 【普及模拟】生产武器
- 【普及模拟】生产武器
- 生产武器
- {小结}普及模拟3.26
- 【普及模拟】好数
- 【普及模拟】蚂蚁
- 【普及模拟】Array
- 【普及模拟】Biotech
- 【普及模拟】Distinct
- 【12普及模拟】采药
- 【普及模拟】城市连接
- “生产环境、沙盒环境”普及贴
- 生产设备图形模拟
- 模拟生产环境
- 【模拟】【noip2012普及组】寻宝
- jzoj 1570. 【普及模拟】射击
- jzoj 1571. 【普及模拟】过河
- jzoj 1579. 【普及模拟】老鼠
- Linux--系统网络测试和测试工具
- 【普及模拟】城市连接
- 多核初始化过程
- 大数据概述
- 单词查找树
- 【普及模拟】生产武器
- 【NLP】play with stanford nlp
- Phone List
- 【NOIP2009PJ】道路游戏
- [Usaco2017 Open]Bovine Genomics //Trie
- 选举
- 异或之
- 6.Circular Sequence
- RabbitMQ安装