补题链接:Here

1514A. Perfectly Imperfect Array

题意:给定长度为 \(n\) 的 \(a\) 序列,请问是否存在子序列积不存在平方根

思路:子序列的话,一个元素也是子序列,那么只要存在某个元素不存在平方根即可

void solve() {
int n;
cin >> n;
bool f = 1;
while (n--) {
int x, tmp;
cin >> x;
tmp = sqrt(x);
if (tmp * tmp != x) f = 0;
}
cout << (!f ? "YES\n" : "NO\n");
}

1514B. AND 0, Sum Big

题面解释了那么多,本质就是 qpow(n,k) % mod

using ll      = long long;
const int mod = 1e9 + 7;
ll qpow(ll a, ll b) {
ll ans = 1;
a %= mod;
for (; b; b >>= 1, a = a * a % mod)
if (b & 1) ans = ans * a % mod;
return ans;
}
void solve() {
ll n, k;
cin >> n >> k;
cout << qpow(n, k) << "\n";
}

1514C. Product 1 Modulo N

题意:

现在,您得到Baby Ehab的第一句话:“给定整数n,找到乘积为1模n的最长子序列 \([1,2,…,n-1]\)。” 请解决问题。

如果可以通过删除某些(可能是全部)元素从a获得b,则序列b是数组a的子序列。 空子序列的乘积等于1。

思路:

首先想到 \(n = 2\) 时,仅有一种情况就是 \(1\)

然后在考虑 \(2\le n\) 时,维护 \(ans\) 。如果 \(i\) 与 \(ans\) 互质则可以加入序列。

最后如果 \(ans = n - 1\) 最后一个数肯定不符合需要删去

int n;
void solve() {
cin >> n;
if (n == 2) {
cout << "1\n1";
return;
}
ll ans = 1;
vector<int> v;
for (int i = 1; i <= n; ++i) {
if (__gcd(n, i) == 1) {
v.push_back(i);
ans = ans * i % n;
}
}
if (ans == n - 1) v.pop_back();
cout << v.size() << "\n";
for (int x : v) cout << x << " ";
}

1514D. Cut and Stick

涉及区间修改查询问题肯定是线段树(树状数组)了

#include <bits/stdc++.h>
using namespace std;
using LL = long long;
constexpr LL mod = 1000000007;
constexpr int maxn = 300000 + 1;
struct Node {
int cur, cnt;
Node operator*(const Node &p) const {
if (cur == p.cur) return {cur, cnt + p.cnt};
if (cnt >= p.cnt) return {cur, cnt - p.cnt};
return {p.cur, p.cnt - cnt};
}
} t[maxn << 2];
int a[maxn];
vector<int> p[maxn];
#define ls (v << 1)
#define rs (ls | 1)
#define tm ((tl + tr) >> 1)
void build(int v, int tl, int tr) {
if (tl == tr)
t[v] = {a[tm], 1};
if (tl < tr) {
build(ls, tl, tm);
build(rs, tm + 1, tr);
t[v] = t[ls] * t[rs];
}
}
Node query(int v, int tl, int tr, int L, int R) {
if (tl >= L and tr <= R) return t[v];
Node res = {0, 0};
if (L <= tm) res = res * query(ls, tl, tm, L, R);
if (R > tm) res = res * query(rs, tm + 1, tr, L, R);
return res;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i += 1) cin >> a[i];
for (int i = 1; i <= n; i += 1) p[a[i]].push_back(i);
build(1, 1, n);
for (int i = 1; i <= q; i += 1) {
int L, R;
cin >> L >> R;
auto v = query(1, 1, n, L, R);
int x = R - L + 1;
int y = v.cur;
int z = upper_bound(p[y].begin(), p[y].end(), R) - lower_bound(p[y].begin(), p[y].end(), L);
cout << max(2 * z - x, 1) << "\n";
}
return 0;
}

Codeforces Round #716 (Div. 2) A ~ D 个人题解的更多相关文章

  1. Codeforces Round #609 (Div. 2)前五题题解

    Codeforces Round #609 (Div. 2)前五题题解 补题补题…… C题写挂了好几个次,最后一题看了好久题解才懂……我太迟钝了…… 然后因为longlong调了半个小时…… A.Eq ...

  2. Codeforces Round #716 (Div. 2), problem: (B) AND 0, Sum Big位运算思维

    & -- 位运算之一,有0则0 原题链接 Problem - 1514B - Codeforces 题目 Example input 2 2 2 100000 20 output 4 2267 ...

  3. Codeforces Round #556 (Div. 2) D. Three Religions 题解 动态规划

    题目链接:http://codeforces.com/contest/1150/problem/D 题目大意: 你有一个参考串 s 和三个装载字符串的容器 vec[0..2] ,然后还有 q 次操作, ...

  4. Codeforces Round #604 (Div. 2) E. Beautiful Mirrors 题解 组合数学

    题目链接:https://codeforces.com/contest/1265/problem/E 题目大意: 有 \(n\) 个步骤,第 \(i\) 个步骤成功的概率是 \(P_i\) ,每一步只 ...

  5. Codeforces Round #624 (Div. 3) F. Moving Points 题解

    第一次写博客 ,请多指教! 翻了翻前面的题解发现都是用树状数组来做,这里更新一个 线段树+离散化的做法: 其实这道题是没有必要用线段树的,树状数组就能够解决.但是个人感觉把线段树用熟了会比树状数组更有 ...

  6. Codeforces Round #677 (Div. 3) E、G题解

    E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...

  7. Codeforces Round#402(Div.1)掉分记+题解

    哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...

  8. Codeforces Round #604 (Div. 2) 练习A,B题解

    A题 链接 思路分析: 因为只需要做到相邻的不相同,利用三个不同的字母是肯定可以实现的, 所以直接先将所有的问号进行替换,比如比前一个大1,如果与后面的冲突,则再加一 代码(写的很烂): #inclu ...

  9. Codeforces Round #599 (Div. 2)的简单题题解

    难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...

  10. Codeforces Round #635 (Div. 2)部分(A~E)题解

    虽然打的是div1,但最后半小时完全处于挂机状态,不会做1C,只有个 \(O(n^3)\) 的想法,水了水论坛,甚至看了一下div2的AB,所以干脆顺便写个div2的题解吧,内容看上去还丰富一些(X) ...

随机推荐

  1. WinForm窗体间传值的方法

    窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 1.公共静态变量:2.使用共有属性:3.使用委托与事件:4.通过构造函数把主窗体传递到从窗体中: 一.通过静态变量特点: ...

  2. 吉特日化MES & HttpClient基础连接已经关闭: 连接被意外关闭

    在吉特日化MES调用某公司AGV平台下发任务的时候,使用HttpClient 进行POST请求,出现如下异常: HttpClient基础连接已经关闭: 连接被意外关闭  , 之前已经使用HTTPCli ...

  3. [NOI online22提高A] 丹钓战

    题目描述 有 \(n\) 个二元组 \((a_i, b_i)\),编号为 1 到 n. 有一个初始为空的栈 SS,向其中加入元素 \((a_i, b_i)\) 时,先不断弹出栈顶元素直至栈空或栈顶元素 ...

  4. 记录一些JDK的新特性~持续更新

    1.record快速定义类 @Test public void testRecord() { /** * JDK16新特性 * * @param start * @param end */ recor ...

  5. 【scikit-learn基础】--『预处理』之 缺失值处理

    数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...

  6. 【源码系列#04】Vue3侦听器原理(Watch)

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位ITer关注点赞收藏 语法 侦听一个或多个响应式数据源,并在数据源变化时调用所给的回调函数 ...

  7. Android WebView 缓存处理

    加载html时,会在data/应用下生成database和cache两个文件夹:请求的url存在webviewcache.db下面,url的内容保存在webviewCache下面, Webview的两 ...

  8. rust 过程宏

    简介 Rust 编程语言里面有两种宏系统,一种是声明宏(Declarative Macros),另一种为过程宏(Procedural Macros).声明宏和过程宏是两种基本上完全不一样的宏系统,编写 ...

  9. Java线程池ThreadPoolExecutor源码解析

    Java线程池ThreadPoolExecutor源码解析 1.ThreadPoolExecutor的构造实现 以jdk8为准,常说线程池有七大参数,通常而言,有四个参数是比较重要的 public T ...

  10. 【Python】【OpenCV】定位二维码

    相较于BarCode,QRCode有明显的特征区域,也就是左上角.右上角.左下角三个"回"字区域,得益于hierarchy中,父子关系的轮廓是连续的(下标),所以这个时候我们就可以 ...