Educational Codeforces Round 16 A B C E

做题太久也有点累了..难题不愿做 水题不愿敲..床上一躺一下午..离下一场div2还有点时间 正好有edu的不计分场 就做了一下玩玩了

D是个数学题 F是个AC自动机 都没看明白 留待以后补

A 给出一个8x8棋盘中国王的位置 问国王有多少移动方式 判断输出就可以了

B 给出n个x轴上的数 找出一个数 使其到其他所有数的距离和最小 输出这个数的值

其实这道题是见过的 想法是 先排序 维护一个res 初始值是从最小的数到其他数的距离和 之后每次向右移动 这时候 res会减去右边点数*两点距离差 加上左边点数*两点距离差 这样 由于距离差必定是一个整数 所以res其实是一个先减后增的 所以当res开始变大的时候就可以break了 但是加break会错..去掉就对了 不过用时也比较多 800+ms擦边过

其实可以看到的是 res先减后增 它每次的变化 是(左边点数-右边点数)*距离差 所以转折的时候 应该是变化为0或突然为正 于是直接可以得出 奇数的时候 是中间的 偶数的时候 是中间偏左的 判断一下就可以了

C 给出一个n*n矩阵 n为奇数 在其中填入1-n*n的不重复的数 要求每一行每一列以及两条主对角线的和都为奇数

可以看到其实填入的数所提供的属性只有奇偶而非大小 一开始准备dfs小数据找规律 但是出了一个参数写错的bug 写了一个小时也没写出来 第二天在纸上找规律 发现一个正方形中 应该放奇数的应该是中间的偏45度n*sqrt(2)正方形 控制完奇偶之后填数就可以了

E 要求从一个空文本中得出一个长n的字符串 两种操作 1 使用x的时间插入/删除一个字符 2 使用y的时间复制当前所有文本并粘贴

比赛后做的 看到了标签中的DP 也很好想 每个点都有自己的责任 被前一个点或者后一个点优化 去优化前一个点 后一个点 *2的点

如果一个点*2之后越过n了 那么如果n以及n之前的由这个操作而受益 那么只能是通过之后不断的删减而做到 那么每次当*2越过n之后 应当尝试去优化的是n

搜索应当是不可做的 因为我们并不知道 n状态会被哪一个状态给再次优化 所以我们应当让所有的状态都渐渐消失 在n达到1e7的情况下 大概是不可以的

时间: 2024-10-13 04:14:26

Educational Codeforces Round 16 A B C E的相关文章

Educational Codeforces Round 16

A. King Moves water.= =. 1 #include <cstdio> 2 int dx[] = {0,0,1,1,1,-1,-1,-1}; 3 int dy[] = {1,-1,0,1,-1,0,1,-1,0}; 4 #define judge(x,y) x >= 1 && x <= 8 && y >= 1 && y <= 8 5 int main() 6 { 7 char t; 8 int x, y,

Educational Codeforces Round 16 E. Generate a String

题解: 简单的递推 n为偶--->n/2 n为奇---->n/2,n/2+1 代码: #include<bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define se second #define fs first #define LL long long #define CLR(x) memset(x,0,sizeof x) #define MC(x,y) memcp

Codeforces 710 C. Magic Odd Square(构造)——Educational Codeforces Round 16

传送门 Find an n?×?n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd. Input The only line contains odd integer n(1?≤?n?≤?49). Output Print n lines with n integers. All the integers should be dif

Educational Codeforces Round 16 B

Description You are given n points on a line with their coordinates xi. Find the point x so the sum of distances to the given points is minimal. Input The first line contains integer n (1 ≤ n ≤ 3·105) — the number of points on the line. The second li

Educational Codeforces Round 16 C

Description Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd. Input The only line contains odd integer n (1 ≤ n ≤ 49). Output Print n lines with n integers. All the integers shou

Educational Codeforces Round 21 G. Anthem of Berland(dp+kmp)

题目链接:Educational Codeforces Round 21 G. Anthem of Berland 题意: 给你两个字符串,第一个字符串包含问号,问号可以变成任意字符串. 问你第一个字符串最多包含多少个第二个字符串. 题解: 考虑dp[i][j],表示当前考虑到第一个串的第i位,已经匹配到第二个字符串的第j位. 这样的话复杂度为26*n*m*O(fail). fail可以用kmp进行预处理,将26个字母全部处理出来,这样复杂度就变成了26*n*m. 状态转移看代码(就是一个kmp

Educational Codeforces Round 26 D. Round Subset(dp)

题目链接:Educational Codeforces Round 26 D. Round Subset 题意: 给你n个数,让你选其中的k个数,使得这k个数的乘积的末尾的0的个数最大. 题解: 显然,末尾乘积0的个数和因子2和因子5的个数有关. 然后考虑dp[i][j]表示选i个数,当前因子5的个数为j时,能得到因子2最多的为多少. 那么对于每个数,记录一下因子2和5的个数,做一些01背包就行了. 1 #include<bits/stdc++.h> 2 #define mst(a,b) me

Educational Codeforces Round 23 F. MEX Queries(线段树)

题目链接:Educational Codeforces Round 23 F. MEX Queries 题意: 一共有n个操作. 1.  将[l,r]区间的数标记为1. 2.  将[l,r]区间的数标记为0. 3.  将[l,r]区间取反. 对每个操作,输出标记为0的最小正整数. 题解: hash后,用线段树xjb标记一下就行了. 1 #include<bits/stdc++.h> 2 #define ls l,m,rt<<1 3 #define rs m+1,r,rt<&l

Educational Codeforces Round 23 D. Imbalanced Array(单调栈)

题目链接:Educational Codeforces Round 23 D. Imbalanced Array 题意: 给你n个数,定义一个区间的不平衡因子为该区间最大值-最小值. 然后问你这n个数所有的区间的不平衡因子和 题解: 对每一个数算贡献,a[i]的贡献为 当a[i]为最大值时的 a[i]*(i-l+1)*(r-i+1) - 当a[i]为最小值时的a[i]*(i-l+1)*(r-i+1). 计算a[i]的l和r时,用单调栈维护.具体看代码,模拟一下就知道了. 然后把所有的贡献加起来.