D. Count the Arrays,组合,Educational Codeforces Round 83 (Rated for Div. 2)

D. Count the Arrays,Educational Codeforces Round 83 (Rated for Div. 2) http://codeforces.com/contest/1312/problem/D Your task is to calculate the number of arrays such that: each array contains n elements; each element is an integer from 1 to m; for each array, there is exactly one pair of equal elements; for each array a, there exists an index i such that the array is strictly ascending before the i-th element and strictly descending after it (formally, it means that aj<aj+1, if j<i, and aj>aj+1, if j≥i).

HOI | HOI-W数据集介绍

HOI-W数据集只包含一些比较常见的relationships 总共包含来自不同的场景的38636张图片。其中,训练集29842张,测试集8794张。 训练验证集与测试集的数据集格式均不统一,以png格式为主,有部分的jpg,jpeg格式 包含的objects类别为11类: 包含的relations类别为10类: 给定的annotation包括人和物体的bbox,以及人和物体/人之间的relation,具体如下: {"file_name": "trainval_000000.png", "annotations": [{"bbox": [486, 174, 1219, 1080], "category_id": "1"}, {"bbox": [787, 474, 955, 669], "category_id": "4"}], "hoi_annotation": [{"subject_id": 0, "object_id": 1, "category_id": 5}, {"subject_id": 0, "object_id": 1, "category_id": 7}]} 可视化了相关的图片及标准,如下: 大部分为灰色图片,部分为彩色图片 标定存在的问题: 没有relation的object有时候标定,有时候不标定 一些标注错误的图片,food hold drink? 目前是可视化30张图片的结果,主要以单人为主,后续有时间再多可视化看一下 比赛结果评测方法 采用mAP作为评测指标 classification:与目标检测不同,只有当human detection, object detection and the interaction class都正确的情况下,才视为true positive。 regression:人和物体bboxes的检测仍然与目标检测相同,当与GT之间的IOU大于0.5时,即视为true positive。 输出的prediction.json文件的格式如下:(http://picdataset.com/static/challenge/results.json) [{"file_name": "test_000000.png", "predictions": [{"bbox": [486, 174, 1219, 1080], "category_id": "1"}, {"bbox": [787, 474, 955, 669], "

docker搭建三主三从redis集群,可外网访问

文章目录 前置说明1. 创建redis配置文件2. 生成配置文件3. 创建容器4. 搭建集群方式一:通过容器的redis-cli创建集群方式二: 通过外部redis-cli搭建下载redis源码包:解压编译创建软连接到bin目录搭建集群 5. 测试宿主机访问集群外网使用redis-destop manager访问集群 前置说明 操作系统centos7本次集群所使用镜像为官方redis5.05镜像,redis版本不同搭建方式不同搭建前务必确认所用端口均已开通防火墙,这里以6111–6116作为集群六个节点端口,三主三从。注意一共需要开通12个端口防火墙,分别为6111–6116,16111–16116,一开始搭的时候卡了很久原因就是没开后面的大号端口防火墙…原因如下: 重要知识点 Redis群集TCP端口 每个Redis群集的节点都需要打开两个TCP连接,由于这两个连接就需要两个端口,分别是用于为客户端提供服务的常规Redis TCP命令端口(例如6379)以及通过将10000和命令端口相加(10000+6379)而获得的端口,就是集群端口(例如16379)。 第二个大号端口用于群集总线,即使用二进制协议的节点到节点通信通道。 节点使用群集总线进行故障检测,配置更新,故障转移授权等。 客户端不应尝试与群集总线端口通信,为了保证Redis命令端口的正常使用,请确保在防火墙中打开这两个端口,否则Redis群集节点将无法通信。命令端口和集群总线端口偏移量是固定的,始终为10000。 请注意,为了让Redis群集正常工作,您需要为每个节点: 1、用于与客户端进行通信的普通客户端通信端口(通常为6379)对所有需要到达群集的客户端以及所有其他群集节点(使用客户端端口进行密钥迁移)都是开放的。 2、集群总线端口(客户端端口+ 10000)必须可从所有其他集群节点访问。 如果您不打开这两个TCP端口,则您的群集将无法正常工作。(重要,集群端口是redis端口+10000),集群总线使用不同的二进制协议进行节点到节点的数据交换,这更适合于使用很少的带宽和处理时间在节点之间交换信息。 以上内容摘自:https://www.cnblogs.com/hzb462606/p/11121281.html 1. 创建redis配置文件 在/home/redis-cluster目录下新建redis-cluster.conf文件,内容如下: port ${PORT} protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 112.65.xx.xxx //外网ip cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes masterauth mypassword //主服务器验证密码(可选) requirepass mypassword //连接密码(可选) 2. 生成配置文件 执行如下命令,在当前目录生成各节点的配置文件与容器数据卷映射目录,三主三从,共六个节点,端口分别为6111~6116 for port in `seq 6111 6116`; do \ mkdir -p ./${port}/conf \ && PORT=${port} envsubst < .

选数,区间选点(覆盖)

** 选数问题 输入T,将有T轮选数。给出三个数n,K,S,表示接下来一行有n个数输入,要求从中选出K个数的和等于S。输出有几种方法 分析 本题采用DFS。 思考第一个问题——如何转化为我们熟悉的DFS问题。 将步数K和总和S转化为坐标。DFS开始时,(第一步,和为零)=(1,0),结束时(第K+1步,和为S)=(k+1,S),即从(1,0)到(K+1,S)。注意定义中的第一步和第K+1步表示将要进行第一步或第K+1步,并不是这一步已经完成。另一种理解也可以定义为从(0,0)到(K,S)。 再思考另一个问题——如何选数。 假设,有一个数组 t [1-n]。我们第一步已经选了 t [1],那么下一轮递归一定要在 t [2-n]。总结一个规律,本次递归选择 t [i],下一轮只能在 t [(i+1)-n]选数。 由此我们知道,DFS需要三个参数——it选数起始位置,step当前进行步数,sum已经累加的和。 最后一个问题——如何递归和设定边界 尝试选择一个数,直接递归。那么需要一个循环,如果当前剩余能选数个数<剩余步数(T-it<K-step),将无法选够K个数循环结束。 边界有两个,当到达(K+1,S),即step=K+1,sum=S,满足条件。 另一个边界,步数超过能选个数,和超过S(sum等于S但step未到达K也包含在内),不足选够K个数,这个边界不满足条件且该路径永远不可能满足条件。 代码 void DFS(int it,int step,int sum){ if(sum==S&&step==K+1){ //判定成功 X++; return; } if(step>K||sum>=S||T-it<K-step){//本条路径已经不能到达终点 return; } int s; for(;T-it>=K-step;it++){ s=sum; s+=t[it]; DFS(it+1,step+1,s); } } 第一次调用DFS和输出 DFS(1,1,0); cout<<X<<endl; 区间选点(覆盖) 区间选点:数轴上有 n 个闭区间 [a_i, b_i]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。 输入输出:第一行1个整数N(N<=100),第2~N+1行,每行两个整数a,b(a,b<=100)。输出一个整数,代表选点的数目。 区间覆盖:数轴上有 n (1<=n<=25000)个闭区间 [ai, bi],选择尽量少的区间覆盖一条指定线段 [1, t]( 1<=t<=1,000,000)。覆盖整点,即(1,2)+(3,4)可以覆盖(1,4)。不可能办到输出-1。 输入输出: 第一行:N和T。第二行至N+1行: 每一行一个闭区间。输出选择的区间的数目,不可能办到输出-1。 分析 采用贪婪算法

[蓝桥杯] 合根植物

合根植物 题目 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。 如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗? 输入格式 第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。 接下来一行,一个整数k,表示下面还有k行数据(0<k<100000) 接下来k行,第行两个整数a,b,表示编号为a的小格子和编号为b的小格子合根了。 格子的编号一行一行,从上到下,从左到右编号。 比如:5 * 4 的小格子,编号: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 输入样例 5 4 16 2 3 1 5 5 9 4 8 7 8 9 10 10 11 11 12 10 14 12 16 14 18 17 18 15 19 19 20

vs2015/2017/2019配置opencv终结问题版教程

vs2015/2017/2019配置opencv终结问题版教程 说明: 1.为方便讲解示例,本教程以vs2015配置opencv3.4.3为例,其他版本请对应替换。 2.VS版本与opencv版本的最佳匹配,请查阅其他资料自行选定。 3.VS版本与opencv的vc12/14/15等的匹配,请查阅相关资料确定。 4.早期的opencv版本(如opencv2.4.9)支持Debug | x86,近期的opencv版本(如opencv3.x)仅支持Debug | x64。 操作环境 windows 10 64位 专业版 opencv 3.4.3:opencv官网 visual studio 2015 专业版 教程 1.安装opencv3.4.3,配置环境变量,添加动态链接库 1.1安装 双击opencv安装包 选择解压路径(自行设置) 1.2设置opencv3.4.3的环境变量 A.右键“我的电脑”>属性>高级系统设置>高级>环境变量>系统变量>Path>编辑>新建>浏览 B.找到刚才opencv3.4.3的解压路径 C.添加如下路径(我的是):A:\opencv343\opencv\build\x64\vc14\bin D.点完所有的“确定”按钮。(至此环境变量配置结束) 1.3添加动态链接库 A.在opencv解压文件夹,打开vc14>bin文件夹,找到以下三个文件。 B.将 opencv_ffmpeg343_64.dll复制到C:\Windows\System32文件夹内;将opencv_world343.dll和opencv_world343d.dll文件复制到C:\Windows\SysWOW64文件夹内 2.新建opencv专用属性表并进行配置 2.1新建空项目 打开vs2015>新建项目>选择win32控制台应用程序,设置项目名称和项目路径>确定>下一步>勾选空项目>完成 2.2新建opencv专用属性表并配置 A.依次点击:视图>其他窗口>属性管理器 B. 在Debug | 64上右键单击,选择添加新项目属性表 C.新建名为 opencv3envPropertySheet的属性表 该属性表请单独保存,以后新建opencv项目后,直接添加该表即可(在Debug | 64上右键单击,选择添加现有属性表),无需重复配置 D.双击opencv3envPropertySheet E.配置 包含目录: A:\opencv343\opencv\build\include A:\opencv343\opencv\build\include\opencv A:\opencv343\opencv\build\include\opencv2 库目录: A:\opencv343\opencv\build\x64\vc14\lib 连接器\输入\附加依赖项: opencv_world343d.lib opencv_world343.lib 3.测试 A.右键单击源文件>点击添加>新建项>选择c++文件(.cpp)>命名test B.粘贴如下代码,注意"alpine.jpg"必须放在与test.cpp同一路径(文件夹)下才可以直接用,否则,应加入对应的路径。 #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> using namespace cv; int main() { Mat srcimage = imread("

ZStack-K8s三层互联互通方案

1. 准备条件 zstack社区版 kubernetes 1.15.0 zstack:创建私有网络。 kubernetes: 选择Calico网络方案 kubernetes创建在zstack创建的扁平网络中或者是kubernetes和zstack在同一网段。 2.zstack和k8s集群状态 zstack节点的IP 10.11.24.80 10.11.24.65 zstack创建创建私有网络: 172.18.1.0/24 172.18.3.0/24 kubernetes集群的IP:10.11.24.30 10.11.24.40(扁平网络) kubernetes的node-1的Pod网段是192.168.219.0/24、node-2的Pod网段是192.168.167.0/24 3.创建路由 以私有网络 172.18.1.0/24 为例子创建路由连接k8s的node-1网络(192.168.219.0/24)和node-2网络(192.168.167.0/24)。 打开私有网络的云路由器(zstack导航条--->网络资源--->云路由器) 登录云路由器,增加路由表: 云路由器的账户:vyos,密码是:vrouter12# ip route show #查看路由 configure #进入配置环境 set protocols static route 192.168.219.0/24 next-hop 10.11.24.40 set protocols static route 192.168.167.0/24 next-hop 10.11.24.30 commit #提交 save #保存 exit #退出配置环境 ip route show #查看并确定配置的路由 登录k8s的node节点配置从Pod网络到zstack虚拟网络的路由 查看云路由器对应的扁平网络地址(zstack导航条--->网络资源--->云路由器: 默认IP ) 默认IP: 10.11.24.8 私有网络的CIDR: 172.18.1.0/24 登录 10.11.24.40配置路由 route -n #查看路由 route add -net 172.

【2020/3/12】Java 提示 java.lang.ClassNotFoundException(错误: 找不到或无法加载主类)的解决办法

1、在用 java.exe 运行指定的 .java 字节码文件之前,需要先用 javac.exe 将准备执行的 .java 文件进行编译。方法是: javac *.java *.java 的 * 号代表文件名。编译成功后,再用 java.exe 执行。 2、如果仍然提示:“错误: 找不到或无法加载主类”,则检查环境变量是否配置正确。在环境变量中添加 classpath 变量,值设定为如下三个目录: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar .代表当前目录。 如果未配置 JAVA_HOME 环境变量(最好放在系统变量中),应在修改 classpath 变量之前先将 JAVA_HOME 设置为 JDK 的安装目录。例如: D:\Program Files\Java\jdk 如果不添加 JAVA_HOME 变量,开发平台可能会报错。不过,也可以不添加 classpath 变量,而是在用 java.exe 运行指定的 java 文件时在文件名(注意:大小写在这里不要写错)后传入 -classpath 参数: -classpath .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar 亦可显式传参,例如: -classpath .;D:\Program Files\Java\jdk\lib\tools.jar;D:\Program Files\Java\jdk\lib\dt.jar .java 文件就可以正常运行了。

Linux-mount: 在 /dev/sr0 上找不到媒体

今天在安装httpd服务程序的时候遇到个问题,由于我的虚拟机没有安装yum,所以先将yum安装上,但是出现了个往常不会出现的问题: 每次挂载都挂载不上,repo配置文件也已经写好,但就是挂载不上去,提示说“mount: 在 /dev/sr0 上找不到媒体”,解决方法如下: 检查步骤: 检查系统镜像文件是否存在,已存在。 检查虚拟机设置,发现“已连接”没有勾选上,所以勾选上去。重新挂载。 若嫌弃第2步麻烦,可以尝试这个步骤。检查系统磁盘是否已经连接上,若无,右键连接即可。重新挂载。 可以看到,已经能够成功挂载了。

Flutter web 开发 “Unsupported operation: Platform._version”

环境: web_socket_channel: ^1.1.0 出现问题时间: 2020年03月12日(等待官方后期的完善)已解决 今天在学习 Flutter 发送 WebSockets 时(示例地址),浏览器报错: Unsupported operation: Platform._version See also: https://flutter.dev/docs/testing/errors 但是使用 Android 和 IOS 就没有问题。 第一次遇到这种问题,不知道为什么,后来查了查资料,并不是因为代码的问题,而是 Flutter 的 dart.io 操作不支持 web 端使用,不知道以后会不会支持,继续踩 Flutter 开发坑。 Android 和 IOS 端使用的是 IOWebSocketChannel.connect(connectUrl); 对于 Web 端来说应该使用的是 HtmlWebSocketChannel.connect(connectUrl); 【注】web_socket_channel 依赖文档:https://pub.dev/packages/web_socket_channel

IEEE各会议排名

Rank 1:第一梯队 SIGCOMM: ACM Conf on Comm Architectures, Protocols & Apps INFOCOM: Annual Joint Conf IEEE Comp & Comm Soc SPAA: Symp on Parallel Algms and Architecture PODC: ACM Symp on Principles of Distributed Computing PPoPP: Principles and Practice of Parallel Programming RTSS: Real Time Systems Symp SOSP: ACM SIGOPS Symp on OS Principles SOSDI: Usenix Symp on OS Design and Implementation CCS: ACM Conf on Comp and Communications Security

【C++】数组操作

代码: #include <iostream> using namespace std; //主函数 int main(){ // 声明一个数组,这个数组只有长度没有值 int li[10]; // 得到数组的长度 int length = 0; length = sizeof(li) / sizeof(li[0]); // 给数组赋值 for(int i=0; i<length; i++){ li[i] = i+1; } // 修改数组的元素 li[5] = 100; // 遍历输出数组的值 for(int i=0; i<length; i++){ cout << li[i] << endl; } } 运行结果: 说明: 1.声明数组时,需要指定元素的类型和元素的数量,这时候可以声明一个空数组,也可以在声明时就给数组赋值 如:int a[3] = {2,5,8}; // 声明了数据类型为int的数组,它的长度为3,值为2,5,8 2.获取数组长度,sizeof(li)函数可以返回数组所占的内存,而sizeof(li[0])返回的是数组第一个元素所占的内存,因为每个元素占的内存一样大,sizeof(li) / sizeof(li[0])就是总内存/单个元素的内存,得到元素的个数 3.给数组赋值或者修改数组内容时,选择数组下标并赋值就可以了,数组下标从0开始。 如:li[5] = 100,则将数组的第6个元素的值改为100 4.其他操作

【C++】简单的函数

代码: #include <iostream> using namespace std; // 主函数 int main(){ int a = 2; int b = 5; // max(a,b)是调用自己声明的max函数 // "\n"换行 cout <<"input:"<< a << " " << b << "\n"<< "大数是" << max(a,b) << endl; return 0; } // 声明函数,并定义参数类型 int max(int num1, int num2){ if (num1 > num2){ return num1; }else{ return num2; } } 运行结果: 说明: 1.调用函数时,这里是直接调用并输出,也可以定义一个变量,把函数结果先保存下来,再输出,或者在其他地方使用 如:result = max(a,b); cout <<"input:"<< a << " "

Flutter – This requires the ‘control-flow-collections’ experiment to be enabled. 解决办法

在进行 Flutter 开发的时候有可能遇到这个错误: This requires the 'control-flow-collections' experiment to be enabled. Try enabling this experiment by adding it to the command line when compiling and running. 出现这个错误的原因是:在 Dart 2.5 以前的版本,control-flow-collections 还是一个实验版本,并没有正式的去用;但在 Dart 2.5 之后这个功能已经可以正式使用,只需更新 pubspec.yaml 中的最低 Dart 版本就解决了: environment: sdk: ">=2.5.0 <3.0.0" 如果使用的是命令行,则需要重新加载包配置: flutter pub get 【注】Flutter 现在还在不断地更新完善中,建议持续使用新版本,就和苹果的 Swift 一样。

Educational Codeforces Round 83 (Rated for Div. 2) D.Count the Arrays

Educational Codeforces Round 83 (Rated for Div. 2) D.Count the Arrays Your task is to calculate the number of arrays such that: each array contains n elements;each element is an integer from 1 to m;for each array, there is exactly one pair of equal elements;for each array a, there exists an index i such that the array is strictly ascending before the i-th element and strictly descending after it (formally, it means that aj<aj+1, if j<i, and aj>aj+1, if j≥i).

codeforces1312 D. Count the Arrays(推导 + 组合数)

D. Count the Arrays time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Your task is to calculate the number of arrays such that: each array contains nn elements;each element is an integer from 11 to mm;for each array, there is exactly one pair of equal elements;for each array aa, there exists an index ii such that the array is strictly ascending before the ii-th element and strictly descendingafter it (formally, it means that aj<aj+1aj<aj+1, if j<ij<i, and aj>aj+1aj>aj+1, if j≥ij≥i).

Codeforces 1312 D. Count the Arrays (组合数学)

E. Array Shrinking time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given an array a1,a2,…,an. You can perform the following operation any number of times: Choose a pair of two neighboring equal elements ai=ai+1 (if there is at least one such pair). Replace them by one element with value ai+1. After each such operation, the length of the array will decrease by one (and elements are renumerated accordingly).

CodeForces - 1312D Count the Arrays(组合数学)

题目链接:点击查看 题目大意:给出一个 n 和 m ,求满足条件的数组有多少个 数组包含 n 个元素每个元素的取值为 1 ~ m包含且仅包含一对相同的元素存在一个位置 pos ,使得 [ 1 , pos ] 内严格递增,[ pos , n ] 内严格递减 题目分析:读完题后不难看出是一道排列组合的题目,本着先选数,再排序的原则,我们一步步分析 首先我们需要选出 n 个元素才能构成一个数组,因为需要有一对相同的元素,因此这里我们暂时只需要选出 n - 1 个元素就足够了,共 C( m , n - 1 ) 种情况,因为题目中需要保证在 pos 位置的两侧严格递增或递减,那么说明最大值是唯一的,此时在已经选出的 n - 1 个元素中,减去一个最大值,还剩 n - 2 个元素可以重复一遍,满足题目中的第三个条件,到这一步为止,我们已经处理完了选数的问题,也就是 C( m , n - 1 ) * ( n - 2 ) 种选取方案 接下来需要分析顺序问题,相对于选数问题来说,顺序可能稍微有一丢丢难度,不过一步一步来还是问题不大的,首先我们现在已经选出了 n 个满足前三个条件的元素了,因为满足严格递增和严格递减的限制,所以重复的那个数,以及最大值,这三个数的相对位置都是固定不变的,一定满足最大值位于最中间,而重复的两个值分别位于两侧,其他的 n - 3 个数可能会如何分布呢,无非是在最大值的左侧或右侧两种情况,我们可以发现,如果这 n - 3 个数在左侧或右侧的情况固定下来之后,因为题目中第四个条件的限制,数组的顺序也随之固定下来了,且是唯一的,这样关于顺序的方案数也就呼之欲出了:pow( 2 , n - 3 )

Latex参考文献引用顺序排序

转载于:https://blog.csdn.net/chen134225/article/details/79202923 导入bib文件的代码: \bibliographystyle{unsrt} \bibliography{reference}%reference为bib文件的名称 按照cite顺序自动排序文献编号,用\bibliographystyle{unsrt} 其他几种如下: 通过设置 bibliographystyle 就可以达到上述目的,Bibtex 自身已具备排序的功能,而且可以选择自己想要的排序方式。Bibtex 已自带有 8 种样式,分别如下(下面内容摘自 LaTeX 编辑部): 1. plain,按字母的顺序排列,比较次序为作者、年度和标题 2. unsrt,样式同plain,只是按照引用的先后排序 3. alpha,用作者名首字母+年份后两位作标号,以字母顺序排序 4. abbrv,类似plain,将月份全拼改为缩写,更显紧凑 5. ieeetr,国际电气电子工程师协会期刊样式 6. acm,美国计算机学会期刊样式 7. siam,美国工业和应用数学学会期刊样式 8. apalike,美国心理学学会期刊样式