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. 题目直接给的 :\(1 \leqslant b_i \leqslant a_i\)

  2. 通过 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的更多相关文章

  1. AcWing周赛44

    周赛44 4317. 不同正整数的个数 link:https://www.acwing.com/problem/content/4320/ 我直接set #include <iostream&g ...

  2. 【AcWing】周赛

    A.糖果 题目链接 链接 题目描述 给定三个正整数 a,b,c. 请计算 ⌊a+b+c2⌋,即 a,b,c 相加的和除以 2 再下取整的结果. 输入格式 第一行包含整数 T,表示共有 T 组测试数据. ...

  3. 【AcWing】第 62 场周赛 【2022.07.30】

    AcWing 4500. 三个元素 题目描述 给定一个长度为 \(n\) 的数组 \(r\_1,r\_2,-,r\_n\). 请你找到其中的三个元素 \(r\_a,r\_b,r\_c\),使得 \(r ...

  4. AcWing 第11场周赛题解

    计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...

  5. AcWing 45. 之字形打印二叉树

    地址 https://www.acwing.com/problem/content/description/43/ 题目描述请实现一个函数按照之字形顺序从上向下打印二叉树. 即第一行按照从左到右的顺序 ...

  6. Java多线程系列目录(共43篇)

    最近,在研究Java多线程的内容目录,将其内容逐步整理并发布. (一) 基础篇 01. Java多线程系列--“基础篇”01之 基本概念 02. Java多线程系列--“基础篇”02之 常用的实现多线 ...

  7. L440 无线网卡:由于该设备有问题,Windows 已将其停止(代码 43)

    最近重装了系统,本来用的好好的,结果重启之后突然无线网卡不能用了,设备管理器老是黄色叹号!无线网卡设备状态:由于该设备有问题,Windows 已将其停止. (代码 43).      无线网卡型号:2 ...

  8. AC日记——质因数分解 1.5 43

    43:质因数分解 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n. 对于60% ...

  9. 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 ...

随机推荐

  1. 【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 前言 本文将包括两部分内容: 淘宝 npm 域名即将停止解析 npmmirror 镜像站大重构升级 原淘宝 npm 域名即将停止解析 正如在< ...

  2. 4月13日 python学习总结 组合与封装

    一.组合      解决类与类之间代码冗余问题有两种解决方案:1.继承 2.组合 1.继承:描述的是类与类之间,什么是什么的关系 2.组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的 ...

  3. 实习项目1-串口IP升级调试

    设计目标:设计一个串口IP,要求1:输入时钟频率任意,如0-400M时钟频率:要求2:波特率超过常见的115200,要求达到4M. 设计核心思路:波特率计算公式,divp10x = (10 * fsy ...

  4. 摆烂期的Android学习笔记一

    Android大致分为四层架构1.Linux内核层:提供各种硬件驱动,如显示驱动,音频驱动,相机驱 动,蓝牙驱动.... 2.系统运行库层:通过C/c++库为android地图提供支持 3.应用框架层 ...

  5. C++ bind 和 ref

    #include <functional>#include <iostream> void f(int& n1, int& n2, const int& ...

  6. hashCode()方法的作用?

    hashCode()方法与equals()方法相似,都是来自java.lang.Object类的方法,都允许用户定义的子类重写这两个方法. 一般来说,equals这个方法是给用户调用的,如果你想根据自 ...

  7. Java 中 notify 和 notifyAll 有什么区别?

    notify() 方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有 用武之地.而 notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程 能继续运行.

  8. 并发包下常见的同步工具类(CountDownLatch,CyclicBarrier,Semaphore)

    在实际开发中,碰上CPU密集且执行时间非常耗时的任务,通常我们会选择将该任务进行分割,以多线程方式同时执行若干个子任务,等这些子任务都执行完后再将所得的结果进行合并.这正是著名的map-reduce思 ...

  9. 决策树算法一:hunt算法,信息增益(ID3)

    决策树入门 决策树是分类算法中最重要的算法,重点 决策树算法在电信营业中怎么工作? 这个工人也是流失的,在外网转移比处虽然没有特征来判断,但是在此节点处流失率有三个分支概率更大 为什么叫决策树? 因为 ...

  10. 纯干货数学推导_傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式