zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/Mingusu/p/12422815.html
Copyright © 2011-2022 走看看