zoukankan      html  css  js  c++  java
  • 2020 HZNU Winter Training Day 10

    D题:CodeForces 1121C

    题解:

    由于本题数据量较小,可以采用暴力枚举时间的方法,其实就是一道模拟题,枚举秒。

    记录是第几个任务,并判断记录当前任务处理到第几个测试点。

    在每一秒,判断k个任务中是否有符合条件的情况出现,从而得出ans来。

    注意:利用vis数组,防止重复运算。

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int MAXN=2e5+10;
    
    int a[MAXN],b[MAXN],c[MAXN];
    int vis[MAXN];
    int main(){
        int n,k;
    
        int t=0,d,ans=0;
        scanf("%d %d",&n,&k);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        for(int i=1;i<=k;i++){
            b[i]=a[i];
        }
        d= k+1;
    
        while(t<n){
    
            int q=t*100.0/n+0.5;
    
            for(int i=1;i<=k;i++){
    
                if(b[i]){
                    c[i]++;
                    if(c[i]==q&&!vis[i]){
                        ans++;
                        vis[i]=1;
                    }
                    if(c[i]>=b[i]){
                        vis[i]=0;
                        c[i]=0;
                        b[i]=a[d];
                        d++;
                        t++;
                    }
                }
            }
        }
    
        printf("%d
    ",ans);
    
    }
    View Code

    C题:CodeForces 1103B
    题解:本题想要找到符合的条件的答案,可通过x和y找到其所在的区间,因此不断列举区间,找到其所在区间,通过二分找出答案。
    原理:若结果大于y,则一定返回y,否则返回x,因此可以此判断是否在这个区间中

    #include<algorithm>
    #include<stdio.h>
    #include<iostream>
    #include<string>
    using namespace std;
    
    
    
    char judge(int x,int y){
        char rs;
        printf("? %d %d
    ",x,y);
        fflush(stdout);
        cin>>rs;
    
        return rs;
    }//判断结果
    
    
    
    int main(){ 
        string s;
        while(cin>>s){
            
            if(s=="end") 
                break;
    
    
            int l=0,r=1;
    
    
            while(judge(l,r)=='y'){
                l=r;
                r*=2;
            }//若结果大于y,则返回y,否则返回x,因此可以此判断是否在这个区间中
    
    
            while(l<r-1){
                int mid=(l+r)/2;
    
                if(judge(mid,r)=='x')
                    l=mid;
                else 
                    r=mid;
            }//找到区间后在该区间二分查找答案,原理上同
    
            printf("! %d
    ",r);
            fflush(stdout);
    
    
        }
        
    }
    View Code
  • 相关阅读:
    python操作MySQL数据库
    fs 小计
    yii xss模型安全
    freeswitch 音 视频 支持的编码
    MYSQL手工注入某日本网站
    Linux 系统 pptpd+radius+mysql 安装攻略
    mysql主从复制之mysql-proxy实现读写分离
    nginx-1.2.7+tcp_proxy_module负载均衡配置
    nginx-1.2.7 + tcp_proxy_module手动编译安装
    关于弹框的那些事~
  • 原文地址:https://www.cnblogs.com/fengzhongzhuifeng/p/12273241.html
Copyright © 2011-2022 走看看