当前位置: 首页 > article >正文

codeforces _ 补题

C. Ball in Berland

传送门:Problem - C - Codeforces

题意:

 思路:容斥原理

考虑 第 i 对情侣组合  ,男生为 a ,女生为 b ,那么考虑与之匹配的情侣 必须没有 a | b

,一共有 k 对情侣, a | b 可以表示为 k - cnt[a] - cnt[b] + 1 ( cnt[a] 表示为有男生 a 的方案数 )

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
    int n , m , k; cin >> n >> m >> k;
    vector<int> cnta( n + 1 ) , cntb( m + 1 ) , a( k + 1 ) , b( k + 1 );
    for( int i = 1 ; i <= k ; i++ ) cin >> a[i] , cnta[a[i]]++;
    for( int i = 1 ; i <= k ; i++ ) cin >> b[i] , cntb[b[i]]++;

    int ans = 0;
    for( int i = 1 ; i <= k ; i++ )
    {
        ans += k - cnta[a[i]] - cntb[b[i]] + 1;
    }
    cout << ans / 2 << endl;
}
signed main()
{
    int tt; cin >> tt;
    while(tt--)solve();
    return 0;
}

B. Sifid and Strange Subsequences

传送门:Problem - B - Codeforces

题意:

 思路:

我们要保证 | a[i] - a[j] | 的最小值 要 >= MAX ( MAX为 a[i] 中的某一个值 )

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
    int n; cin >> n;
    vector<int> a(n + 1);
    for( int i = 1 ; i <= n ; i++ ) cin >> a[i];
    int cnt = 0; sort( a.begin() + 1 , a.end() );
    for( int i = 1 ; i <= n ; i++ )
        if( a[i] <= 0 )cnt++; 
    // 此时的 cnt 表示 a[i] <= 0 的个数
    int mn = 2e18;
    for( int i = 1 ; i < cnt ; i++ )
        mn = min( mn , a[i + 1] - a[i] );
    for( int i = cnt + 1 ; i <= n ; i++ )
    {
        // 考虑 a[i] > 0 的情况
        mn = min( mn , a[i] - a[i-1] );
        if( mn >= a[i] )cnt++;
        else break;
    }
    cout << cnt << endl;
}
signed main()
{
    int tt; cin >> tt;
    while(tt--)solve();
    return 0;
}

传送门:Problem - A - Codeforces

A. Bestie

题意:

 思路:

首先有一个结论 gcd( n , n - 1 ) == 1

所以这个题的答案一定 <= 3 

分情况讨论即可 答案为 1 2 3时的情况

#include<bits/stdc++.h>
using namespace std;
#define int long long
int gcd( int a , int b )
{
    return b ? gcd( b , a % b ) : a;
}
void solve()
{
    int n; cin >> n;
    vector<int> a( n + 1 );
    for( int i = 1 ; i <= n ; i++ ) cin >> a[i];
    int g = 0;
    for( int i = 1 ; i <= n ; i++ )g = gcd( g , a[i] );
    int temp1 = 0 ;
    for( int i = 1 ; i <= n; i++ )temp1 = gcd( temp1 , a[i] );
    int temp2 = 0;
    for( int i = 1 ; i <= n ; i++ )
    {
        if( i == n - 1 )continue;
        temp2 = gcd( temp2 , a[i] );
    }
    if( g == 1 )
    {
        cout << 0 << endl;
    }
    else if( gcd( temp1 , gcd( n , a[n] ) ) == 1 )
    {
        cout << 1 << endl;
    }
    else if( gcd( temp2 , gcd( n - 1 , a[n - 1] ) ) == 1 )
    {
        cout << 2 << endl;
    }
    else cout << 3 << endl;
}
signed main()
{
    int tt; cin >> tt;
    while(tt--)solve();
    return 0;
}


http://www.kler.cn/news/367632.html

相关文章:

  • 5GC核心网中的南向与北向
  • 【无人机设计与控制】改进人工势场法,引入模糊控制实现无人机路径规划和避障
  • 面包种类图像分割系统:多层面改进
  • C++游戏开发
  • 代码随想录算法训练营Day39 | 卡玛网-46.携带研究材料、416. 分割等和子集
  • GeoWebCache1.26调用ArcGIS切片
  • 数据可视化视频制作
  • 国内动态短效sk5,http
  • MongoDB Shell 基本命令(三)生成学生脚本信息和简单查询
  • Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范
  • vscode如何debug环境配置?torchrun与deepspeed库又该如何配置?
  • Python爬虫:商品详情的“八卦记者”
  • LeetCode 3185.构成整天的下标对数目 II:哈希表
  • [Ansible实践笔记]自动化运维工具Ansible(二):Ansible的playbook及角色
  • AudioSetCaps数据集:包含190万对来自AudioSet录音的音频-字幕对。
  • HTTP协议相关知识点
  • 网络编程_day3
  • Flutter 鸿蒙next中的路由使用详解【基础使用】
  • 团结引擎内置 AI 助手团结 Muse Chat 测试版上线!新功能怎么用?能做什么?
  • 技术周总结 10.21~10.27周日
  • LeetCode刷题日记之动态规划(一)
  • 2025前端面试-内存泄露-001
  • k8s 1.21.1部署过程中calico服务启动失败问题
  • LeetCode_1688. 比赛中的配对次数_java
  • LabVIEW提高开发效率技巧----事件日志记录
  • LExecutor: Learning-Guided Execution——论文笔记