题面: 传送门 题目描述: 要求用十字星星来画题目给出的"星"图.如果不能用十字星星来画"星"图,输出-1:如果能,则输出要在图的哪个位置画相应大小的十字星图.   题目分析: 这道题纯属模拟题,按照要求画就好了.我的画法:根据题目的"星"图用十字星图在另一个二维数组画"星"图.拿第一个样例来说:当遍历到第一颗星星,我就会检查是否能用十字星星去按题目给出的"星图"填充: 显然,第一个星星不能用十字星星去画图…
Description: 定义一个星星由 '*' 组成,形状为一个对称的“十”字型,大小为星星 1/2 的横长(或纵长)减一(如题目中的图).给出一个 n*m 的图,判断是不是每一个 '*' 都能属于某个星星,如果能则输出所有星星的位置及大小(各个星星间可以出现重叠甚至重合),否则输出-1. Solution: f[i][j][k] 代表在当前位置 (i, j) 在 k 方向有多少个连续的星号 '*'(1代表上,2代表下,3代表左,4代表右). 枚举每一个星号(i, j),每一个星号上取 f[i…
E1. Stars Drawing (Easy Edition) time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output A star is a figure of the following type: an asterisk character '*' in the center of the figure and four ra…
一.题目 D1. Submarine in the Rybinsk Sea (easy edition) 二.分析 简单版本的话,因为给定的a的长度都是定的,那么我们就无需去考虑其他的,只用计算ai的值在每个位置的贡献即可. 因为长度是定的,如果ai在前,那么对所有的a的贡献就是在偶数位的贡献值然后乘以n即可. 如果ai在后,那么对所有ai的贡献就是在奇数位的贡献值然后乘以n. 将两种情况合并,其实就是求ai在每个位置下的贡献,然后乘以n. 时间复杂度是$O(n)$ 三.AC代码 1 #incl…
https://codeforc.es/contest/1195/problem/D1 给\(n\)个等长的十进制数串,定义操作\(f(x,y)\)的结果是"从\(y\)的末尾开始一个一个交替放得到的数",求\(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f(a_i,a_j)\) 很明显每个第\(k\)位(从1开始)都会恰好在\(2k\)和\(2k-1\)位各贡献\(n\)次.预处理出\(pow10\)然后暴力就可以了. #include<…
A. Appleman and Easy Task time limit per test  1 second memory limit per test  256 megabytes input  standard input output  standard output Toastman came up with a very easy task. He gives it to Appleman, but Appleman doesn't know how to solve it. Can…
题目链接: https://codeforces.com/contest/1163/problem/C2 题意: 给出$n$个点,任意两点连接一条直线,求相交直线的对数 数据范围: $1 \le n \le 10^3$ 分析: 先建立所有的直线,可以把直线定义成$ax+ by=c$,但是需要把$a$和$b$的大小化简成最小,保证直线的唯一性 $k=\frac{y_{1}-y_{2}}{x_{1}-x_{2}}$,上下化简,再用点斜式构造$ax+ by=c$ ac代码: #include<bits…
output standard output The only difference between easy and hard versions is the number of elements in the array. You are given an array aa consisting of nn integers. In one move you can choose any aiai and divide it by 22 rounding down (in other wor…
<题目链接> 题目大意: 给定一棵树,树上的点有0,1,2三中情况,0代表该点无色.现在需要你将这棵树割掉一些边,使得割掉每条边分割成的两部分均最多只含有一种颜色的点,即分割后的两部分不能1,2点夹杂(0的点数可以任意),问你最多能有几条这样的割点. 解题分析: dfs求解出所有点以自己为根的子树 i 中1,2,节点的个数num1,num2,然后根据母树与子树之间的num1,num2值做差,能够得到 i 的另一部分的1,2,节点个数,然后再判断这两部分是否符合条件即可. #include &l…
题意:给定一个图,问你有几个连通块. 析:不用说了,最简单的DFS. 代码如下: #include <bits/stdc++.h> using namespace std; const int maxn = 100 + 5; const int dr[] = {1, -1, 0, 0}; const int dc[] = {0, 0, 1, -1}; char a[maxn][maxn]; int vis[maxn][maxn]; void dfs(int r, int c){ vis[r][…
题意:给定 n 条边,判断是不是树. 析:水题,判断是不是树,首先是有没有环,这个可以用并查集来判断,然后就是边数等于顶点数减1. 代码如下: #include <bits/stdc++.h> using namespace std; const int maxn =1000 + 5; int p[maxn]; int Find(int x){ return x == p[x] ? x : p[x] = Find(p[x]); } int main(){ int n, m, x, y; cin…
题意:给定一个n×m大小的字符矩阵,仅由‘.’和‘*’组成,询问这个图可否划分为一些由‘*’组成的十字形状,这些十字之间可以有重叠, 如果存在方案则输出每个十字中心坐标与边长度,无解输出-1 n,m<=1e3 思路:感觉挺独特的一个思路,并没有能力完全自主推导,还是翻译一下题解…… 因为任意一组方案都可以,所以可以把每一个能放星星的地方都扩展到最大 预处理每个点上下左右能扩展的长度,四个长度取min再-1就是半径,则将这个十字中所有的方格+1 对于每一行和每一列做一下差分后的前缀和,如果某个&quo…
题目大意: 给定一段长度为n的字符串s 你需要给每个字符进行涂色,然后相邻的不同色的字符可以进行交换 需要保证涂色后能通过相邻交换把这个字符串按照字典序排序(a~z) 你只有两种颜色可以用来涂 问是否存在这么一种涂色方案满足题意 存在,输出YES,再用01表示两种不同的颜色,把涂色方案输出(如果有多种,输出任意一种) 不存在,输出NO 解题思路 1: 因为只有两种颜色可以用来涂 相同颜色彼此不能交换 所以同一种颜色组成的序列绝对是非严格递增的 那么就用mx记录一种颜色代表的非严格递增的序列到某个…
Content 一个序列由从 \(1\) 开始的数字不断在末端拼接,就像这样:\(12345678910111213141516...\).现在,给定一个数字 \(k\),请输出这个序列的第 \(k\) 个数字. 数据范围:\(1\leqslant k\leqslant 10000\). Solution 这题的数据范围不是很大,我们可以直接模拟得到长度为 \(10000\) 的序列,然后就可以直接输入输出了. Code int n = 1, cur, d[10007]; int main()…
感觉自己有点强迫症  不都写出来就找理由不写题解 http://codeforces.com/contest/1015   题目链接 A. Points in Segments 题目意思  n个线段 去覆盖1-m 中的点 问你没有覆盖的点的个数和位置 这个数据很小,可以直接暴力查找 思考:如果n<1e6, m<=1e8 呢? #include<bits/stdc++.h> #define int long long #define MAX(a,b,c) max(a,max(b,c)…
A - Points in Segments 题意:implement #include<bits/stdc++.h> using namespace std; typedef long long ll; bool vis[105]; int ans[105], atop; void test_case() { int n, m; scanf("%d%d", &n, &m); while(n--) { int u, v; scanf("%d%d&q…
目录 Contest Info Solutions A. Drinks Choosing B. Sport Mafia C. Basketball Exercise D1. Submarine in the Rybinsk Sea (easy edition) D2. Submarine in the Rybinsk Sea (hard edition) E. OpenStreetMap Contest Info Practice Link Solved A B C D1 D2 E F 6/7…
A. Drinks Choosing 有 $n$ 个人,每个人各有一种最喜欢的饮料,但是买饮料的时候只能同一种的两个两个买(两个一对) 学校只打算卖 $\left \lceil \frac{n}{2} \right \rceil$ 对 这意味着有些学生喝不到最喜欢的饮料,求最多有多少学生能喝的最喜欢的饮料 人数和饮料种数均小于等于 $1000$ 直接贪心,对于喜欢同一种饮料的学生中,如果人数为奇数,要么单独买一对,然后把另一个给不喜欢这种饮料的人 要么喝自己不喜欢的饮料,设喜欢某种饮料的学生人数…
题目链接:http://codeforces.com/contest/1163 A .Eating Soup sol:在n / 2.n - m.m三个数中取最小值,结果受这三个值限制.但是m == 0的情况需要特判 思维 #include "bits/stdc++.h" using namespace std; int main() { int n, m; scanf("%d%d", &n, &m); ) {puts(;} printf(, min(…
A. Points and Segments (easy) Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/430/problem/A Description Iahub isn't well prepared on geometry problems, but he heard that this year there will be a lot of geometry problems on…
题目链接: http://codeforces.com/gym/100851 题目大意: N个人,每个人有pi个物品,每个物品价值为0~49.每次从1~n顺序选当前这个人的物品,如果这个物品的价值>=之前所有物品价值和则加上这个物品,否则这个物品舍弃不计算在内. 总共拿出K个物品,如果一个人没物品拿了那么他会拿出价值为50的物品.求最终物品价值和有多少. 题目思路: [模拟] 直接暴力枚举.判断是否超过之前的总和,如果有人拿了50则后面的人肯定都是拿50. // //by coolxxx //#…
题目链接:codeforces 997C.Sky Full of Stars 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记\(f(i,j)\)为该方阵中至少有\(i\)行和\(j\)列为相同颜色的情况 那么显然有\(ans=\sum_{i=0}^n \sum_{j=0}^n C_n^i C_n^j (-1)^{i+j-1} f(i,j)\ \ (i+j\neq0)\) 其中对于\(f(i,j)\)的取值有两种情况 ​ I.若\(i=0\)或\(j=0\),先假设\(i=0\),…
C - Sky Full of Stars 思路: 容斥原理 题解:http://codeforces.com/blog/entry/60357 注意当i > 1 且 j > 1,是同一种颜色 代码: #include<iostream> #include<cstdio> #include<queue> #include<deque> #include<set> #include<cstring> using namesp…
任意门:http://codeforces.com/contest/1118/problem/F1 F1. Tree Cutting (Easy Version) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an undirected tree of nn vertices. Some vert…
任意门:http://codeforces.com/contest/1118/problem/D1 D1. Coffee and Coursework (Easy version) time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The only difference between easy and hard versions…
F1. Pictures with Kittens (easy version) 题目链接:https://codeforces.com/contest/1077/problem/F1 题意: 给出n个数,以及k,x,k即长度为k的区间至少选一个,x的意思是一共要选x个,少一个或者多一个都不行. 选一个会得到一定的奖励,问在满足条件的前提下,最多得到多少的奖励. 题解: 简单版本数据量比较小,考虑比较暴力的动态规划. dp[i,j]表示前i个数,要选第i个数,目前选了j个所得到的最大奖励,那么当…
A. In Search of an Easy Problem time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output When preparing a tournament, Codeforces coordinators try treir best to make the first problem as easy as poss…
[Codeforces 997C]Sky Full of Stars(排列组合+容斥原理) 题面 用3种颜色对\(n×n\)的格子染色,问至少有一行或一列只有一种颜色的方案数.\((n≤10^6)\) 分析 显然任意染色的方案数为\(3^{n^2}\),我们考虑求出没有一行一列只有一种颜色的方案数,然后相减. (1)首先考虑仅仅没有全部是一种颜色的列,每一列任意染色有\(3^n\)种方案,去掉每一列只有一种颜色的方案有3种,共\(3^n-3\)种,n列就有\((3^n-3)^n\)种. (2)再…
Description 在一个二维平面上有若干个矩形.定义一个矩形的(或有边在无限远处)区域为符合条件的条件为: 这个区域仅包含一个矩形,且不能使边界穿过任何一个矩形的内部. 这个区域可以用一个水平或竖直的直线分割为两个符合条件的区域. 现给定一个有 \(n\) 个矩形的平面,请你判断整个平面区域是否符合条件. Hint for all: \(1\le n\le 10^5\) for Easy: \(n\le 10^3\) \(0\le \text{坐标大小} \le 10^9\) Soluti…
题目链接: http://codeforces.com/contest/673/problem/D 题意: 给四个不同点a,b,c,d,求是否能构造出两条哈密顿通路,一条a到b,一条c到d. 题解: 构造法,看例子: input: 5 6 5 2 4 1 output: 5 4 3 1 2 4 5 3 2 1 所以只要满足k>=n+1,就可以构造出来答案. #include<iostream> #include<cstring> #include<cstdio>…