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

Codeforces Round 1019 (Div. 2) ABC

A 模拟

思路

数组y是不同的,且所以xi * yi 相同,只有x数组全不同才可以满足要求

代码


LL n,m,k;void solve() 
{map<LL,LL> mp;cin >> n;for (int i = 1;i <= n;i ++){LL x;cin >> x;mp[x] ++;}cout << mp.size() << endl;
}

B 思维 !

思路


因为初始在0的位置,所以先在每个串前添加0 (方便统计原本的操作次数)
先统计原本需要的操作的次数,如果a[i]!=a[i - 1]不同 就+2(切换当前数字并按一下),如果a[i]==a[i-1]就+1(直接按一下)

随后考虑反转字串以减少操作次数,首找到第一个不同的数字,下标记为L,找一个后面第一个满足a[R] != a[L] 的R,且R不是最后一个数字,这样操作可使得,区间[L,R]反转后使得操作次数-2
如果R是最后一个数字时,[L,R]反转后只能使得操作次数-1,(因为R后面没有数字,使得不需要切换,直接按一下)

代码

const int N = 2e5 + 10;LL n,m,k;char a[N];void solve() 
{//1101[0100100110111]00//1101[1110110010010]00//1110010010011011100//2112122122121221121 29//1101010010011011100//2122222122121221121 31//100 //221 5//001//112 4//10101//22222 10//01101//12122 8cin >> n;for (int i = 1;i <= n;i ++) cin >> a[i];LL cnt = 0;a[0] = '0';for (int i = 1;i <= n;i ++){if (a[i] != a[i - 1]) cnt += 2;else cnt ++;}// cout << cnt << "==" << endl;for (int i = 1;i <= n - 1;i ++){if (a[i] != a[i - 1]){int l = i;for (int r = l + 1;r <= n;r ++){if (a[r] != a[l] &&  r != n  && a[r] != a[r + 1]){cout << cnt - 2 << endl;return;        }if (a[r] != a[l] && r == n){cout << cnt - 1 << endl;return;}}}}cout << cnt << endl;
}

C 贪心+思维 !!

题目

是否存在l,r使得   med(med(a1,a2,…,al),med(al+1,al+2,…,ar),med(ar+1,ar+2,…,an))≤k.

med为中位数

思路

代码

const int N = 3e5 + 10;LL n,m,k;
LL a[N],b[N];bool check(LL a[])
{LL cur = 0;map<LL,LL> mp;for (int i = 1;i < n;i ++)//i < n的原因 :要留出一个数字作为第三块{cur += a[i];if (cur == 1 && (mp[0] || mp[1])) return true;if (cur == 0 && mp[0]) return true;if (cur >= 2) return true;mp[cur] ++;}return false;
}void solve()
{cin >> n >> k;for (int i = 1;i <= n;i ++) cin >> a[i];for (int i = 1;i <= n;i ++){a[i] = (a[i] <= k ? 1 : -1);}LL l = 2,cur = a[1];while(cur < 0 && l <= n) cur += a[l ++];// cout << l << endl;LL r = n - 1;cur = a[n];while(cur < 0 && r >= 1) cur += a[r --];// cout << r << endl;if (l <= r)//第一种情况{cout << "YES" << endl;return;}for (int i = 1;i <= n;i ++) b[i] = a[n + 1 - i];//第2,3中情况,本质一样,只不过顺序反转一下if (check(a) || check(b)){cout << "YES" << endl;return;}cout << "NO" << endl;}

 

http://www.xdnf.cn/news/150913.html

相关文章:

  • Vue2升级到Vue3
  • 模方ModelFun是什么?如何安装?
  • C语言程序环境和预处理详解
  • 8.ArkUI Stack的介绍和使用
  • C语言:位段
  • SAP Predictive Analytics The Comprehensive Guide
  • LangChain LCEL表达式语言简介
  • SAP接口超时:对 FOR ALL ENTRIES IN 的优化
  • MySQL安装实战分享
  • 数据加密技术:从对称加密到量子密码的原理与实战
  • 【重磅】敲敲云桌面版正式发布!
  • 电力系统最小惯性常数解析
  • 新闻速递丨Altair 与 Databricks 达成合作,加速数据驱动型创新
  • 【python】如何将python程序封装为cpython的库
  • PowerShell脚本实现|从文件夹动画序列中均匀选取关键帧(保留首尾帧)
  • 【Java开发规范及漏洞扫描】
  • 对比2款国产远控软件,贝锐向日葵更优
  • 嵌入式:Linux系统应用程序(APP)启动参数及其规则详解
  • 感知古今:探秘古代传感器的奇妙世界
  • STUN协议 与 TURN协议
  • 如何在SOLIDWORKS中高效管理文件属性?
  • 基于ssm的同城上门维修平台管理系统(源码+数据库)
  • 基于STM32、HAL库的ADS1220IPWR模数转换器ADC驱动程序设计
  • 什么是优质的静态IP?以及如何选择优质的静态IP?
  • redis 数据类型新手练习系列——Hash类型
  • script中async与defer区别
  • Java基本概念
  • C语言标准库函数setlocale用法详解
  • Prometheus中部署Alertmanager
  • 全面解析 Spring 依赖注入:@Autowired、@Inject 与 @Resource 深度剖析