num

2014-10-28 NOIP模拟赛

北城以北 提交于 2020-02-23 03:38:07
Porble 1 时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship。spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship船长也成了最热门的职业之一。当然,要成为一名出色的船长,必须通过严格的考核,例如下面是最简单的问题中的一个。 用1~n的整数给n个星系标号,目前你在标号为1的星系,你需要送快递到标号为n的星系,星系之间由于存在陨石带,并不是都可以直连的。同时,由于超时空隧道的存在,在某些星系间飞行会出现时间静止甚至倒流,飞行时间为0或为负数。另外,由星系i到星系j的时间和由星系j到星系i的时间不一定是相同的。 在寄出日期之前收到快递被认为是不允许的,所以每部spaceship上都有一个速度调节装置,可以调节飞行的时间。简单来说其功能就是让所有两个星系间的飞行时间(如果可以直达)都增加或减少相同的整数值,你的任务就是调整速度调节器,找出一条用最短时间完成任务的路径,并且保证这个最短时间的值大于或等于0。 输入格式 输入文件包含多组数据,第1个数为T,表示数据的数量。 对于每一组数据,输入第1行为两个正整数N(2≤N≤100),E(1≤E≤N*(N-1)/2),为星系的个数和星系间飞行的路线数。然后E行,每行三个整数i,j和t(1≤i,j≤N,i≠j,-100000≤t≤100000)

虫食算 (codevs 1064)题解

柔情痞子 提交于 2020-02-23 00:26:39
【问题描述】 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#9865#045 + 8468#6633 44445506978 其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。 现在,我们对问题做两个限制: 首先,我们只考虑加法的虫食算。这里的加法是N进制加法,算式中三个数都有N位,允许有前导的0。 其次,虫子把所有的数都啃光了,我们只知道哪些数字是相同的,我们将相同的数字用相同的字母表示,不同的数字用不同的字母表示。如果这个算式是N进制的,我们就取英文字母表午的前N个大写字母来表示这个算式中的0到N-1这N个不同的数字:但是这N个字母并不一定顺序地代表0到N-1)。输入数据保证N个字母分别至少出现一次。 BADC + CBDA DCCC 上面的算式是一个4进制的算式。很显然,我们只要让ABCD分别代表0123,便可以让这个式子成立了。你的任务是,对于给定的N进制加法算式,求出N个不同的字母分别代表的数字,使得该加法算式成立。输入数据保证有且仅有一组解。 【样例输入】 5 ABCED BDACE EBBAA 【样例输出】 1 0 3 4 2 【解题思路】 本题为NOIP2004第四题,其实也不是那么难(虽然WA了N次……),这道题可以像处理高精度加法一样

2019-2020 ACM-ICPC Latin American Regional Programming Contest

▼魔方 西西 提交于 2020-02-22 22:40:39
开学前最后一场训练了,努力搞了个8题,还算可以。就是这场题没多少我能做的,只切了两道题。 题目链接: https://codeforces.com/gym/102428 D: solver:czq 题意就是二维平面上有n颗恒星,每颗恒星有一个固定亮度。问:是否存在一条直线,从平面的一端扫到另一端,满足:对于任意两颗恒星S和T,如果S亮度大于T,那么S一定在T之前或者跟T一起同时被直线扫到。只需输出Y或N。 构造一下Y和N的例子你就会发现,对于所有亮度不同的恒星,从亮度高的恒星指向亮度低的恒星,这样我们就得到若干条向量。若答案为Y,那么必然存在一对向量,平行且方向相反,而且如果我们把所有的向量极角排序,这对平行的向量位置相邻。 1 /* basic header */ 2 #include <bits/stdc++.h> 3 /* define */ 4 #define ll long long 5 #define pb emplace_back 6 #define mp make_pair 7 #define eps 1e-8 8 #define lson (curpos<<1) 9 #define rson (curpos<<1|1) 10 /* namespace */ 11 using namespace std; 12 /* header end */ 13 14

HDU-5965 扫雷

孤人 提交于 2020-02-22 20:34:26
题目意思:有个3*n的扫雷游戏,其中中间那行是没有雷而且格子是全部点开的,给出中间那行的数字,根据这串数字统计两边有几种埋雷方案 样例输入: 2 22 000 样例输出: 6 1 原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=5965 对于这个埋雷问题,我们首先注意到的是某个雷如果被埋下了,那么这个雷的信息会被它周围的三个格子所共享,但是对三个格子之外的格子就没什么影响了 反过来我们也能想到,对于中间那行某个格子内的数字,也只是影响到它上下三格以内的雷的摆放 这里就会给我们一个dp的启发,就是对于中间的第i个格子来说,摆到这个格子的方案数应该能由前面格子的已知摆放方案数推出来,并且这个递推是乘法关系的递推,就是摆到那个格子的方案数应该等于它之前格子摆的方案数乘上它现在这个格子提示数字所能摆的方案数。 对于dp的模型,我们有个直观的想法就是用f[i]表示摆到第i个格子的方案数,这样f[n]就是我们需要的答案,然后开始想状态转移方程 但是我们发现,尽管三格之外的的信息能直接作为方案数的乘法推算的一部分,但是由于三格之内的数字所提示的埋雷信息是共享的,导致一个单纯的f[i]推到这里就推不动了,因为i所能提示的信息只有第几个格子,不涉及具体的摆雷信息,所以只用一个i就把正确的状态转移方程得出来是不可能的。既然这样,我们就得考虑增加状态信息

卡拉兹猜想

∥☆過路亽.° 提交于 2020-02-22 19:42:38
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 ( 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n = 1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (,以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展…… 我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n = 1? 输入格式: 每个测试输入包含 1 个测试用例,即给出正整数 n 的值。 输出格式: 输出从 n 计算到 1 需要的步数。 import java.util.Scanner; public class Callatz { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); int i = 0; while (num != 1) { if (num % 2 == 1) { num = (num * 3 + 1) / 2; i++; } else { num = num / 2; i++;

C++静态成员

↘锁芯ラ 提交于 2020-02-22 19:19:20
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class base{ private: static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 }; xxx.cpp文件 const int base::_i=10;//定义(初始化)时不受private和protected访问限制. 注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 2.静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。举例如下: class

RelationNetwork

北慕城南 提交于 2020-02-22 18:02:31
论文:Relation Networks for Object Detection 论文链接: https://arxiv.org/abs/1711.11575 代码链接: https://github.com/msracver/Relation-Networks-for-Object-Detection 这篇文章的细节可以通过阅读源码来加深理解,这篇博客就来介绍这篇文章的部分源码。 因为这篇文章主要是在网络结构上做改动,所以这篇博客以resnet_v1_101_rcnn_attention_1024_pairwise_position_multi_head_16_learn_nms.py为例介绍网络结构,这个例子在Faster RCNN基础上引入relation module,包括全连接层和NMS阶段。 链接: resnet_v1_101_rcnn_attention_1024_pairwise_position_multi_head_16_learn_nms.py 接下来介绍的代码顺序和链接中的不大一样,这里按照代码运行时的顺序介绍,目的是方便跟着数据流进行阅读,主要涉及几个方法: 全局网络构造:get_symbol;ROI信息的坐标变换:extract_position_matrix;ROI信息的坐标embedding:extract_position_embedding

033.Python的__del__析构方法he__call__方法

折月煮酒 提交于 2020-02-22 17:39:35
一 __del__ 魔术方法(析构方法) 1.1 介绍 触发时机:当对象被内存回收的时候自动触发[1.页面执行完毕回收所有变量 2.所有对象被del的时候] 功能:对象使用完毕后资源回收 参数:一个self接受对象 返回值:无 1.2 页面执行完毕回收所有变量 class Plane(): def __init__(self,name): self.name = name def fly(self): print ("我的飞机是{}飞的很快".format(self.name)) def __del__(self): print ("析构被触发") obj = Plane("高超音速") obj.fly() 执行 [root@node10 python]# python3 test.py 我的飞机是高超音速飞的很快 析构被触发 1.3 所有对象被del的时候 删除对象 class Plane(): def __init__(self,name): self.name = name def fly(self): print ("我的飞机是{}飞的很快".format(self.name)) def __del__(self): print ("析构被触发") obj = Plane("高超音速") print ("<=======================start del==

一起学爬虫——使用selenium和pyquery爬取京东商品列表

淺唱寂寞╮ 提交于 2020-02-22 16:37:45
layout: article title: 一起学爬虫——使用selenium和pyquery爬取京东商品列表 mathjax: true --- 今天一起学起使用selenium和pyquery爬取京东的商品列表。本文的所有代码是在pycharm IDE中完成的,操作系统window 10。 1、准备工作 安装pyquery和selenium类库。依次点击file->settings,会弹出如下的界面: 然后依次点击:project->project Interpreter->"+",,如上图的红色框所示。然后会弹出下面的界面: 输入selenium,在结果列表中选中“selenium”,点击“install package”按钮安装selenium类库。pyquery也是一样的安装方法。 安装chrome和chrome driver插件。chrome dirver插件下载地址: http://npm.taobao.org/mirrors/chromedriver/ 。 切记chrome和chrome dirver的版本要一致。我的chrome版本是70,对应chrome driver是2.44,2.43,2.42。 下载chrome driver解压后,将exe文件拷贝到pycharm开发空间的Scripts文件夹中: 2、分析要爬取的页面

7、线程、进程、协程进阶篇

纵饮孤独 提交于 2020-02-22 15:08:09
1.1.继上一讲,知道了如何创建多线程和GIL的原理,接下来要说的是线程锁,那为什么需要线程锁呢? 先看下图,此图来自:http://www.cnblogs.com/alex3714/articles/5230609.html,我就不自己动手画了,比我画得好 分析: (1)线程1拿到count=0并获得GIL,依次执行1,2,3,4,5,然后执行时间到了释放GIL (2)线程2拿到count=0并获得GIL,依次执行6,7,8,9,10,11,修改count的值,此时count的值由0变成1,并释放GIL (3)线程1再次拿到GIL并继续执行12,13,修改count的值,count的值还是1 问题出现了:线程1和线程2都把count+1,但是最后count的值还是1 线程锁:cpu在执行任务时,在线程之间是进行随机调度的,并且每个线程在执行一段时间之后会切换到另外一个线程,但是由于线程之间堆数据是共享的,所以就会有可能出现上述问题。 没加锁时的代码: # -*- coding: utf-8 -*- #__author:jiangjing #date:2018/2/4 #!/usr/bin/env python # -*- coding:utf-8 -*- import threading import time NUM = 0 def func(): global NUM