【题意】
有一个图书馆,刚开始没有书,最多可容纳k本书;有n天,每天会有人借一本书,当天归还;如果图书馆有这个本就直接借到,否则图书馆的人会购买这本书,每本书的价格都是1;如果现在图书馆的书已达上限还需购买,必须舍弃已有的一本书,以后再有人借这本书要重新购买。
问图书馆的人最少要花多少钱购书?
【思路】
关键是替换原则,每次都替换下一次出现最晚的,因为它占用图书馆的时间最长。不是替换后面需要数量最少的!比如
10 2
1 2 4 5 1 1 1 1 2 3
4是替换2而不是1
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std;10 typedef long long ll;11 const int maxn=82;12 const int inf=0x3f3f3f3f;13 int n,m;14 int vis[maxn];15 int num[maxn];16 int nxt[maxn];17 int a[maxn];18 int main()19 {20 while(~scanf("%d%d",&n,&m))21 {22 memset(vis,0,sizeof(vis));23 memset(num,0,sizeof(num));24 memset(nxt,0,sizeof(nxt));25 for(int i=0;i