codeforces 873C - Strange Game On Matrix】的更多相关文章

题目大意:给你一个n*m的只有0和1的矩阵,找到每列第一个1的位置a[i][j],a[i][j]及其a[min(k,n-i+1][j]中1的数量,每列位置值是1的可以变为0: 解题思路:因为数据较小,模拟整个过程,找出每列中1的数值最多的那一段: 代码(比较菜,代码写得比较乱): #include<iostream>#include<algorithm>using namespace std;int main(){    int a[105][105];    int n,m,k;…
F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a matrix A of size n × n. Let's call the matrix with nonnegative elements magic if it is symmetric (so aij = aji), aii = 0 and aij ≤ max(aik, ajk) for all…
time limit per test 1 second memory limit per test  256 megabytes input standard input output standard output Ivan is playing a strange game. He has a matrix a with n rows and m columns. Each element of the matrix is equal to either 0 or 1. Rows and…
Codeforces 题目传送门 & 洛谷题目传送门 Yet another 自己搞出来的难度 \(\ge 2800\) 的题 介绍一个奇奇怪怪的 \(n\log n\) 的做法.首先特判掉字符串中全是 \(0\) 的情况,这种情况答案显然为 \(n\).我们假设字符串中 \(1\) 的位置为 \(p_1,p_2,\cdots,p_k\).考虑当我们已经求出了 \(s[1...p_i]\) 可以得到多少个不同的 01 串后,怎样求出 \(s[1...p_{i+1}]\) 可以得到多少个不同的 0…
题目链接:http://codeforces.com/problemset/problem/305/A 题目意思:给出一个序列,需要从中选择一些数,这些数需要满足:任意的两个数中每一位至少有一个数满足该位有0.例如,406, 10(可以看成010)是符合条件的: 406, 11 就不符合条件,因为个位上这两个数都不包含0. 一开始想得太过复杂:把整型的数保存到字符数组中,再用strstr函数找出是否有0的存在,但是这样做根本不能解决问题,因为不能得出0的具体位置.并且不能判断出两个数中的不同位至…
832C - Strange Radiation 思路:二分最短时间. 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mp make_pair #define pi acos(-1.0) #define pii pair<int,int> #define pil pair<int,long> #define mem(a,…
Strictly Positive Matrix 题解: 如果原来的 a[i][j] = 0, 现要 a[i][j] = 1, 那么等于 sum{a[i][k] + a[k][j]} > 1. 如果把a[i][j]视作 i -> j 是否能达到. 那么对于上述的那个方程来说,相当于 i先走到k, k再走到j. 单向边. 所以化简之后,就是询问一幅图是不是只有一个强连通缩点. 代码: #include<bits/stdc++.h> using namespace std; #defi…
怎么构造呢? \(首先我们不可能去构造一个2000*2000的矩阵,那太复杂了\) \(也许我们可以看看2*2的矩阵??\) \[\left[ \begin{matrix} x&y\\ z&q\\ \end{matrix} \right] \] \(但是在这个矩阵中,小明的算法不可能出错.因为到达y和z的值固定,取个最大值一定是对的.\) \(那就2*3的矩阵\) \[\left[ \begin{matrix} x&y&z\\ q&w&e \end{matr…
思路:首先 他是对1到k 元素做一次变换,然后对2到k+1个元素做一次变化....依次做完. 如果我们对1到k个元素做完一次变换后,把整个数组循环左移一个.那么第二次还是对1 到 k个元素做和第一次一样的变换,再左移,再对1 到 k个元素做和第一次一样的变换,依次做完n-k+1即可. 假设题目要求的变换为C    循环左移变换为P.那么对于每次查询 相当于做  n-k+1  (CP) 变换.最后把答案再向右移动n-k+1  回到原来位置即可. 那么问题就解决了   效率    每次查询n log…
几个小结论: 1.路径长度=i+j-1; 2.最简单的走法是先横走再竖着走或者先竖着走再横着走 #include<cstdio> #include<cstring> using namespace std; void print(int x,int y) { ; i<=y; i++) printf("(1,%d) ",i); ; i<=x; i++) printf("(%d,%d) ",i,y); printf("\n&…