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

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.lryc.cn/news/469734.html

相关文章:

  • DataSophon集成ApacheImpala的过程
  • 深入探讨TCP/IP协议基础
  • 《Windows PE》7.4 资源表应用
  • 【重生之我要苦学C语言】猜数字游戏和关机程序的整合
  • 基于centos7脚本一键部署gpmall商城
  • Mac book英特尔系列?M系列?两者有什么区别呢
  • Python unstructured库详解:partition_pdf函数完整参数深度解析
  • <项目代码>YOLOv8路面病害识别<目标检测>
  • 广告牌和标签学习
  • GDB 从裸奔到穿戴整齐
  • WPF的触发器(Trigger)
  • 全能大模型GPT-4o体验和接入教程
  • 详解Apache版本、新功能和技术前景
  • Docker Redis集群3主3从模式
  • 【Go语言】
  • 【Spring Boot】元注解
  • 基于信号分解和多种深度学习结合的上证指数预测模型
  • 基于Spring Boot的酒店住宿管理平台
  • 游聚对战平台 三国战纪2012CE修改器修改地址
  • Qt Creator中的项目栏
  • keepalived+web 实现双机热备
  • 关于python的import
  • 帕金森后期吞咽困难:破解难题,重拾生活美味!
  • android 添加USB网卡并配置DNS
  • 【面试经典150】day 8
  • Python -- 网络爬虫
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-5
  • 设计模式4 适配器 (adapter)
  • 《分布式机器学习模式》:解锁分布式ML的实战宝典
  • 【项目实战】HuggingFace初步实战,使用HF做一些小型任务