Codeforces Edu Round 48 A-D
A. Death Note
简单模拟,可用\(\%\)和 \(/\)来减少代码量
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 200010;
int n, m, a[N], cnt = 0, tot = 0;
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){
scanf("%d", a + i);
cnt = (tot + a[i]) / m;
tot = (tot + a[i]) % m;
printf("%d ", cnt);
}
}
B - Segment Occurrences
预处理\(A、B\)的\(Hash\)表,可以将时间复杂度降到\(O(qn)\)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef unsigned long long ULL;
const int N = 1010, B = 221;
int n, m, q, len;
char s[N], t[N];
ULL P[N], S[2][N];
ULL inline get(int l, int r, int c){
return S[c][r] - S[c][l - 1] * P[r - l + 1];
}
int main(){
scanf("%d%d%d%s%s", &n, &m, &q, s + 1, t + 1);
P[0] = 1;
for(int i = 1; i <= n; i++){
P[i] = P[i - 1] * B;
S[0][i] = S[0][i - 1] * B + s[i];
S[1][i] = S[1][i - 1] * B + t[i];
}
while(q--){
int l, r, res = 0; scanf("%d%d", &l, &r);
for(int i = l; i <= r - m + 1; i++)
if(get(i, i + m - 1, 0) == get(1, m, 1))res++;
printf("%d\n", res);
}
return 0;
}
C - Vasya And The Mushrooms
硬核模拟 + 前缀和处理。要不重复的绕完 \(2 * N\) 的格子,从左上角出发,要么\(S\)形绕几次然后绕大圈,要么绕整个的一圈。
可以枚举绕\(S\)格子的次数,\(S\)的部分可以前缀和计算,系数是一样的,后面的部分计算比较复杂。

第一种情况,前面的部分绕了了几个完整的 \(U\)。要从上方出发。
求(\(now\)代表\(U\)字结束(包括)的列数):
上半部分:$\sum_{i=now + 1}^n a[0][i] * (i * 2) $
我们发现,数列后缀和的后缀和是:
\(sufx[j] = \sum_{i = j} ^ n a[i] * (i - j + 1) = a[j] * 1 + a[j + 1] * 2 + … + a[n] * (n - j + 1)\)
故,把\(sufx[now + 1]\)再加上\(\sum_{i = j} ^ n a[i] * (i * 2 - 1)\),即为答案,后面这部分可用后缀和\(O(1)\)计算。
下半部分:$\sum_{i=now + 1}^n a[1][i] * (n + (n - i + 1)) $
我们想要这样的东西:
\(a[i] * 3 + a[i + 1] * 2 + a[i + 2] * 1\)
这个看上去很像\(Hash\)表的原理,只不过\(b = 1\),可以用hash表的思想在\(O(1)\) 求出这个,然后在用后缀和加上系数既可。

对于第二种情况,只不过将上下颠倒,我们互换一下处理方式既可。
预处理前缀和、后缀和和枚举\(S\)的时间都为\(O(n)\),每次求解只需\(O(1)\),故总共复杂度为$ O(n) $的
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
typedef long long LL;
const int N = 300010;
//s形的预处理
int n, a[2][N];
LL pre[2][N], s[2][N], suf[2][N], sum[N], prex[2][N], sufx[2][N], ans = -1;
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d", &a[0][i]);
for(int i = 1; i <= n; i++) scanf("%d", &a[1][i]);
int S = n >> 1, tot = 0;
for(int i = 1; i <= S * 2; i+=2){
s[0][i] = (LL)a[0][i] * (tot++); s[1][i] = (LL)a[1][i] * (tot++);
s[1][i + 1] = (LL)a[1][i + 1] * (tot++); s[0][i + 1] = (LL)a[0][i + 1] * (tot++);
}
for(int i = 0; i < 2; i++)
for(int j = 1; j <= n; j++){
pre[i][j] = pre[i][j - 1] + a[i][j];
prex[i][j] = prex[i][j - 1] + pre[i][j];
}
for(int j = 0; j < 2; j++)
for(int i = n; i >= 1; i--){
suf[j][i] = suf[j][i + 1] + a[j][i];
sufx[j][i] = sufx[j][i + 1] + suf[j][i];
}
for(int i = 0; i <= n; i++){
LL tot = sum[i] = sum[i - 1] + s[0][i] + s[1][i];
//如果是奇数,则在下面出发
if(i % 2){
tot += (n + i - 1) * suf[0][i + 1] + (prex[0][n] - prex[0][i] - (n - i) * pre[0][i]);
tot += (i * 2 - 1) * suf[1][i + 1] + (sufx[1][i + 1]);
}else{
//从上面出发
tot += (i * 2 - 1) * suf[0][i + 1] + (sufx[0][i + 1]);
tot += (n + i - 1) * suf[1][i + 1] + (prex[1][n] - prex[1][i] - (n - i) * pre[1][i]);
}
ans = max(ans, tot);
}
printf("%lld", ans);
return 0;
}
D - Vasya And The Matrix
参考题解。 存在性参考异或的性质,\(x\) \(xor\) $ x = 0$ 。
考虑构造一个合理的序列,只需将除了最后一行,最后一列的所有数添上\(0\)。
除右下角外其他数照搬数据,右下角用异或尝试既可。
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 110;
int n, m, a[N], b[N], ans = 0;
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++) scanf("%d", a + i), ans ^= a[i];
for(int i = 1; i <= m; i++) scanf("%d", b + i), ans ^= b[i];
if(ans != 0)puts("NO");
else{
puts("YES");
ans = b[m];
for(int i = 1; i < n; i++){
for(int j = 1; j < m; j++)
printf("0 ");
printf("%d\n", a[i]);
ans ^= a[i];
}
b[m] = ans;
for(int i = 1; i <= m; i++) printf("%d ", b[i]);
}
return 0;
}
Codeforces Edu Round 48 A-D的更多相关文章
- Educational Codeforces Round 48 (Rated for Div. 2) CD题解
Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- Codeforces Beta Round #62 题解【ABCD】
Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #13 C. Sequence (DP)
题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...
- CodeForces Global Round 1
CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...
- Codeforces Global Round 1 - D. Jongmah(动态规划)
Problem Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
随机推荐
- 异常记录-Dialog样式踩坑
好久没记录文档了,拖了老半个月,终于空下来时间,为了避免以后踩坑,必须记录记录. 背景: 为activity设置样式为弹窗activity 异常一: activity设置style后,布局不能够正常显 ...
- Python_面试题汇总【正在整理中...】
1.十大算法 阶乘 冒泡 1 #使用递归实现阶乘 2 3 def f(n): 4 if n ==1: 5 return 1 6 else: 7 return n*(f(n-1)) 使用递归实现阶乘 1 ...
- python-Requests模块的使用
1. Requests简介 Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能,那为什么R ...
- CTF-流量分析笔记
---恢复内容开始--- 前言 做流量分析很长时间了但是一直没有系统的去总结过这类题目的做法和思路以及wireshark的使用方法,这次做题的时候突然发现了一个总结的特别好的博客,因此想趁机做个笔记总 ...
- 在Guitar Pro中如何模拟电子管音响
在这篇文章中,我们将使用Guitar Pro 7中的功能和工具,完成构建一个真实的电子管吉他音箱调音过程. 虽然Guitar Pro是用于创建吉他乐谱的工具,但在新版本中(主要是6和7)它也有一些模拟 ...
- 教你用Vegas Pro制作视频的遮罩转场特效
很多小伙伴在接触了Vegas之后,都想利用Vegas制作出各种酷炫的特效.小编也是一样. 今天,小编就和大家分享一下,小编近期学会的遮罩转场特效. 首先想要制作遮罩转场效果,需要的素材有:至少两个图片 ...
- 使用iMindMap思维导图软件的活动策划模板制定策划方案
活动策划不单单是一个头脑风暴的过程,更是一个整合各项资源.条件的过程.因此我们可以合理的使用思维导图软件来做活动策划.iMindMap(Windows系统)思维导图软件提供了快捷而方便的活动策划模板, ...
- WPF有关控件和模板样式设计的微软官方文档
说明 如果你正在使用WPF开发应用程序,相信这篇博客会对你有用.希望你能认真的阅读 正文 此文主要以Button为例进行介绍此文档的组成部分. Button Parts Button控件没有任何命名的 ...
- C# 9.0新特性详解系列之三:模块初始化器
1 背景动机 关于模块或者程序集初始化工作一直是C#的一个痛点,微软内部外部都有大量的报告反应很多客户一直被这个问题困扰,这还不算没有统计上的客户.那么解决这个问题,还有基于什么样的考虑呢? 在库加载 ...
- sqli-labs-master less05 及 Burp Suite暴力破解示例
一.首先测试显示内容 例:http://localhost/sqli-labs-master/Less-5/?id=1 http://localhost/sqli-labs-master/Less-5 ...