题解 CF17201 A~D2
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的更多相关文章
- 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月19日 厦门双十中学NOIP2014模拟D2 T1 采药人的切题规则
Made by 退役的OIer 第一次写博客,写得不好 or 不清楚的可以 在下方留言,我会尽量改进的! 好啦~~~回到正题,题面见传送门 [问题描述] 采药人最近在认真切题,但回旋的转盘时常在眼前浮 ...
- Codeforces Round #738 (Div. 2) D2题解
D2. Mocha and Diana (Hard Version) 至于D1,由于范围是1000,我们直接枚举所有的边,看看能不能加上去就行,复杂度是\(O(n^2logn)\).至于\(n\)到了 ...
- 1206 雅礼集训D2题解
A \(two\) \(1.1\) \(Description\) 你有两棵有根树,每棵各有 n 个顶点.让我们用整数 1 到 n 给每棵树的顶点编 号.两棵树的根都是顶点 1.第一棵树的边都都是蓝色 ...
- 【题解】 2月19日 厦门双十中学NOIP2014模拟D2 T2 采药人接水果
[问题描述] 采药人虽然 AFO(SU),但他在闲暇的时候还是可以玩一玩接水果(cat)的.但他渐渐发现 cat 好像有点太弱智.于是他不想浪费他的智商,于是决定写一个程序帮他玩. cat 是这样玩的 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- [Noip2016]蚯蚓 D2 T2 队列
[Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...
- [NOIP2016]愤怒的小鸟 D2 T3 状压DP
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...
- [题解]noip2016普及组题解和心得
[前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...
- [NOIP2015]运输计划 D2 T3 LCA+二分答案+差分数组
[NOIP2015]运输计划 D2 T3 Description 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有 ...
随机推荐
- 第2-4-9章 规则引擎Drools实战(2)-信用卡申请
目录 9.2 信用卡申请 9.2.1 计算规则 9.2.2 实现步骤 9.2 信用卡申请 全套代码及资料全部完整提供,点此处下载 本小节我们需要通过Drools规则引擎来根据规则进行申请人的合法性检查 ...
- JS笔记合集之对象
对象 对象基本使用 对象是JS中的一种复合数据类型,它相当于一个容器,在对象中可以存储各种不同类型的数据 而基本数据类型(原始值)只能存储一些简单的数据,如: 语法: 原始创建对象: let obj ...
- nginx压力测试及限速
测试工具:Apache ab windows安装教程:https://www.cnblogs.com/laijinquan/p/14694655.html 64位下载地址:https://www.ap ...
- 一个小时,200行代码,手写Spring的IOC、DI、MVC
一.概述 配置阶段:主要是完成application.xml配置和Annotation配置. 初始化阶段:主要是加载并解析配置信息,然后,初始化IOC容器,完成容器的DI操作,已经完成HandlerM ...
- Blazor组件自做十三: 使用 Video.js 在 Blazor 中播放视频
Video.js 是一个具有大量功能的流行的视频和音频 JavaScript 库,今天我们试试集成到 Blazor . Blazor VideoPlayer 视频播放器 组件 示例 https://b ...
- 基于Unet+opencv实现天空对象的分割、替换和美化
传统图像处理算法进行"天空分割"存在精度问题且调参复杂,无法很好地应对云雾.阴霾等情况:本篇文章分享的"基于Unet+opencv实现天空对象的分割.替换和 ...
- 8、ThreadPoolTaskExecutor线程并发
一.线程池的优点: 1.降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗. 2.提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 3.提高线程的可管理性.线程是 ...
- 【转载】【WinAPI】LockWindowUpdate的函数的用法
DelPhi LockWindowUpdate的函数的用法 Application.ProcessMessages; LockWindowUpdate(Self.Handle); //锁住当前窗口 L ...
- python之路32 网络并发线程方法 线程池 协程
多进程实现TCP服务端并发 服务端: import socket from multiprocessing import Process def get_server(): server = sock ...
- 抽奖动画 - 播放svga动画
svga动画 本文介绍的动画不是css,js动画,是使用插件播放svga文件. 1.需求 UI同学在做一个春节活动,活动中需要有个开场动画,原本想的简单,不涉及接口调用逻辑,就直接用做一个gif图片由 ...