• UCF Local Programming Contest 2012(Practice) D. The Clock Algorithm


    题目链接:https://www.jisuanke.com/contest/7964?view=challenges

    题目意思:就是页面加载到一个个窗口中,这些窗口就像时钟一样首尾连续不过周期是给输入的,加载页面有一些规则(在思路中,当时愣是没懂这些规则的意思)。

    题目思路:首先判断要加载页面是否在这n个空格中:

    加载规则如下:

    1.当有空位置时,将空位置加载为a[i],flag设为new。

    2.当没有时,判断指针所指页面的flag,如果flag==new,将指针后移,并将当前页面flag改为old(表示旧页面)如果页面的flag==old,则可以直接用将加载的页面替换当前页面,并将替换后页面的fla定为new。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll maxn = 1e5 + 5;
    struct node{
        ll x;
        ll flag;///1为新,0为旧
    }N[maxn];
    ll a[maxn];
    
    int main(){
        ll n, m, Case = 1;
        while(~scanf("%lld%lld",&n,&m)){
            if(!n && !m) break;
            memset(a, 0, sizeof(a));
            ll Count = 1, sum = 0;    ///指针,计数
            for(ll i = 1; i <= m; i++)
                scanf("%lld", &a[i]);
            for(ll i = 1; i <= n; i++){
                N[i].x = 0;
                N[i].flag = 0;
            }
            printf("Program %lld
    ", Case++);
            for(ll i = 1; i <= m; i++){
                ll flag1 = 0;
                for(ll j = 1; j <= n; j++){
                    if(N[j].x == a[i]){
                        N[j].flag = 1;
                        flag1 = 1;
                        printf("Access page %lld in cell %lld.
    ", a[i], j);
                        sum++;
                    }
                }
                if(flag1 == 1)
                    continue;
                while(N[Count].flag == 1){
                    N[Count].flag = 0;
                    printf("a[i] = %lld ;count = %lld 
    ",a[i],Count);
                    Count++;
                    if(Count == n + 1){
                        Count = 1;
                    }
                }
                if(N[Count].flag == 0){
                    N[Count].x = a[i];
                    N[Count].flag = 1;
                    printf("Page %lld loaded into cell %lld.
    ", a[i], Count);
                    Count++;
                    if(Count == n + 1)
                        Count = 1;
                }
            }
            printf("There are a total of %lld page faults.
    
    ", m - sum);
        }
    
        return 0;
    }
  • 相关阅读:
    爬虫xpath学习
    Python爬虫正则表达爬取b站所有动漫的评分
    bs4爬虫
    re正则相关学习
    C/C++声明、定义、初始化
    mysql行转列不确定列数
    pycharm2022.1激活
    研招网目标院校(南京大学)爬虫
    jQuery常用函数
    deepin 安装 nodejs npm
  • 原文地址:https://www.cnblogs.com/Mingusu/p/12422815.html
Copyright © 2020-2023  润新知