/*做完这题发现自己好水,太伤人了.... 不过还是学到一些,如果直接暴力模拟的话肯定是TLM.. 所以要用虚拟数组来分别保存当前数组的每行没列在初始数组中的位置...*/ #include<cstdio> #include<algorithm> using namespace std; #define max 1000+5 int a[max][max]; int r[max],c[max]; int main() { int n,m,k; while(~scan
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔型).DateFrame既有行索引也有列索引,可以被看作为由Series组成的字典. 构建DataFrame: 1.1.直接传入一个由等长列表或numpy数组组成的字典 ''' Created on 2016-8-10 @author: xuzhengzhu ''' from pandas import * data={'state':['ohio','ohio','ohio','nevada
题目链接: http://codeforces.com/contest/724 A. Checking the Calendar time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given names of two days of the week. Please, determine whether it is
Offical Website :http://pandas.pydata.org/ 一:两种基本的数据类型结构 Series 和 DataFrame 先来看一下Series import pandas as pd import numpy as np import matplotlib.pyplot as plt #Series s = pd.Series([i*2 for i in xrange(1 , 11)]) print s 打印结果为: 0 2 1 4 2 6 3 8 4 10 5
题意:给出两个n*m的矩阵,每次操作可以让一个正方形矩阵行列交换.问,在无限次操作下,第一个矩阵能否变成第二个矩阵 分析:先把操作限定在2*2的矩阵中.这样对角线上的元素就可以随意交换.也就是说,如果给相邻的元素随意的交换次数,那么一个长度为n的数列可以得到任何顺序. 然后把操作放大,发现不在一个对角线上的元素无论如何也是无法交换位置的. ac代码: #include<bits/stdc++.h> using namespace std; const int maxn=505; int num
A. Tree Orientation 树形DP,$f[i][j][k]$表示$i$的子树中有$j$个汇点,$i$往父亲的树边方向为$k$的方案数. 转移则需要另一个DP:$g[i][j][k]$表示考虑前$i$个儿子,子树中有$j$个汇点,$i$的出边个数是否是$0$的方案数. 时间复杂度$O(n^2)$. #include<cstdio> const int N=1010,P=1000000007; int n,m,i,x,y,g[N],v[N<<1],nxt[N<<
注意到前3个操作都不会影响每列的情况,而第4个操作必然会将行列交换,故只要每行的和相同即可满足条件. 考虑数位DP,设$f[i][j][k][t]$表示考虑最高的$i$位,第一行的和是$j$,当前行的和是$k$,与$R$的大小关系为$t$的数字个数. 需要特判$|R|=1$以及$|R|$不是完全平方数的情况. #include<cstdio> int n,m,s,a[20],i,j,k,x,t,nx;long long R,f[20][40][40][2],ans; int main(){ s
http://acm.hdu.edu.cn/showproblem.php?pid=4941 给定N,M和K,表示在一个N*M的棋盘上有K个棋子,给出K个棋子的位置和值,然后是Q次操作,对应的是: 1 a b :交换a和b两行 2 a b : 交换a和b两列 3 a b :查询a b这个位置上棋子的值,没有棋子的话输出0 不能直接模拟,对应行列交换,只需交换map映射值,查询时输出map[x],map[y]上值即可 #include <cstdio> #include <cstdlib&