
code
文章平均质量分 73
coding
Smiler_
这个作者很懒,什么都没留下…
展开
-
PEP8 ——python编码风格
参考链接:添加链接描述自己选择的编码风格如下:1、缩进:每级缩进使用4个空格与分界符对齐:vars = fun(var_1,var_2, var_3,var_4)2、if 语句:在条件接续行,增加额外的缩进if (condition_1 and condition_2) do()3、多行结构中的结束花括号/中括号/圆括号是最后一行的第一个非空白字符,花括号/圆括号中的元素与名称有一个单位的缩进tmp_list = [ 1,2,3, 4,5,6, ]res = fu原创 2021-04-19 11:41:13 · 192 阅读 · 1 评论 -
uva做题难度顺序
#IDTitleSolved byDifficulty1100The 3n + 1 problem2648512102Ecological Bin Packing106082310071Back to High School Physics95543410055Hashmat t转载 2017-01-14 20:28:09 · 6909 阅读 · 0 评论 -
浮点数在计算机中的保存
计算机用二进制来表示数字,浮点数也是如此:首先了解如何用二进制表示小数(也就是如何把十进制小数转化为二进制表示):举一个简单例子,十进制小数 10.6251)首先转换整数部分:10 = 1010b2)小数部分0.625 = 0.101b (用“乘2取整法”:0.625*2=1.25,得第一位为1,0.25*2=0.5,得第二位为0,0.5*2=1, 得第三位为1,余下小数部分为零,就可以翻译 2017-01-14 14:26:34 · 535 阅读 · 0 评论 -
欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2017-01-10 16:53:09 · 197 阅读 · 0 评论 -
uva1606
题意:平面上有n个点,每个点都是黑点或者是白点,现在需要防止一条隔板,使得隔板一侧的白点数加上另一侧的黑点数总数最大,隔板上的点可以看做是在任意一侧;分析: 可以先枚举一个基准点,然后将一条直线绕着这个点旋转,每当直线扫过一个点就可以动态维护,每个点最多被扫描到两次在这里我们使用atan2和叉积,用叉积来判断两条直线的角度,用atan2来算极角这里放上两个链接原创 2017-08-14 22:52:02 · 409 阅读 · 3 评论 -
OpenJ_POJ 1043
题目方法:二分加bfs题意:给你一个炸弹x,然后给你n个炸弹的位置,其中只能远程控制第一个炸弹爆炸,炸弹有一个爆炸范围,在此范围内,他可以引爆其他炸弹,现在想引爆炸弹x,问你炸弹的范围最小是多少思路:其实这个题思路清晰一点就很容易想出来了,我们可以这样想,想引爆炸弹x,那么最大的爆炸范围就是1到x的距离,然后这是在一个二维坐标中,距离的大小我们只能使用二分查找,同时每一个炸弹在爆炸原创 2017-08-13 19:08:40 · 328 阅读 · 0 评论 -
计算机中叉积
计算几何是算法竞赛的一大块,而叉积是计算机和的基础。首先叉积是计算说向量之间的叉积,那么我们可以这样定义向量,以及向量的运算符重载。[cpp] view plain copy print?struct Point { double x,y; Point(double x=0,double y=0):x(x),y(y) {} }; t转载 2017-08-13 20:27:28 · 492 阅读 · 0 评论 -
C语言中的atan 与atan2
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下。前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的规律性本可以有两个角度的但它却只返回一个,因为atan的值域是从-90~90 也就是它只处理一四象限,所以一般不用它。第二个atan2(d转载 2017-08-13 20:25:32 · 528 阅读 · 0 评论 -
求N个数的最小公倍数
题目链接:点击打开链接题意:给你n个数让你求出这n个数的最小公倍数思路:求两个数的最小公倍数的方法我们都知道,那么我们可以递推一下,不断求两个数的最小公倍数、代码如下:#include using namespace std;long long a[150];long long gcd(long long a,long long b){ if(b=原创 2017-08-13 13:21:22 · 1437 阅读 · 0 评论 -
uva11134 贪心
题意 :在一个n*nd的棋盘上放置n个车,使得各个车不在同一行同一列,同时第r个车要在一个规定的矩形之内(x1,y1,x2,y2),结果打印出每个车的位置坐标方法:贪心思路:这里有一个小技巧 就是把x和y坐标分开来看,分别求每个车的x和y的值,行列是无关的,因此把原问题分解成一个一维问题,然后使用贪心的方法, 贪心的思路是先按照x2升序排列,然后从x1的位置开始找,找原创 2017-08-13 19:29:49 · 278 阅读 · 0 评论 -
uva11491
题目大意: 给一串字符,其中包括n个字符,要求删除d个字符,使得剩下的字符尽量大由于要使得最后剩余的字符串尽量大,我们可以边 输入边处理。贪心策略:当已经存在的字符小于n-d时,把字符加进去,如果 k+n-i>n-d(k是已经保存下来的字符个数,n是总个数,i是当前输入的字符个数,d数需要删除的字符个数,此式子代表意义:已经剩余的字符个数,大原创 2017-08-11 19:48:50 · 813 阅读 · 0 评论 -
滑动窗口
题目描述给定一个数组A[],有一个大小为w的滑动窗口,该滑动窗口从最左边滑到最后边。在该窗口中你只能看到w个数字,每次只能移动一个位置。我们的目的是找到每个窗口w个数字中的最大值,并将这些最大值存储在数组B中。例如数组A=[1 3 -1 -3 5 3 6 7], 窗口大小w为3。则窗口滑动过程如下所示:Window position Max-----转载 2017-08-10 22:33:14 · 963 阅读 · 0 评论 -
单源最短路——Dijstra
Dijkstra算法:用途:求单源最短路径,有向图,无向图,边权为正,,正权图上的单源最短路,既从单个源点出发,到所有结点的最短路。伪代码:清除所有点的编号d[0]=0,其他d[i]=INF;循环n次{ 在所有没标记的点中找出d最小的结点x; 标记x 对于从x结点出发的所有(x,y) 更新 d[y]=min(d[y],d原创 2017-08-13 12:50:59 · 384 阅读 · 0 评论 -
线段树模板
线段树 附HH(胡浩)大牛博客详解:http://www.notonlysuccess.com/index.php/segment-tree-complete/#more-978 数据结构之线段树:http://dongxicheng.org/structure/segment-tree/线段树入门之入门:http://blog.转载 2017-08-10 23:52:13 · 213 阅读 · 0 评论 -
线段树应用
下面给出线段树的几个应用:(1)有一列数,初始值全部为0。每次可以进行以下三种操作中的一种:a. 给指定区间的每个数加上一个特定值;b.将指定区间的所有数置成一个统一的值;c.询问一个区间上的最小值、最大值、所有数的和。给出一系列a.b.操作后,输出c的结果。[问题分析]这个是典型的线段树的应用。在每个节点上维护一下几个变量:delta(区间增加值),same(区间被置转载 2017-08-11 16:42:21 · 3626 阅读 · 2 评论 -
线段树--HDU--1754
这个题意也很明确;在这次写的时候也出现了一点小问题,那就是在每次更新的时候也要更新父节点在update里面;这个题目涉及线段树的单节点修改,区间查询最大值代码如下:#include #include #include using namespace std;const int MAXN=2e5+50;int str[MAXN*4+10];int原创 2017-08-11 14:13:01 · 224 阅读 · 0 评论 -
线段树--HDU--1166
这个题目的题意很明确了,我就不在复述,我就说一下这个题目为什么要用线段数,很明显这个题目是与区间有关的问题,查询区间信息,修改区间的值,我们可以看到这个题目数据量很大,用普通的区间修改方法肯定超时,所以我们选择线段数;这个是我写的第一个线段数,所以出现了很多问题,问题总结如下:在查询和修改的时候题目中给的下标是从一开始,而我习惯使用从0开始,所以一开始区间区间下标出现问题。线段数是给分成两个部分原创 2017-08-11 13:25:11 · 301 阅读 · 0 评论 -
线段树的应用方法总结
现在遇到的线段树共有如下3种:1.插入点型对于这种线段树,通常是向线段树中插入点,即对应一个叶子节点的信息,而线段树中所有节点也都是记录的关于以该点为根的子树中已插入的点的统计信息,询问通常是问线段树中某个区间对叶子节点的统计信息。例题:POJ28872.线覆盖型对于这种线段树,与第三种有一下共同特点:所有询问和插入操作都是以区间为单位的,每次都是对一个区间进行操作。每个节点通转载 2017-08-11 12:56:23 · 392 阅读 · 0 评论 -
线段树总括
线段树转载请注明出处,谢谢!http://blog.youkuaiyun.com/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lg转载 2017-08-10 23:50:02 · 608 阅读 · 0 评论 -
HDU 2565 放大的X
这个题 ,一开始以为是水题,但是一直格式错误好多遍,看了一下别人的,才知道有的空格不输出,,,,,坑啊,以后在有格式题的时候,要注意,用鼠标在样例上标记一下,看看要不要输出空格,这样比较保险一点,,这个坑 good#include <iostream>using namespace std;int main(){ int T; cin>>T; while(T--) {原创 2017-05-08 20:56:03 · 1536 阅读 · 0 评论 -
HDU 1342 Lotto
这个题和素数环那个题目还是很像的,由于格式错误,还是没有一A。。。。比较容易理解,就不多说了#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>using namespace std;int n;const int maxn=20;int vis[max原创 2017-05-08 20:16:01 · 338 阅读 · 0 评论 -
HDU 1016 Prime Ring Problem
输出素数环的问题,自己的代码习惯真是,,,,,菜的一匹啊,每次代码都要改好久才对,改进啊#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cmath>#include <cstring>using namespace std;const int maxn=100;in原创 2017-05-08 19:55:54 · 219 阅读 · 0 评论 -
HDU 1010 Tempter of the Bone
题目大意:一个dog想吃bone ,但是有bone的地方是一个陷阱,然后dog要在恰好是n的时间到达门口,问dog能逃生吗?这个题目本来第一次看的时候以为很简单,但是自己还是没写出来啊,过了很久看别人的题解,才知道这个题原来有很多的地方可以剪枝。。。。其中比较特殊的两个剪枝的方法:1.最短路径与时间比较。 2.奇偶剪枝,dog要是到达与他此时位置奇偶性相同的位置需要偶数步,如果是到达与他奇偶性不同原创 2017-05-08 19:16:03 · 214 阅读 · 0 评论 -
类型转换
2.6.1 隐式转换类型char->short->int->double->long double ^ | float 在以下四种情况,都会发生隐式转换类型 1.多种数原创 2017-03-02 12:28:45 · 284 阅读 · 1 评论 -
const常量
2.5.1 常量的定义 变量其实就中是程序在运行过程其值可以改变的内存单元的名字,但是常量就是在程序执行过程中其值固定不变的内存单元的名字,在c++中常用const修饰符定义常量,方法如下: const 常量类型 常量名=常量值; 说明: 1.const常量必须在定义时初始化,而且一经定义不能在更改(常量名不能出现在=的左边) 2.在c++中,表达式可以出现在常量定义语句中,如果常量原创 2017-03-02 11:50:57 · 1043 阅读 · 0 评论 -
引用
引用是某个对象(变量)的别名 形式如下: 类型名 &引用名=变量名; 例如:#include <iostream>using namespace std;int main(){ int i=4; int &r=i; cout<<r;}r和i其实是同一对内存变量,对r的操作就是对i的操作。 在使用引用是有一下几点需要注意: 1.在定义引用时&的位置是灵活的 无关于type原创 2017-03-02 11:02:51 · 330 阅读 · 0 评论 -
第二章
距离上次写已经要有一个星期了,下面就来总结一下第二章的知识点吧(学而不思则罔,思而不学则殆)2.1 c++对c语言数据类型的扩展 c++的语言基本数据类型与c语言一致,但是c++对c语言中的结构联合枚举等自定义数据类型进行了扩展,在c++中结构名 联合名 枚举名都是类型名,可以直接用于变量的声明和定义,即在c++中定义变量时,不必在结构名 枚举名 联合名 前面加上 struct enum u原创 2017-03-02 10:13:58 · 366 阅读 · 0 评论 -
setiosflags和数制基数的用法
Setiosflags的用法 ios::fixed 是操作符setiosflags的参数之一,该参数是指定的动作以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧; ios::right ios::left 在指定区域内向右移,向左移 cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setpr原创 2017-02-23 22:29:56 · 1691 阅读 · 0 评论 -
c++课本第一章
第一章没讲太多内容,就对c++面向对象程序设计进行了介绍 一· cin 1. 析取运算符>> 当程序执行到cin时就会停下来等待键盘的输入,输入的数据被插入到输入流中,当遇到>>时就从输入流中提取一个数据,存入内存变量中。 2. cin 是在 iostream中预定义的一个标准输入设备(一般代表键盘)>>是析取运算符,用于从输入流中析取数据。 3. cin遇到空白,回车和tab就结束了原创 2017-02-23 21:17:20 · 901 阅读 · 0 评论 -
using namespace std
命名空间的意义 为什么需要将函数定义在命名空间中呢?这其实是为了避免变量或函数重命名的问题。试想,一个项目组内多个工程师进行开发,有可能会出现全局变量或函数重名的现象,而如果每个人都定义了自己的命名空间,就可以解决这个问题,即使重名,只要分属不同的命名空间就不会引起问题。 这样大家应该明白了,命名空间就是将多个变量和函数等包含在内,使其不会与命名空间外的任何变量和函数等发生重命名的冲突。翻译 2017-01-19 17:27:58 · 427 阅读 · 0 评论 -
uva1587 判断所给的六个面能否构成长方体
第一次看到这个题时,我自己也没想出什么好的办法,当时在网上看了答案,太菜了也没看懂答案什么意思,过了好久现在又看这个题,想出了自己的办法。 代码如下:#include <stdio.h>#include <stdlib.h>typedef struct BOX{ int w; int h; int wn; int hn;}BOX;int main(){原创 2017-01-23 16:47:31 · 2984 阅读 · 0 评论 -
uva202 循环小数
题目描述:输入整数a和b,输出a/b的循环小数表示及循环节长度。 例如: Sample Input 76 25 5 43 1 397Sample Output 76/25 = 3.04(0) 1 = number of digits in repeating cycle5/43 = 0.(116279069767441860465) 21 = number of digits in原创 2017-01-23 11:31:34 · 555 阅读 · 0 评论 -
生成1~n的排列
打印所有的排列,输入整数n,输出所有的排列 伪代码 void print_per(序列A,集合S) { if(s为空)输出序列A; else 按从小到大的顺序依次考虑s的每个元素 { print_per(在A的#include <stdio.h>#include <stdlib.h>void print_per(int n,i原创 2017-01-21 22:17:26 · 606 阅读 · 3 评论 -
uva11059
输入n个元素组成的序列S,找出一个乘积最大的连续子序列。如果这个最大乘积不是正数,则输出0;1<=n<=18,-10<=Si<=10. 分析: 连续子序列有两个要素,起始位置和结束位置,则只需找出起始位置和结束位置即可,注意由于每个元素的绝对值不超过10并且个数不超过18个元素,则最大的乘积不会超过10的18次幂,可用long long储存,在表示数的时候注意数的大小。 代码如下:#inclu原创 2017-01-21 18:47:35 · 480 阅读 · 1 评论 -
uva253 骰子涂色
输入两个骰子,判断二者是否等价 可以利用函数调用,逐步排除不可能的情况,剩下的就是可能的情况了 在排除不可能的情况时只需判断每个面是否有相同的面 ,面与面相同,对面与对面相同 代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>int judge(char str1[7],char str2[7]){ int原创 2017-01-18 10:35:18 · 716 阅读 · 0 评论 -
uva1588 Kickdown
题目大意: 一个容器高度为3,俩个成员都是1或2的字符串,判断容器长度最短多少可以装下俩个字符串解题思路: 从字符串a的最后一个字符与字符串b的第一个字符开始,依次比较,找出最优解法一: #include <stdio.h>#include <iostream>#include <string.h>using namespace std;int main() { char a[100翻译 2017-01-12 14:22:55 · 352 阅读 · 0 评论 -
循环小数 uva202
题目名称:循环小数题目描述:输入整数a和b a大于等于0小于等于3000,b大于等于1小于等于3000,输出a/b的循环小数表示以及循环节长度。如果循环周期大于50,只显示50位,之后的全部用……表示样例:Alt text 题目分析: ①所谓的循环小数,也就是我们理解的当每步作除法时候,会出现了重复的商,那个循环小数的周期肯定就在两个重复的商之间。 ②现在就转化为类似于找周期的问题了,找重复出翻译 2017-01-11 18:06:14 · 613 阅读 · 0 评论 -
一串字符求最小字典序
题目描述:长度为n的环状串有n中表示方法,分别为从某个位置开始顺时针得到,有些表示法中,字典序最小的称为“最小表示法”。求一个字符串的最小表示。#include <stdio.h>#include <stdlib.h>#include <string.h>int LESS(char *s,int p,int q){ int n; n=strlen(s); int i;原创 2017-01-10 23:13:53 · 966 阅读 · 0 评论 -
求字符串的周期 使用strncmp函数
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int n,t,v,i,j,k,sum; char str[90]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s",str); for(t=原创 2017-01-10 21:50:55 · 371 阅读 · 0 评论 -
Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)-C. Plasticine zebra
C. Plasticine zebrahttp://codeforces.com/contest/1025/problem/C题意:给你一串字符,你可以从某一处把字符串断开,并且翻转得到的两串字符串,在把他们拼接在一起,你可以进行多次这种操作,问你可以得到的最长的字符交替的序列的长度。思路:一开始没想到怎么做,我们可以用一串字符来模拟一下,我们用数字给字符标号,我们有这样一个串(...原创 2018-08-28 10:21:06 · 314 阅读 · 0 评论