我是靠谱客的博主 有魅力百褶裙,最近开发中收集的这篇文章主要介绍几个cf水题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1358C 1600
题意:在一个类似于三角形排列的二维数组(即[1,1]->[1,2]->[2,1]->[1,3]->[2,2]->[3,1]这样类似三角形的递增排列)一个起点sx,sy,和终点ex,ey,问你从起点到终点的路径和有多少种可能,且路径的方向只能往下或者往右,
思路:可以模拟一下,从一个点到另一个点路径有多种,而且其中有可能会有虽然然路径不同,但是路径和相同的情况,所以,可以想想路径的最大值和路径的最小值,然后判断在路径的最大值和最小值之间是否会存在遗漏,显然通过分析,是没有遗漏的,那么问题就来了,如何计算路径最大值和最小值的差值呢,如果模拟一下不难发现起点和终点的相对位置和差值有关,其余的都和差值无关,然后得到最后的关系式就ok了

int main(){
    IOS;
    int t;
    cin>>t;
    while(t--){
        ll a, b, c, d;
        cin>>a>>b>>c>>d;
        cout<<(c-a)*(d-b)+1<<endl;
    }
    return 0;
}

1352G 1600
题意:给你一棵树,n个结点,n-1条边,然后定义其中一个结点为特殊点(可以为叶子结点),Ashish和Ayush分别对这棵树进行操作,对这棵树减去叶子结点,也就是度为1的点,将与这个结点的边全部剪除。最先剪掉特殊点的人获胜。Ayush先剪
思路:我一开始看到这个题目的时候想到的还是拓扑排序。。没想到。。一样的是模拟一下,如果这个特殊结点就是叶子节点,那么肯定是Ayush获胜,如果这个特殊节点不是叶子结点,那么可以设想每个人的操作都是最优的,那么就肯定不会使得这个特殊结点变为叶子节点,除非是迫不得已,只能剪去一个叶子结点使得这个特殊结点变为叶子结点,所以到最后肯定是剩下两个结点,特殊节点和另外一个结点,之后的久很容易判断了,如果这个树的节点数为偶数那么Ayush获胜,反之Ashish获胜。

int main(){
    IOS;
    int t;
    cin>>t;
    while(t--){
        int n, k;
        cin>>n>>k;
        int flag = 0;
        for(int i = 0; i < n-1; i++){
            int x, y;
            cin>>x>>y;
            if(x==k||y==k){
                flag++;
            }
        }
        if(flag>=2){
            if(n%2==0){
                cout<<"Ayush"<<endl;
            }else cout<<"Ashish"<<endl;
        }
        else cout<<"Ayush"<<endl;
    }
    return 0;
}

1352G 1600
题意:给你一个数n,问你是否存在这么数组a包含1到n,且2<=|a[i]-a[i-1]|<=4,如果存在则打印出这个数组,如果不存在则打印-1
思路:这个题目是真的水,模拟一下,就先跳着来1,3,5 。。。然后在结尾的时候分类讨论,同时对n=4的时候另行分析,因为我假设的数组都是以1为开头。具体实现看代码吧

int main(){
    IOS;
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        if(n<4){
            cout<<"-1"<<endl;
            continue;
        }else if(n==4){
            cout<<"3 1 4 2"<<endl;
            continue;
        }
        for(int i = 1; i <= n; i+=2){
            cout<<i<<" ";
        }
        if(n%2==0){
            cout<<n-4<<" "<<n<<" "<<n-2<<" ";
            for(int i = n-6; i > 0; i-=2){
                cout<<i<<" ";
            }
        }
        else {
            cout<<n-3<<" "<<n-1<<" ";
            for(int i = n-5; i > 0; i-=2){
                cout<<i<<" ";
            }
        }
        cout<<endl;
    }
    return 0;
}

之后还有一个1700和两个1900的题要补题解/心塞.jpg

最后

以上就是有魅力百褶裙为你收集整理的几个cf水题的全部内容,希望文章能够帮你解决几个cf水题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部