AcWing周赛43
AcWing周赛43
题源:https://www.acwing.com/activity/content/1233/
4314. 三元组
直接暴力做就是了,我一开始还在找规律。。悲
我滴代码
#include <iostream>
#include <algorithm>
using namespace std;
int n, cnt;
int main (){
cin >> n;
for (int i = 1; i <= n; i ++)
for (int j = i; j <= n; j ++){
int k = i^j;
if (k >= j && k <= n && i + j > k && i + k > j)
cnt ++;
}
cout << cnt << endl;
}
4315. 两个数列
就是两个不等式联立,我还傻傻的找规律,笨死了qaq
思路
题目直接给的 :\(1 \leqslant b_i \leqslant a_i\)
通过 sum 表示 : $ s_b - s_a + a_i \leqslant b_i \leqslant s_b - n + 1$
核心过程:
(\(s_i 表示 除b_i外的其他b之和,s_a表示所有a之和,s_表示所有b之和\))
\[由定义得,b_i = s_b - s_i,即 s_i = s_b + b_i\\
\because n - 1 \leqslant s_i \leqslant s_a - a_i\\
\therefore s_b - s_a + a_i \leqslant b_i \leqslant s_b - n + 1
\]更详细的推导:
(字丑请见谅orz毕竟是在电脑上写字)
然后 b_i 的范围就是1. 2. 不等式取交集
我滴代码
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 2e5 + 5;
ll n, sb, sa;
ll a[N];
int main (){
cin >> n >> sb;
for (int i = 1; i <= n; i ++)
cin >> a[i], sa += a[i];
if (n == 1)
cout << a[1] - 1 << endl;
else{
for (int i = 1; i <= n; i ++){
ll l = max (1ll, sb - sa + a[i]), r = min (a[i], sb - n + 1);
//cout << l << ' ' << r << endl;
cout << a[i] - (r - l + 1) << ' ';
}
}
}
4316. 合适数对
思路
考的时候想到用线段树来做,但是我不会QAQ
y总:离散化 + 树状数组 + 二分
鉴于我想不出来,就参考着自己写一遍
代码
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 4e5 + 5;//记得开两倍
ll n, m, s[N], xs[N],tr[N], cnt;
int get (ll x){
ll l = 1, r = cnt;
while (l < r){
ll mid = l + r >> 1;
if (xs[mid] >= x)
r = mid;
else
l = mid + 1;
}
return r;
}//离散化之后就可二分
void add (int x, int y){
for (int i = x; i < N; i += i & (-i))
tr[i] += y;
}
int query (int x){
ll ans = 0;
for (int i = x; i ; i -= i & (-i))
ans += tr[i];
return ans;
}
//均为树状数组板子
int main (){
cin >> n >> m;
xs[++ cnt] = 0, xs[++ cnt] = -m;
for (int i = 1; i <= n; i ++){
int x; cin >> x;
s[i] = s[i - 1] + x;
xs[++ cnt] = s[i], xs[++ cnt] = s[i] - m;
}
sort (xs + 1, xs + cnt + 1);
cnt = unique (xs + 1, xs + cnt + 1) - xs - 1;
//离散化处理
ll ans = 0;
add (get(0), 1);//j - 1会取到 0 的状况
for (int i = 1; i <= n; i ++){
ans += i - query (get (s[i] - m));
add (get(s[i]), 1);
}
cout << ans << endl;
}
AcWing周赛43的更多相关文章
- AcWing周赛44
周赛44 4317. 不同正整数的个数 link:https://www.acwing.com/problem/content/4320/ 我直接set #include <iostream&g ...
- 【AcWing】周赛
A.糖果 题目链接 链接 题目描述 给定三个正整数 a,b,c. 请计算 ⌊a+b+c2⌋,即 a,b,c 相加的和除以 2 再下取整的结果. 输入格式 第一行包含整数 T,表示共有 T 组测试数据. ...
- 【AcWing】第 62 场周赛 【2022.07.30】
AcWing 4500. 三个元素 题目描述 给定一个长度为 \(n\) 的数组 \(r\_1,r\_2,-,r\_n\). 请你找到其中的三个元素 \(r\_a,r\_b,r\_c\),使得 \(r ...
- AcWing 第11场周赛题解
计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...
- AcWing 45. 之字形打印二叉树
地址 https://www.acwing.com/problem/content/description/43/ 题目描述请实现一个函数按照之字形顺序从上向下打印二叉树. 即第一行按照从左到右的顺序 ...
- Java多线程系列目录(共43篇)
最近,在研究Java多线程的内容目录,将其内容逐步整理并发布. (一) 基础篇 01. Java多线程系列--“基础篇”01之 基本概念 02. Java多线程系列--“基础篇”02之 常用的实现多线 ...
- L440 无线网卡:由于该设备有问题,Windows 已将其停止(代码 43)
最近重装了系统,本来用的好好的,结果重启之后突然无线网卡不能用了,设备管理器老是黄色叹号!无线网卡设备状态:由于该设备有问题,Windows 已将其停止. (代码 43). 无线网卡型号:2 ...
- AC日记——质因数分解 1.5 43
43:质因数分解 总时间限制: 1000ms 内存限制: 65536kB 描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n. 对于60% ...
- Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),
Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: sele ...
随机推荐
- Linux上后台保持Terminal交互运行的三种方式:nohub、screen和tmux
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 后台运行 Linux上,如果一个进程需要保持后台运行,尤其是在Linux服务器上,后台运行程序.避免因为SSH连接断开而导致进程停止运行时,该怎么 ...
- 4.监控Redis--单节点
prometheus监控redis需要用到redis_exporter. redis_exporter 项目地址:https://github.com/oliver006/redis_exporter ...
- 详解数据库三种删除方法: delete drop truncate
Delete Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名称 where 列名称=值: 删除所有行:Del ...
- 内网渗透----Linux下信息收集
基础信息 1.系统类型 cat /etc/issue查看系统名称 Lsb-release查看系统名称.版本号 2. 内核版本 uname –a 查看所有信息 ls /root |grep vmlinu ...
- Go 语言 切片的使用(增删改查)
Go 语言 切片的使用(增删改查) 引言Golang 的数组是固定长度,可以容纳相同数据类型的元素的集合.但是当长度固定了,在使用的时候肯定是会带来一些限制,比如说:申请的长度太大会浪费内存,太小又不 ...
- Apache Ranger安装部署
1.概述 Apache Ranger提供了一个集中式的安全管理框架,用户可以通过操作Ranger Admin页面来配置各种策略,从而实现对Hadoop生成组件,比如HDFS.YARN.Hive.HBa ...
- Java的重载以及与重写的区别
一.什么是方法重载 方法的重载就是在同一个类中,有着若干个名字相同的方法.在具体调用这些方法的时候,通过传递参数的不同来调用这些重载方法. 二.为什么需要方法重载 方法名的定义需要做到见名知意,功能类 ...
- KestrelServer详解[3]: 自定义一个迷你版的KestrelServer
和所有的服务器一样,KestrelServer最终需要解决的是网络传输的问题.在<网络连接的创建>,我们介绍了KestrelServer如何利用连接接听器的建立网络连接,并再次基础上演示了 ...
- 数据库连接Database link?
在一个用户下,可以获取到另外的用户下的表的数据,通常在跨数据库时使用. create database link link93 connect to scott identified by tiger ...
- 什么时候使用ConcurrentHashMap?
在问题2中我们看到ConcurrentHashMap被作为故障安全迭代器的一个实例,它允许完整的并发检索和更新.当有大量的并发更新时,ConcurrentHashMap此时可以被使用.这非常类似于Ha ...