草庐IT

Codeforces Round 865 (Div. 2) A-E

EdGrass 2023-04-17 原文

Codeforces Round 865 (Div. 2)

A. Ian Visits Mary

void solve(){
    int x=read(),y=read();

    if(__gcd(y,x)!=1){
        cout<<2<<endl;
        cout<<1<<" "<<y-1<<endl;
        cout<<x<<" "<<y<<endl;
    }else {
        cout<<1<<"\n";
        cout<<x<<" "<<y<<"\n";
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

B. Grid Reconstruction

自己写了挺长一串的 这是赛后学习jiangly的代码

void solve(){
    int n=read();
    for(int i=0;i<2;i++){
        for(int j=0;j<n;j++){
            int x;
            if((i+j)&1) x=j+1;
            else x=(j+n-1)%n+n+1;
            cout<<x<<" ";
            if(j==n-1)cout<<"\n";
        }
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

C. Ian and Array Sorting

int a[N];
void solve(){
    int n=read(),ans=1;
    for(int i=1;i<=n;i++){
        a[i]=read();
    }
    int d;
    for(int i=n-1;i>=2;i--){
        d=a[i]-a[i+1];
        if(d<0)d=0;
        if(d){
            a[i]-=d;
            a[i-1]-=d;
        }
    }
    d=a[1]-a[2];
    if(d<0)d=0;
    if(d&&(n-1)%2==1){
        for(int i=2;i<n;i++){
           if(i!=2) d=a[i-1]-a[i];
           if(d<0)d=0;
            a[i]+=d;
            a[i+1]+=d;
            
        }
    }
    if(a[n]<a[n-1])ans=0;
    puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

D. Sum Graph

为了得到排列 需要构建一个易于找到顺序的图 即单链

构造单链的方法:先add(n+1) 后add(n) 这样会得到一条从尾部开始 不断在头尾跳跃的单链

先询问各点与1的距离 再询问各点与“距离1一步的点”(可能有两个 任选一个即可 下文简称j点 )的距离

规定在单链上1到j点的方向为正方向 即可知道每个值的坐标 再将坐标整体加到从0开始 即可得到排列

又因为可能上一条的正方向与实际方向相反 所以需要反着得到另一个排列

int query(int x,int y){
    cout<<"? "<<x<<" "<<y<<endl;
    int res;
    cin>>res;
    return res;
}
void solve(){
    int n=read();
    
    cout<<"+ "<<n+1<<endl;
    int usl;
    cin>>usl;
    cout<<"+ "<<n<<endl;
    cin>>usl;                    //构造单链    
    
    vector<int>a(n),b(n),c(n),p;
    for(int i=2;i<=n;i++){      //查询所有点到1的距离
        a[i-1]=query(1,i);
    }
    
    int j=find(a.begin(),a.end(),1)-a.begin();  //找到与1相邻的点
    b[0]=a[j];      
    for(int i=1;i<n;i++){
        b[i]=query(j+1,i+1);    //查询各点到j点距离
    }
    
    int minn=inf;
    for(int i=0;i<n;i++){        //假定正方向后 判断各点的坐标
        if(a[i]<b[i]){
            c[i]=-a[i];
        }else {
            c[i]=a[i];
        }
        minn=min(c[i],minn);            
    }
    for(int i=0;i<n;i++){
        c[i]-=minn;                //平移各点坐标 让最小值变成0
    }
    
    int l=1,r=n,t=0;
    while(l<=r){
        if(!t){
            p.push_back(r--);
        }else {
            p.push_back(l++);    //构造单链顺序
        }
        t^=1;
    }
    
    cout<<"!";
    for(int i=0;i<n;i++){
        cout<<" "<<p[c[i]];        //按照相对位置输出两种排序
    }
    for(int i=0;i<n;i++){
        cout<<" "<<p[n-1-c[i]];
    }
    cout<<endl;
    cin>>usl;
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

E. Between

对给出来的ai和bi 总是有bi限制ai

如果限制是一个单向边 可以构成一个类似树的图(可能有除了树枝之外的边)

首先考虑 每个点都在树里

将1看作树根 如果深度为依次为2,3,4,···,n的点集分别记为k(2),k(3),k(4),···,k(n)

只有1的个数受到具体限制 先排列1 一个1则可以有两个k(2) 则可以有三个k(3) ··· 则可以有n个k(n)

所以排列可以为 k(n)+k(n-1)+ ··· +k(2)+k(1)+k(n)+k(n-1)+ ··· +k(3)+k(2)+ ··· +k(n) 明显是有限的

如果不是所有的点都在树里 则可以不断重复 所以是无限的

void solve(){
    int n=read(),m=read();
    vector<vector<int>>g(n);
    for(int i=0;i<m;i++){
        int x=read(),y=read();
        x--;
        y--;
        g[y].push_back(x);            //构建邻接矩阵
    }
    vector<int>d(n,-1),que(1,0);
    d[0]=1;                            
    for(int i=0;i<que.size();i++){    //这个循环相当于一次对树的bfs遍历
        for(int u:g[que[i]]){    
            if(d[u]==-1){            
                que.push_back(u);
                d[u]=d[que[i]]+1;    //记录深度
            }
        }
    }
    if(*min_element(d.begin(),d.end())==-1){    //有点不在树里则直接INFINITE
        cout<<"INFINITE\n";
        return ;
    }
    cout<<"FINITE\n";                
    vector<vector<int>>at(n+1);
    vector<int>seq;
    for(int i=0;i<n;i++){            //构建各深度的点集
        at[d[i]].push_back(i);    
    }
    for(int from =1 ;from <= n;from ++){    //照上面说的序列构成答案
        for(int val=n;val>=from;val--){
            for(int x:at[val]){
                seq.push_back(x);    
            }
        }
    }
    cout<<seq.size()<<"\n";            //输出答案
    for(int i=0;i<seq.size();i++){
        cout<<seq[i]+1<<" ";
    }
    cout<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

 

有关Codeforces Round 865 (Div. 2) A-E的更多相关文章

  1. ruby-on-rails - Nokogiri:使用 XPath 搜索 <div> - 2

    我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll

  2. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  3. ruby-on-rails - Ruby slim - 来自变量的 div 类 - 2

    我知道这篇文章在这里:RubySlim-Howdoyoudefineanelement'sclasswitharailshelperorvariable?我已经尝试了所有三种解决方案。不幸的是,对我来说,没有一个在工作。论坛.rb.panel.panel-heading.span=@forum.name.panel-body.row.col-md-7#{t('global.topic')}.col-md-3.value.title.col-md-1.value.topic.col-md-1.value.dateforum_feed.js.coffeewindow.ForumFeedUI

  4. ruby-on-rails - Rails 通过 div 包装有错误的字段 - 2

    当验证未通过时,如何停止Rails更改我的代码。每次rails用包裹我的字段...我可以编辑fields_with_error类.fields_with_error{display:inline}这行得通,但它是hacky 最佳答案 没关系。使用CSS而不是这样做。ActionView::Base.field_error_proc=Proc.newdo|html_tag,instance_tag|"#{html_tag}"end我觉得这更hacky:) 关于ruby-on-rails-R

  5. ruby-on-rails - 使用 Ruby on Rails 将类动态添加到 .erb 中的 div - 2

    我有这个div我想要的结果是有没有办法在我的erb中添加类(class)?我试过了但是当它呈现时,它不会逃逸到ruby​​代码中......和想法? 最佳答案 它与一起%>"> 关于ruby-on-rails-使用RubyonRails将类动态添加到.erb中的div,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3015986/

  6. ruby-on-rails - Date.new 为 `div' :String 返回未定义的方法 "11" - 2

    我遇到了错误undefinedmethod`div'for"11":String"在我提交表单时指向@startdate行。我完全不明白这是怎么回事。如果我在Rails控制台中执行这些步骤,它就可以正常工作。在我的Controller中我有:@startday=params["startday_#{i}".to_sym]@startmonth=params["startmonth_#{i}".to_sym]@startyear=params["startyear_#{i}".to_sym].to_s@endday=params["endday_#{i}".to_sym]@endmont

  7. Educational Codeforces Round 146 (Rated for Div. 2)(B,E详解) - 2

    题外话:抑郁场,开局一小时只出A,死活想不来B,最后因为D题出锅ura才保住可怜的分。但咱本来就写不到DB-LongLegs(数论)本题题解法一学自同样抑郁的知乎作者幽血魅影的题解,有讲解原理。法二来着知乎巨佬cup-pyy(大佬说《不难发现》呜呜)题意三种操作:向上走mmm步向右走mmm步给自己一次走的步数加111,即使得m=m+1m=m+1m=m+1问从(0,0)(0,0)(0,0)走到(a,b)(a,b)(a,b)的最小操作次数,值得注意的是操作三不可逆。解析假设我们最终一步的大小增长到mmm,那么在这个过程中我能以[1,m][1,m][1,m](当步数增长到该数时)之间的任何数字向上或

  8. ruby-on-rails - Rails 仪表板设计 : one controller action per div - 2

    作为Rails的新手(更像是基础设施专家),我正在实现一个仪表板。仪表板将由多个页面组成,每个页面将包含多个图表/表格/等。对于模块化,我希望添加新图表或更改数据View尽可能简单。假设一页有5个不同的图表。我可以让Controller进行5次单独的数据查找,将所有相关数据保存在实例变量中,并呈现5个部分,每个部分都涉及数据的子集。但是看起来更模块化的是有一个“索引”ControllerAction,它的渲染有一堆div,并且对于每个div都有另一个ControllerAction,它进行数据查找并有一个相关的View部分负责管理该数据的View在分区内。因此,如果我要显示包含两个图表

  9. ruby - 你如何在 rspec/capybara 中测试一个 div 是否具有特定的 css 样式? - 2

    如何测试一个div标签是否具有特定的css样式?我正在尝试测试它是否有display:none;或display:block。我尝试了以下但它给了我一个错误:it{shouldhave_selector('signup_server_generic_errors',/display:\s*none/)} 最佳答案 我建议您不要尝试定位css样式,而是编写测试来查找css类名。通过这种方式,您可以更改底层的css样式,同时保持类不变,您的测试仍然会通过。搜索底层样式很脆弱。风格经常变化。将你的rspecs建立在寻找特定样式元素的基础上

  10. javascript - 在特定的 div 中显示 toastr - 2

    我需要在特定的div、类或id中显示toastr消息。默认情况下它是body。我发现我需要改变目标。但我似乎无法让它发挥作用。例如,我想在这个div中显示toastr:这是我使用的代码:toastr.options={"closeButton":false,"debug":false,"newestOnTop":false,"progressBar":false,"positionClass":"toast-top-right","preventDuplicates":false,"onclick":null,"showDuration":"300","hideDuration":"1

随机推荐