yy

dfs

瘦欲@ 提交于 2020-03-16 20:22:00
http://www.pipioj.online/problem.php?id=1033 题目描述 PiPi喜欢把别人的名字拆开来,比如“螺”就可以拆成“虫田糸”,PiPi的语文学的不是很好,于是她决定使用编程的方式来解决这个问题。 给出一个01矩阵,1占据的部分即为需要拆的字,如果两个1分享一条边,那么它们连通。连通具有传递性,即如果a、b连通,b、c连通,则a、c连通。 连通的一系列1被看做可以拆出的一块,现在PiPi需要输出这些拆出的块(用一个01矩阵表示,并且要求矩阵的大小尽可能的小)。 为了确保输出的顺序尽可能的和书写的顺序一致,PiPi从每个块中选出最左上角的点(最左侧的点中,最靠上的)作为代表点,然后按照代表点从左到右(若相同则按从上到下)的顺序输出所有拆出的块。 输入 多组数据。 输入的第一行为两个正整数N、M,表示01矩阵的大小。 接下来N行,每行M个01字符,描述一个需要拆的字。 对于40%的数据,满足1<=N,M<=10。 对于100%的数据,满足1<=N,M<=500。 额外的样例: 11 17 00000000000000000 00001111111100000 00000000000000000 00111111111111100 00000000100000000 00000010101110000 00000110100011000

【GMOJ4016】圈地为王

浪尽此生 提交于 2020-02-08 17:20:50
题目 题目链接: https://gmoj.net/senior/#main/show/4016 在 \(n\) 行 \(m\) 列的网格中,你要圈一些地。 你从左上角出发,最后返回左上角,路径内部的区域视为被你圈住。 你不可以进入网格内部, 只能在边上行走。 你的路径不能在左上角以外自交, 但是边足够宽, 你可以重复经过而不自交。 网格中有一些格子对你很重要,你要尽量圈住它;而另一些格子对你有坏处,你不能圈住它。 求圈住 \(i\) 个重要的格子的最小路径长度。 思路 这道题挺妙的。 考虑如果一个格子正上方的边经过了奇数次,那么这个点最终就被围住了,如果它上方的点经过了偶数次,那么就没有被围住。 由于特殊点(重要点+坏点)只有 \(10\) 个。考虑状压。 设 \(f[i][j][S]\) 表示现在走到点 \((i,j)\) ,每一个重要点的上方经过的次数的奇偶性为 \(S\) 的最少步数。 那么可以 \(bfs\) 转移,注意维护 \(S\) 即可。 时间复杂度 \(O(2^knm)\) ,其中 \(k\) 表示特殊点的个数。 代码 #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N=55,MAXN=1025,Inf

洛谷-题解 P6024 【机器人】

别来无恙 提交于 2020-01-30 22:59:03
今天洛谷比赛的题。(打不了CF只好做洛谷比赛,用空气树这个号打的) A的非常莫名。 题目链接: https://www.luogu.com.cn/problem/P2051 首先要能计算出期望值,我完全没有学过期望,只好乱猜。 期望值应该是要按最坏的打算。 要求一次性成功,否则重来。 那么期望第一个任务做的次数便是所有概率乘积的倒数。 那么第二个任务呢?就是 \(2\) ~ \(n\) 所有概率乘积的倒数。 以此类推。也就是后缀了。 而我当时完全想错了。 但是直觉认为是贪心,排序。 于是推了个这样的式子。(根据题, \(p[i]都*了10000\) ) \(xx.x\) 表示完成代价, \(xx.y\) 表示期望值 \(p[i]\) , \(10000/xx.y\) 也就是单独一个任务的期望次数 排序的式子(也就是把xx放在yy前的要求): \(10000 * xx.x/xx.y+10000 * 10000 * yy.x/xx.y/yy.y<10000 * yy.x/yy.y+10000 * 10000 * xx.x/yy.y/xx.y;\) \(-->xx.x * yy.y+10000 * yy.x<yy.x * xx.y+10000 * xx.x\) 然后 \(WA\) 了。 于是我开始乱猜,把 \(<改>\) 就过了!!惊讶万分。 什么原因? 显然,我当时的思路是按照前缀

SQL字符型转日期型

为君一笑 提交于 2020-01-30 04:53:52
使用convert函数转换使用convert函数转换convert(varchar(10),字段名,转换格式) 比如: select user_id,convert(varchar(10),date,11) as date from tb_user 转换格式: 0或100 month dd yyyy hh:miAMPM 1 mm/dd/yy 2 yy.mm.dd 3 dd/mm/yy 4 dd.mm.yy 5 dd-mm-yy 6 dd month yy 7 month dd,yy 8 hh:mi:ss 9或109 month dd yyyy hh:mi:ss:mmmAMPM 10 mm-dd-yy 11 yy/mm/dd 12 yymmdd 101 mm/dd/yyyy 102 yyyy.mm.dd 103 dd/mm/yyyy 104 dd.mm.yyyy 105 dd-mm-yyyy 106 dd month yyyy 107 month dd,yyyy 108 hh:mi:ss 110 mm-dd-yyyy 111 yyyy/mm/dd 112 yyyymmdd 来源: https://www.cnblogs.com/zhangsongshan/archive/2012/02/15/2352676.html

洛谷P2212 [USACO14MAR]浇地Watering the Fields(kruskal)

孤街浪徒 提交于 2020-01-30 01:24:40
洛谷P2212 题目大概意思是有n块田地,给出坐标xi,yi,铺设两块田地之间水管的费用为两点间距离的平方,水管工人只铺设费用大于等于c的水管,问是否能将n块田地连通,如果可以输出最小费用,如果不行输出-1. kruskal做法 很显然是个板子题,我们只需要把费用大于等于c的边加进去就行,然后遍历所有边,看是否能形成连通图,如果能就输出费用即可。 注意由于数据较大,建边的时候每对点建一条边即可,不然TLE on test 9。 代码 # include <bits/stdc++.h> using namespace std ; const int N = 1e5 + 5 ; const int mod = 1e9 + 7 ; const int INF = 0x3f3f3f3f ; const double EPS = 1e-6 ; typedef long long ll ; # define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int x [ N ] , y [ N ] ; int fa [ N ] , sizes [ N ] ; int dis ( int i , int j ) { return ( x [ i ] - x [ j ] ) * ( x [ i ] - x [ j ] ) + ( y

Luogu P3638 [APIO2013]机器人

我只是一个虾纸丫 提交于 2020-01-18 19:50:42
(类似)斯坦纳树+DP \(f[l][r][i][j]\) 表示已经构成 \([l,r]\) 的机器人,并在点 \((i,j)\) 的最小代价。 预处理出 \(d[i][j][k]\) 表示在点 \((i,j)\) 方向为 \(k\) 时最终能够到达的点。 \(f[l][r][i][j]=\min(f[l][k][i][j],f[k+1][r][i][j])\) \(枚举k,f[l][r][X][Y]=\min(f[l][r][X][Y],f[l][r][i][j]+1),(X,Y)表示(i,j,k)最终到达的点\) spfa 要优化:用两个队列,一个存初始状态(先排完序再扔进去),一个存扩展出来的状态,每次取两个队头中较小的去扩展。 #include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<vector> #include<cstring> #define R register int using namespace std; namespace Luitaryi { inline int g() { R x=0,f=1; register char s; while(!isdigit(s=getchar())) f=s=='-'?-1:f; do x=x*10+(s^48);

深拷贝浅拷贝

ⅰ亾dé卋堺 提交于 2020-01-14 03:42:09
对象和对象的深拷贝 利用...进行对象的深拷贝 1 <script> 2 // 剩余参数...进行拷贝,这是深拷贝,新复制出来的对象和之前的对象不是一个地址 3 var obj1={ 4 name:'zh', 5 age:18, 6 money:99999999999 7 } 8 var ojb2={...obj1} 9 ojb2.bb='yy' 10 console.log(ojb2) // {name: "zh", age: 18, money: 99999999999, bb: "yy"} 11 console.log(obj1) // {name: "zh", age: 18, money: 99999999999} 12 </script> 数组和数组的深拷贝 利用...进行数组的深拷贝 1 <script> 2 // 数组和数组的拷贝 利用...剩余参数 3 var arr1=[1,2,3] 4 var arr2=[...arr1] 5 arr2.push('yy') 6 console.log(arr2) // [1, 2, 3, "yy"] 7 console.log(arr1) // [1, 2, 3] 8 9 </script>                深拷贝 深拷贝方法——JSON.parse(JSON.stringfly()) 以及 使用 ..

朴素贝叶斯预测莺尾花数据

一曲冷凌霜 提交于 2020-01-07 14:37:59
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.naive_bayes import GaussianNB import matplotlib #生成所有测试样本点 def make_meshgrid(x,y,h=0.02): x_min,x_max = x.min()-1,x.max()+1 y_min, y_max = y.min() - 1, y.max() + 1 xx,yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h)) return xx,yy def plot_test_results(ax,clf,xx,yy,**params): Z = clf.predict(np.c_[xx.ravel(),yy.ravel()]) Z = Z.reshape(xx.shape) ax.contourf(xx,yy,Z, **params) if __name__ == '__main__': #载入iris数据集 iris = datasets.load_iris() #只使用前面两个特征 X = iris.data[:,:2] #样本标签值 y = iris

格式化时间

柔情痞子 提交于 2019-12-24 03:20:32
格式化时间 软件中的日期格式化 1.日期格式化就是对日期字符串进行解析和格式化输出 2.在软件系统中,展现层的日期数据为字符串,逻辑层的日期为Date对象,存储层的日期数据为时间戳 3.日期格式化就是在不同层次之间进行数据转换 时间戳 <-> Date对象 <-> 格式化字符串 UTC时间与本地时间的关系 UTC(Universal Time Coordinated)是世界统一时间,GMT(Greenwich MeanTime) 格林尼治时间,UTC 与 GMT 的含义完全相同。 UTC + 时区差 = 本地时间 时区差东为正,西为负 本地时间: Date: Sun, 13 June 2010 09:45:28+0800 UTC时间: 0945 - 0800 = 0145 即UTC是当天凌晨1点45分28秒。 若结果为负就意味着是UTC前一天,把这个负数加上2400就是UTC在前一天的时间 本地时间: 本地(北京)时间是0325 (凌晨3点25分) UTC时间: 0325-0800 = -0475(负号意味着是前一天) -0475+3400 = 1925(前一天的晚上7点25分。) 纽约的时区是西五区,比UTC落后五个小时,记为-0500 UTC + (-0500) = 纽约时间 UTC = 纽约时间 + 0500 UTC = 北京时间 - 0800 = 纽约时间 + 0500

Centos7——目录与路径

坚强是说给别人听的谎言 提交于 2019-12-05 20:47:26
一、目录的相关操作 1.特殊的目录: cd加上下面符号 .   此层目录 ..   上一层目录 -    前一个目录 ~     目前用户所在主文件夹 ~vbird  vbird这个账号的主文件夹 2.所有目录下面都会存在两个目录,此层目录和上层目录,即"." 和".." 3.pwd  显示当前目录 vbird用户的主文件夹是/home/vbird/,root主文件夹是/root/ 4.创建新目录 mkdir -p   递归创建 -m  设置权限 例子: 1)mkdir -p test/test1 2)mkdir -m 711 test3 二、关于执行文件路径的变量:$PATH 1.实际上ls命令位于/bin/ls这个路径, 为什么我们可以在任意地方执行命令ls,就是因为环境变量PATH的帮助 [root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin (echo 有显示打印出的意思) 系统会依据PATH的设置去PATH定义的目录下查询命令(如ls)的可执行文件,若有多个同名文件,则执行先找到的命令。 2.若想将/root加入到PATH中,可像下面这样: PATH="$PATH":/root 三、复制、删除与移动 1.ls   -l  相当于ll,查看具体信息