酷暑一夏1

不忘初心,方得始终


Vijos1203 CoVH之资料页数 题解

题目

柯南已经从灰原哀那里得到了一些关于OIBH组织的情报, 他想在阿笠把整理的资料打印出来, 仔细研究.
这份资料的正文包含许多行,某些行可能包含一些脚注标记,一个脚注可能包含一行或多行,并且必须和对应的脚注标记印刷在同一页
一页所允许印刷的最多行数是已知的,任何一页都不允许超过该行数(包括脚注)
但是阿笠博士的纸不多了, 柯南只好尽可能的少用纸, 他想知道这份资料最少要用多少页

题解

对于每一行,判断这一行加上其脚注总行数的值是否大于当前页剩余行数,如果是开新页,否则减当前页剩余行数。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<cstdio>
const int MAXN=1000+5;
int n,k,f,foot[MAXN][2],total[MAXN];
int main()
{
int a,ln;
scanf("%d %d",&n,&k);
scanf("%d",&f);
for(int i=1;i<=f;i++)
{
scanf("%d %d",&ln,&a);
total[ln]+=a;
}
int now=1,left=k,ans=1,nowfoot=1,line=foot[1][0],use;
while(now<=n)
{
// printf("Excuted.\n");
if(left<1)
{
ans++;
left=k;
}
left--;
use=total[now];
if(use)
{
if(left<use)
{
ans++;
left=k-1;
}
left-=use;
// printf("Foot %d of line %d on page %d, left %d line(s)\n",nowfoot,line,ans,left);
// line=foot[++nowfoot][0];
}
// printf("Line %d on page %d, left %d line(s)\n",now,ans,left);
now++;
// printf("Next: %d\n",now);
}
printf("%d",ans);
return 0;
}
最近的文章

Vijos1203 CoVH之华丽的IP伪装 题解

题目核心部分(没用的背景已省略,挺有趣的可以去看原题)如果我的推理没有错的话, 我们把访问过Vijos的IP地址调查一下, 找出当时它和哪些IP联络过, 筛选出向Vijos投过包的IP. 底下只考虑向Vijos投过包的IP, 对于两个直接联络过的IP, 他们发送的所有包的大小相加, 作为联络代价. …

于  CoVH系列, Vijos 继续阅读
更早的文章

Vijos1181 CoVH之密码破解 题解

题目话说一天,Dragon.Dai大菜和整个OIBH QQ群的超级大牛同心协力,终于进入了Vijos的系统,并设置了重重机关……等到V某带着柯南来到服务器准备检查Log(即是日志文件)时,才发现Log文件被加了密,密码是一个数列中的指定一位……(数列见下)经过V某及柯南的思考,总算破解了密码,看到了Log。数列:12345678910111213………..输入是一个数$n$,表示求数列的第$n$位1&lt;=$n$&lt;=10^8 题解[例子中所有提到的位数已加粗或斜体加粗,请对应后面提到的位数的字形] …

于  CoVH系列, Vijos 继续阅读