CF-1013 (2019/02/09 补)

CF-1013

A. Piles With Stones

比较两个序列的和,因为只能拿走或者不拿,所以总数不能变大。

B. And

  • 答案只有 -1,0,1,2几种可能,所以对于每一种答案都暴力扫一次是可以的
  • 或者对于每个 \(a_i\) ,将\(a_i\) 标记加一,如果\(a_i \neq a_i\& x\) ,将\(a_i\&x\) 用另一个数组标记加一。然后整体扫一次就可以了
#include <bits/stdc++.h>
using namespace std;
int n,x;
int a[100010],b[100010];
int main(){
    cin>>n>>x;
    for(int i=1;i<=n;i++){
        int y;
        scanf("%d",&y);
        a[y]++;
        if((x&y)!=y)
            b[x&y]++;
    }
    int res = -1;
    for(int i=0;i<=100000;i++)
    {
        if(a[i]>=2)res = 0;
        else if(res!=0&&a[i]==1&&b[i]>=1)res = 1;
        else if(res!=1&&b[i]>=2)res = 2;
    }
    cout<<res<<endl;
    return 0;
}

C. Photo of The Sky

我们关心的只是 \(x_{max} - x_{min}\) 和 \(y_{max} - y_{min}\)

现在的只是整个坐标的合集。先整体排个序。

? \[ a_1,a_2 \cdots a_{2\times n-1},a_{2 \times n}\]

  • 如果序列中最大值和最小值在同一个集合,那么枚举另一个集合的最大元素或者最小元素,得到另一个集合的最小的 \(max - min\)
  • 如果序列中最大值和最小值不在同一个集合,那么只有将 \(a_1 \cdots a_n\) 分到一个集合,\(a_{n+1} \cdots a_{2\times n}\) 分到一个集合时最优
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll a[200010];
int main(){
    scanf("%d",&n);
    for(int i=0;i<2*n;i++)
        scanf("%lld",&a[i]);
    sort(a,a+2*n);
    ll mi = 1ll<<60;
    //第一种情况,枚举另一个集合的最小值a[i]
    for(int i=1;i<n;i++)
        mi = min(mi,a[i+n-1]-a[i]));
    mi = mi*(a[2*n-1]-a[0]);//结算,获得面积
    mi = min(mi,(a[n-1]-a[0])*(a[2*n-1]-a[n]));//与第二种情况作比较
    cout<<mi<<endl;
    return 0;
}

D. Chemical table

tag: 并查集,联通块

题目操作:若有\((r_1,c_1),(r_1,c_2),(r_2,c_1)\) ,那么自动生成\((r_2,c_2)\)

抛开二维平面,寻找坐标点之间的关系,可以发现一条规律:如果\(r_1\)与\(c_1,r_2\)有关系,\(r_2\)与\(c_2\)有关系,则\(r_2\)与\(c_2\)会有关系。如果把他们看成点与点之间的关系,可以画出一个图,这个图是联通的。而任意两个不联通的点只需要再添加一个点就可以使得他们联通。所以我们只需要求出联通块个数就可以知道答案了。

#include <bits/stdc++.h>
using namespace std;
int n,m,q;
int f[400010];
//并查集
int find(int x){
    return x==f[x]? x : f[x] = find(f[x]);
}
int main(){
    cin>>n>>m>>q;
    for(int i=1;i<=n+m;i++)f[i] = i;
    for(int i=0;i<q;i++){
        int x,y;
        cin>>x>>y;
        y+=n;
        x = find(x);y=find(y);
        f[x] = y;
    }
    //先随便找一个联通块
    int root = find(1);
    int res = 0;
    for(int i=2;i<=n+m;i++){
        int x = find(i);
        //如果发现另一个联通块,则先使得他们联通,然后res++
        if(x!=root){
            f[x] = root;res++;
        }
    }
    cout<<res<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/1625--H/p/10357937.html

时间: 2024-07-30 21:01:35

CF-1013 (2019/02/09 补)的相关文章

2019/02/09 对于KinectFusion 的理解

网上有很多关于Kinect Fusion 的详细介绍,包括各个部分的算法,思路,以及应用上的限制和优化. 在此就不多介绍了. KinectFusion 提供了非常基础的用RGB-D 相机实现的 Dense mapping algorithm. 在实验初期我也阅读了很多次. 最近由于实验上遇到了非常棘手的问题, 又把之前的资料拿出来再次仔细的阅读,希望能有新的发现. 1. pcl::kinfu 和 pcl::kinfuLS. 找了相关的Libs 和 网上资料,但是并没有找到合适的代码资料和 dem

PAT 甲级 A1058 (2019/02/09)

1 #include<cstdio> 2 int main(){ 3 int a[3], b[3], c[3], cont = 0; 4 scanf("%d.%d.%d %d.%d.%d",&a[0], &b[0], &c[0], &a[1], &b[1], &c[1]); 5 c[2] = ( c[0] + c[1] ) % 29; 6 cont = ( c[0] + c[1] ) / 29; 7 b[2] = ( b[0]

PAT 甲级 A1061 (2019/02/09) NULL(16/20)

1 #include<cstdio> 2 #include<cstring> 3 int main(){ 4 char str1[61], str2[61], str3[61], str4[61]; 5 char week[7][4]={"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; 6 sc

2018.02.04(补作业系列)

2018.02.04 补作业系列 1.合并石子 思路: 核心代码: 状态转移方程&解析:s[i]表示前i堆石子的数量总和,f[i][j]表示把第i堆石子到第j堆石子合并成一堆的最优值. 1 for ( i = n-1 ; i >= 1 ; i-- ){ 2 for ( j = i+1 ; j <= n ; j++ ){ 3 for ( k = i ; k <= j-1 ; k++ ){ 4 f[i][j] = min ( f[i][j] , f[i][k] + f[k+1][j]

AWS re:Invent(2019.01.09)

时间:2019.01.09地点:北京国际饭店 原文地址:https://www.cnblogs.com/xuefeng1982/p/10335801.html

【谜客帝国】第147届月思主擂谜会(2019.02.15)

 [谜客帝国]第147届月思主擂谜会(2019.02.15) 主持计分:东东 1.“人在中天日月间”(9笔字)春/月思 [注:面出陈孚<开平即事二首>,“势超大地山河上,-.”] 2. 玉漏声中烟气袅(3字法国奢侈品牌)YSL/月思 3. 双双相念初相爱(2字著名动漫人物)菜菜/月思 4.“数点燕云州外.雪霜威”(足球用语二,4+3)4132.451/月思 [注:面出余文<相见欢>,“登高望断龙旗,未曾归.几度中原北定,梦依稀.朔风乱,胡尘漫,掩斜晖.-.”] 5.“十载同心如一人

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

内部类(转载http://www.cnblogs.com/devinzhang/archive/2012/02/09/2344059.html)

Java内部类总结 Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理.其实,做非GUI编程,内部类完全可以不用. 内部类的声明.访问控制等于外部类有所不同,要灵活使用内部类来编写程序,还是有相当难度的,Java发明了这种难懂的玩意儿,在其他语言中是没有的,但是在Java中,内部类也相当的重要,尤其做GUI开发时候,事件的响应处理全靠内部类了. 内部类所做的功能使用外部类也同样可以实现,只是有时候内部类做的更巧妙些. 内部类按照其所在位置不同,可分为以下

02 09 日记

在知乎感情和婚姻话题上看了好久. 徐广斌,他, 我还是不知道他是一个什么样的人,跟我的期盼有多大的差别,但是我确实通过和他的交流,在亲密关系和婚姻方面,有了另一种认识,内心也得到了些许的平静. 我想象中的啊斌太完美了,一生中能有人让你真实的有过这种感觉,不管是不是错觉,都已经很幸运了. 所以不要贪心,不要对啊斌,对任何伴侣,有过高的预期. 我最后不一定跟啊斌在一起,我对他的了解还不够,所以,routine那种东西没什么意义,你受不了孤独了,就去求个安慰,老朋友他不会不给你,至于回报,等他自己来要