A

先约分,显然答案必然是 0 或 1 或 2

相等为 0,主要考虑 1 或 2 的情况。

假设 \(a>b\),令 \(c = a/b\),如果 \(c\) 为整数答案为 \(1\),否则为 \(2\)。

特别的要特判 0。

//SIXIANG
#include <iostream>
#define MAXN 100000
#define int long long
#define QWQ cout << "QWQ" << endl;
using namespace std;
int gcd(int n, int m) {
if(!m) return n;
else return gcd(m, n % m);
}
bool judge(int a, int b, int c, int d) {
if(a * d > b * c) return 1;
else return 0;
}
signed main() {
int T; cin >> T;
while(T--) {
int a, b, c, d;
cin >> a >> b >> c >> d;
int d1 = gcd(a, b), d2 = gcd(c, d);
a /= d1, b /= d1, c /= d2, d /= d2;
if(a == c && b == d) {
cout << 0 << endl;
continue;
}
if((a == 0 || c == 0) && (a != c)) {
cout << 1 << endl;
continue;
}
if(!judge(a, b, c, d)) swap(a, c), swap(b, d);
if(a * d % (c * b) != 0) cout << 2 << endl;
else cout << 1 << endl;
}
}

B

通过大眼观察法,我们可以得到是最大值+次大值-最小值-次小值。

证明应该显然罢,懒得写了 QAQ

//SIXIANG
#include <iostream>
#include <algorithm>
#define MAXN 100000
#define QWQ cout << "QWQ" << endl;
using namespace std;
int a[MAXN + 10];
int main() {
int T, n; cin >> T;
while(T--) {
cin >> n;
for(int p = 1; p <= n; p++) cin >> a[p];
sort(a + 1, a + n + 1);
cout << a[n] + a[n - 1] - a[1] - a[2] << endl;
}
}

我知道这是幼儿园小朋友的 nt 写法,但是我就是幼儿园小朋友~

C

一点一点来

除了第一次,我们每次肯定只会 ban 掉一个 1。

我们第一次枚举一下每个 L 里面最小的 1 数量,然后 1 数量减去这个加一即可。

//SIXIANG
#include <iostream>
#define MAXN 100000
#define QWQ cout << "QWQ" << endl;
using namespace std;
char ch[1145][1145];
int main() {
int T, n, m; cin >> T;
while(T--) {
cin >> n >> m;
int cnt = 0, minn = 0x7f7f7f7f;
for(int p = 1; p <= n; p++) {
for(int i = 1; i <= m; i++) {
cin >> ch[p][i];
if(ch[p][i] == '1') cnt++;
}
}
for(int p = 1; p <= n; p++) {
for(int i = 1; i <= m; i++) {
int a = (ch[p][i + 1] == '1'), b = (ch[p + 1][i] == '1');
int c = (ch[p - 1][i] == '1'), d = (ch[p][i - 1] == '1');
int e = (ch[p][i] == '1');
if(p > 1 && i > 1 && e + c + d) minn = min(minn, e + c + d);
if(p > 1 && i < m && e + c + a) minn = min(minn, e + c + a);
if(p < n && i > 1 && e + b + d) minn = min(minn, e + b + d);
if(p < n && i < m && e + b + a) minn = min(minn, e + b + a);
}
}
if(!cnt) cout << cnt << endl;
else cout << cnt - minn + 1 << endl;
}
}

D1

\(f_i\) 为以 \(i\) 结尾的最长 \(b\)。

则显然有 \(f_i = \max\{f_j\} + 1(a_j \operatorname{xor} i < a_i \operatorname{xor} j, j < i)\)。

下面看了题解,因为真的没有见过这个东西的处理 QAQ

首先有 \(\begin{cases}i - a_j\le a_j \operatorname{xor} i\\ a_i\operatorname{xor} j \le a_i + j\end{cases}\)

故 \(i - a_j \le a_i + j\),故 \(i - j\le a_i + a_j\),即 \(i - j\le 400\)

这个是真的厉害,之前没有见过这样的操作 QAQ

//SIXIANG
#include <iostream>
#include <cstring>
#define MAXN 300000
#define QWQ cout << "QWQ" << endl;
using namespace std;
int a[MAXN + 10], f[MAXN + 10];
int main() {
int T;
cin >> T;
while(T--) {
int n, maxn = 0; cin >> n;
for(int p = 1; p <= n; p++) f[p] = 1;
for(int p = 1; p <= n; p++) cin >> a[p];
for(int p = 1; p <= n; p++) {
for(int j = max(p - 400, 1); j < p; j++) {
if((a[j] ^ (p - 1)) < (a[p] ^ (j - 1)))
f[p] = max(f[p], f[j] + 1);
}
maxn = max(maxn, f[p]);
}
cout << maxn << endl;
}
}

D2

01trie,懒得打,待填坑

题解 CF17201 A~D2的更多相关文章

  1. CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解

    A : Be Positive 题目地址:https://codeforces.com/problemset/problem/1130/A 题解:让你求是否满足一个d使得数列长为n的a数组的每个数除以 ...

  2. 【题解】 2月19日 厦门双十中学NOIP2014模拟D2 T1 采药人的切题规则

    Made by 退役的OIer 第一次写博客,写得不好 or 不清楚的可以 在下方留言,我会尽量改进的! 好啦~~~回到正题,题面见传送门 [问题描述] 采药人最近在认真切题,但回旋的转盘时常在眼前浮 ...

  3. Codeforces Round #738 (Div. 2) D2题解

    D2. Mocha and Diana (Hard Version) 至于D1,由于范围是1000,我们直接枚举所有的边,看看能不能加上去就行,复杂度是\(O(n^2logn)\).至于\(n\)到了 ...

  4. 1206 雅礼集训D2题解

    A \(two\) \(1.1\) \(Description\) 你有两棵有根树,每棵各有 n 个顶点.让我们用整数 1 到 n 给每棵树的顶点编 号.两棵树的根都是顶点 1.第一棵树的边都都是蓝色 ...

  5. 【题解】 2月19日 厦门双十中学NOIP2014模拟D2 T2 采药人接水果

    [问题描述] 采药人虽然 AFO(SU),但他在闲暇的时候还是可以玩一玩接水果(cat)的.但他渐渐发现 cat 好像有点太弱智.于是他不想浪费他的智商,于是决定写一个程序帮他玩. cat 是这样玩的 ...

  6. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  7. [Noip2016]蚯蚓 D2 T2 队列

    [Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...

  8. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  9. [题解]noip2016普及组题解和心得

    [前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...

  10. [NOIP2015]运输计划 D2 T3 LCA+二分答案+差分数组

    [NOIP2015]运输计划 D2 T3 Description 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有 ...

随机推荐

  1. day22 存储过程 & 游标 & 事务

    存储过程 是一种在数据库中存储复杂程序(复杂sql语句),以便外部程序调用的一种数据库对象 存储过程是为了完成特定功能的sql语句集,经编译创建并保存在数据库中,用户可以通过指定存储过程的名字并给定参 ...

  2. 【每日一题】【动态规划,递推式与公共子串的区别】2022年1月31日-NC92 最长公共子序列(二)

    描述 给定两个字符串str1和str2,输出两个字符串的最长公共子序列.如果最长公共子序列为空,则返回"-1".目前给出的数据,仅仅会存在一个最长的公共子序列 方法1: impor ...

  3. TCPView工具

    TCPView:一个查看端口和线程的小工具.(不需安装) 主界面: 启动程序之后,你就发现TCPView将你目前在使用的所有进程都列举出来了,并时不时的会用红.黄.绿三种颜色标注某些进程: 红色代表该 ...

  4. python 之用户自定义函数

    什么是函数? 函数无非就是将代码块进行封装,想用的时候拿来用,减少代码量,提高效率. 函数的定义 定义一个函数需要: 1.def关键字,def 后面空一格输入函数名称,函数命名时尽量简短,且具有意义, ...

  5. python循环结构之while循环

    在python中,除了for循环,还有一个while循环 for循环:循环次数是明确了的 while循环:循环次数不确定,循环停止条件由用户自定义 # while语句结构 while 判断条件: 执行 ...

  6. 在windows上构建OpenCascade

    基于作者QuaoarsWorkshop的视频Open Cascade Lessons,讲的非常详细,观看需要魔法 什么是OCCT?. 首先,Open CASCADE Technology SDK 是一 ...

  7. ssm——mybatis整理

    目录 1.mybatis框架概述 2.直接使用jdbc连接数据库带来的问题 3.mybatis连接池 3.1.mybatis连接池yml配置 3.2.mybatis连接池xml配置 4.一个简单的my ...

  8. UVA12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang) 代码

    #include <bits/stdc++.h> #define int long long #define judge(a,func) case a:func();break; usin ...

  9. 工作这么多年,我总结的数据传输对象 (DTO) 的最佳实践

    前言 数据传输对象 (DTO) 是一种设计模式,常用于软件开发不同层或者不同系统之间传输数据.DTO 的主要目的是封装数据并防止它被其他层或系统直接访问或修改.通过遵循一组最佳实践,开发人员可以确保他 ...

  10. angular---路由传参后点击获取详情点开自动加载详情