自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yuta233的博客

误入软件行业的文艺青年

  • 博客(49)
  • 收藏
  • 关注

原创 10万蜜蜂同屏作战 UnityECS蜜蜂大战项目实践(附实现前后对比)

丛林中有两队蜜蜂,两队蜜蜂为了生存,要和对方队伍争抢资源和掐架。资源生成在中间。两队蜜蜂分别出生在两边的基地中。在相同位置生成的资源将堆叠在一起。蜜蜂捡起资源并将其放在它们的基地。当资源击中基地的地面时,它会爆炸,生成几只该基地颜色的蜜蜂。没有携带资源的蜜蜂可能会攻击并摧毁敌方蜜蜂。被摧毁的蜜蜂会散发蜜蜂碎片和血点,而最终携带的资源会掉落到地面上。表面上的血点会随时间逐渐减小至消失。每只蜜蜂的显示比例在所有三个轴上振荡。场景整体效果大概类似这样。

2024-01-01 11:27:07 1210 1

原创 快速排序的一个优雅的实现

//快速排序void quick_sort(int s[], int l, int r){ if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] >= x) // ...

2020-05-28 17:18:55 328

原创 DFS深度优先搜索中的标记问题

同样是象棋中马的问题,有以下两个具体情景:给起点,走三步,求所有可能到达的点给起点,不限制步数,求能否到达终点上边的dfs代码void dfs(int x,int y,int s){ if(s == 4) return; vis[x][y] = 1; mp[x][y] = '#'; for(int i = 0; i &amp;amp;amp;lt; 8; i++){ int tx = x ...

2019-02-13 10:43:48 1859 6

原创 C++四舍五入与小数位数

比较简单的方法:保留整数int a = b + 0.5;保留一位小数int a = ( b + 0.05 ) * 10;double c = a / 10.0;保留两位小数int a = ( b + 0.005 ) * 100;double c = a / 100.0;只适用于正数的情况。如果是负数需要提前判断下...

2019-02-08 15:59:39 841

原创 Balloons in a Box

问题描述  你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球。  接下来是模拟的方案。假设你已知一个长方体的盒子和一个点集。每一个点代表一个可以放置气球的位置。在一个点上放置一个气球,就是以这个点为球心,然后让这个球膨胀,直到触及盒子的边缘或者一个之前已经被放置好的气球。你不能使用一个在盒子外面或者在一个之前已经放置好的气球里面的点。但是,你可以按你喜欢的任意顺序使用这些点,而且你不...

2019-01-26 19:29:58 561

原创 [ACM/ICPC World Finals 2003-Beverly Hills].Eurodiffusion

蓝桥杯oj这个题卡时间卡的好变态哇,改了很多次还总是超时,后来找到了罪魁祸首:用来分硬币的函数separate,原本是这样的形式void separate(int i,int j){ if(ci[i][j].ciuse==-1)return; if(j-1&amp;gt;=1&amp;amp;&amp;amp;ci[i][j-1].ciuse!=-1){//分给下边的点 for(int k=1;k&amp;lt;...

2019-01-24 23:11:32 450

原创 在string类型字符串上添加char

string类型字串不能一次连接多个char,例如 string ans="example:"; char c1='0'+1; char c2='0'+2; char c3='0'+3; char c4='0'+4; char c5='0'+5; ans+=c1+c2+c3+c4+c5; cout&lt;&lt;ans;输出:example:example后面没有显示,现在改...

2019-01-24 13:31:37 14972 1

原创 C++ 数值与字符串 相互转换

一、 int与string使用C++的流(需要#include&amp;amp;amp;lt;sstream&amp;amp;amp;gt;)1.int=&amp;amp;amp;gt;stringvoid int2str(const int &amp;amp;amp;amp;int_temp,string &amp;amp;amp;amp;string_temp){ stringstream stream; stream&am

2019-01-24 11:08:44 324

原创 C++方便的字符串翻转函数reverse

1.对于用char定义的字符串:使用string.h中的strrev函数#include &lt;iostream&gt;#include &lt;cstring&gt;using namespace std;int main(){ char s[]="123456";//不能是string类型; strrev(s); cout&lt;&lt;s&lt;&lt;e...

2019-01-24 10:50:13 1832 1

原创 C++ 常见错误和误区

1、 关键字:link2001无法解析的外部符号 静态变量原因:静态变量使用之前没有初始化造成的,写在构造函数不管用,因为静态变量的调用和构造对象没有任何关系解决方案:正确初始化静态变量2、 函数的形参有指针时,如果函数内要对指针实参的值进行修改,一定要加上引用修饰符。指针也是一个变量,如果不用&amp;修饰,函数进行时就会生成与之对应的副本对副本进行修改,而不是原来的指针,最终指针的值并不...

2019-01-24 10:15:44 298

原创 用网络爬虫爬取新浪新闻----Python网络爬虫实战学习笔记

今天学完了网易云课堂上Python网络爬虫实战的全部课程,特在此记录一下学习的过程中遇到的问题和学习收获。 我们要爬取的网站是新浪新闻的国内版首页 下面依次编写各个功能模块1.得到某新闻页面下的评论数评论数的数据是个动态内容,应该是存在服务器上,由js脚本传过来的,因此我们f12打开开发者工具在network下面找到js一栏,观察各个请求的preview页面,看看评论数包含在哪...

2018-07-05 13:18:20 3017 1

转载 Java关键字new-----对象的内存分配原理

一、关键字new概述 “new”可以说是Java开发者最常用的关键字,我们使用new创建对象,使用new并通过类加载器来实例化任何我们需要的东西,但你是否深入了解过new在编译的瞬间都做了什么? 在Java中使用new关键字创建对象变得很容易了,事实上,对这些事情你是不需要考虑的。需要访问一个文件吗?只需要创建一个新的File实例:new File(“jdbc.prop...

2018-05-27 21:49:41 3953

原创 CSS 使一个标签置于页面中心

比如有一个div名叫log-in-dlbox,width是320,上下padding是0,左右padding是50,height是400,想要把它居于页面中心可以使用如下代码:.log-in-dlbox{ width:320px;height:400px;position: absolute;margin-left: -210px;margin-top: -200px;top: ...

2018-05-05 09:59:31 1016

原创 全排列

描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有’a’ &lt; ‘b’ &lt; … &lt; ‘y’ &lt; ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序...

2018-03-08 16:37:16 1769

原创 N皇后问题

#include &lt;iostream&gt;using namespace std;#include &lt;math.h&gt;#define maxn 15struct loc { int row,col;}a[maxn];int queenNum;int n;int plancnt;bool sameLine(int i,int j){ if (i...

2018-03-08 13:50:29 278

原创 第k小的数

总时间限制: 5000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 给定包含N个(N &lt;= 1000000)元素的数组a[1],a[2],a[3],…,a[N],输出这些整数从小到大排序后的第k个(例如,k=1就是最小值)。输入2行 第1行包含2个正整数N、k(1 &lt;= k &lt;= N &lt;= 1000000),代表数组元素个数和要求...

2018-03-07 16:42:47 1051

原创 最大子段和问题

总时间限制: 1000ms 内存限制: 65536kB 描述N个数的数组:a[1],a[2],…,a[N]求这个数组的最大子段和输入第1行包含一个整数N(N &lt;= 20000) 第2行包含N个int范围内的整数,空格隔开输出输出一个整数,表示最大子段和样例输入4 1 -2 4 -3 样例输出4 提示对于60%的测试点:N&lt;=100 对于100%的测试点:N&l...

2018-03-06 16:45:18 583

原创 迪克斯特拉算法详解及C++实现

算法步骤如下:G={V,E}1. 初始时令 S={V0},T=V-S={其余顶点},T中顶点对应的距离值若存在&lt;V0,Vi&gt;,d(V0,Vi)为&lt;V0,Vi&gt;弧上的权值若不存在&lt;V0,Vi&gt;,d(V0,Vi)为∞2. 从T中选取一个与S中顶点有关联边且权值最小的顶点W,加入到S中3. 对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的...

2018-03-05 12:42:04 3059 1

原创 深入理解C++中的指针和多维数组

指针篇 “指针是什么?”“指针就是一种数据类型。”“你确定?”“那数据类型是什么?额,这个???类型就是类型,还能怎么解释嘛。”“指针有多少种?”“指针有好多种,比如整型指针,字符指针等等。”“指针是怎么确定分类的?”“就是声明时在变量类型后加个*声明指针呀。”等等。这是我们对指针对基本的认识,可是指针到时是什么,什么是指针类型,指针的值和指针本身怎么区别,几乎初学者都凌乱了。给个简单的...

2018-03-02 10:59:01 592 1

转载 csp201709-3 json查询

转载自L_Aster#includeusing namespace std;bool isroot(string & str,size_t pos){ int cnt=0; for(size_t i=0;i<pos;i++) { if(str[i]=='{')cnt++; if(str[i]=='}')cnt--; }

2018-02-07 13:41:17 880

原创 csp201712-4 行车路线

#includeusing namespace std;#include#define LL long long#define maxn 510const int inf=1e9+7const int maxm=1e5+10;int n,m,arr[maxn],cnt,vis[maxn];LL d[maxn],s[maxn];struct edge{ int v,va

2018-02-05 18:25:49 648

原创 csp201703-1 csp201703-2

#includeusing namespace std;#define maxn 1000+10int n,k;int arr[maxn];int main(){ cin>>n>>k; getchar(); for(int i=1;i<=n;i++) cin>>arr[i]; int sum=0,cnt=0; for(int i=

2018-02-02 21:29:22 280

原创 csp201703-3 地铁修建

因为n的上限太大了,如果用矩阵存储的话,需要非常大的内存。m上限是n上限的两倍,所以测试数据应该都是一些稀疏图。所以用vector存储比较划算。算法上我采用的是迪克斯特拉算法,没有优化的时候总超时。用堆优化一下。AC了。#include#include#include#includeusing namespace std;#define maxn 100000+10#define

2018-02-02 19:20:10 394

原创 UVA 1252

https://vjudge.net/problem/UVA-1252为了叙述方便,设“心里想的物体”为W。首先在读入时把每个物体转化为一个二进制整数。不难发现,同一个特征不需要问两遍,所以可以用一个集合s表示已经询问的特征集。在这个集合s中,有些特征是W所具备的,剩下的特征是W不具备的。用集合a来表示“已确认物体W具备的特征集”,则a一定是s的子集。设d(s,a)表示已经问了特征集s

2018-01-28 22:53:06 324 1

原创 csp201709-1 201709-2

这次认证大一参加过。由于是第一次考试,印象很深。#includeusing namespace std;int main(){ int n; cin>>n; int cnt=0; while(n!=0) { if(n>=50) { n-=50; cnt+=7;

2018-01-28 11:13:11 323

原创 UVA 10187 校长的烦恼

可以用二进制表示子集,这种表示方法真的非常省时间空间,其中从右往左第i位(从0开始编号)表示元素i是否在集合中(1表示“在”,0表示“不在”) e.g. 二进制的1111换算成十进制就是15,如果用15代表全集A的话,那么1101b(b是二进制)即13d(十进制)就代表了A的一个具有第1、第3、第5个元素的子集B。本题的做法有很多。一种相对容易实现的方法是:用两个集合s1表示恰好有一个人教

2018-01-28 10:49:33 341

原创 UVA 1218 完美的服务

https://vjudge.net/problem/UVA-1218这题注意边界情况。在叶子节点d【u】【2】要注意区别取值,我这里采用的maxn标记。 而且d【u】【1】的取值,在u的孩子中如果有叶子节点那么这个策略是行不通的,也要标记。 接下来就是深度搜索了。我跟网上其他人的做法不太一样。这是一个比较易于理解的做法,写出来发现可以过就没再优化。其实计算d【u】【2】可以再快一点,具体

2018-01-26 23:03:26 305

原创 UVA 1220 Hali-Bula的晚会

题目描述:https://vjudge.net/problem/UVA-1220判断一个图是否是树:一个图G如果是无回路的连通图,或者是n-1条边的连通图,那么G就是树。树上的DP类问题一般用深度优先遍历解决。本题几乎就是树的最大独立集问题,不过多了一个要求:判断唯一性。设: d(u,0)和f(u,0)表示以u为根的子树中,不选u点能得到的最大人数以及方案唯一性 (f(u,0)=1表示

2018-01-26 22:56:45 313

原创 csp 201712-1 201712-2

csp认证每年前两题的难度都比较低,加之时间空间要求较低,考验的更多是基本功而不是算法效率了。#includeusing namespace std;#define maxn 1000+10int n;#includeint arr[maxn];int main(){ cin>>n; for(int i=1;i<=n;i++) { cin

2018-01-26 22:46:43 1205 1

原创 UVA 10976 分数拆分

题目描述:https://vjudge.net/problem/UVA-10976既然要求找出所有的x、y,枚举对象自然就是x、y了。可问题在于,枚举的范围如何?从1/12=1/156+1/13可以看出,x可以比y大很多。难道要无休止地枚举下去?当然不是。由于x≥y,有 ,因此 ,即y≤2k。这样,只需要在2k范围之内枚举y,然后根据y尝试计算出x即可。在这需要用到一个判断float或者d

2018-01-24 22:32:25 387

原创 UVA 11509 最大乘积

题目描述:https://vjudge.net/problem/UVA-11059暴力求解类问题 连续子序列有两个要素:起点和终点,因此只需枚举起点和终点即可。由于每个元素的绝对值不超过10且不超过18个元素,最大可能的乘积不会超过10 18 ,可以用long long存储。今天发现VJ上有一个特别好用的功能: 在UDEBUG界面里不光有各个oj平台这道题的测试数据,还可以帮你快速定位

2018-01-24 22:27:52 314

原创 UVA 1626 括号序列

题目描述:https://vjudge.net/problem/UVA-1626设串S至少需要增加d(S)个括号,转移如下: 如果S形如(S′)或者[S′],转移到d(S′)。 如果S至少有两个字符,则可以分成AB,转移到d( A )+d(B)。 边界是:S为空时d(S)=0,S为单字符时d(S)=1。注意(S′, [S′, ) S′之类全部属于第二种转移,不需要单独处理。 注意:不管

2018-01-24 12:12:02 295

原创 UVA 725 除法

题目描述:https://vjudge.net/problem/UVA-725此题采用暴力枚举法。没必要枚举0~9的所有排列。只需要枚举fghij就可以算出abcde,然后判断是否所有数字都不相同即可。不仅程序简单,而且枚举量也从10!=3628800降低至不到1万,而且当abcde和fghij加起来超过10位时可以终止枚举。由此可见,即使采用暴力枚举,也是需要认真分析问题的。#inc

2018-01-24 11:44:52 292

原创 UVA 10003 cutting sticks

典型的区间型DP#include #include#include#include#includeusing namespace std; #define maxn 50+10int len,n;int loc[maxn];int d[maxn][maxn];string s="";int fun(int i,int j){ if(j-i==1)

2018-01-22 22:59:23 225

原创 uva1625 颜色的长度

注意每次循环中对d数组的初始化,不需要调用memeset(d,-1,sizeof(d));因为d数组申请了maxl=5000+10的空间大小,这个语句在实际执行会很耗时间。而且也并不是d数组所有的空间都需要初始化。只初始化会用到的值足矣。#include#include#include#includeusing namespace std;#define maxn 26+10

2018-01-22 22:57:25 311

原创 uva11400 照明系统设计

通过这个题目我以为我了发现数据结构课本快排代码的一个bug。 书上的快排代码:template class T>void quickSort(T a[], int leftEnd, int rightEnd){// Sort a[leftEnd:rightEnd], a[rightEnd+1] >= a[leftEnd:rightEnd]. if (leftEnd >= right

2018-01-22 01:06:56 315

原创 uva 11584 划分回文串

线性DP问题 设d【i】代表a【0:i】字符构成的串中划分成回文串的最小个数 则有状态转移方程:d【i】=min{d【j】+1|a【j+1:i】为回文串} 可以这么理解方程:d【i】表示【0:i】范围的最优方案,由最优子结构性质,d【i】的表示也是由几个最优项组成:d【j】,1.#includeusing namespace std;#define maxl 1000+10#def

2018-01-20 23:21:27 247

原创 uva 12563 劲歌金曲

先介绍自己写的,比较循规蹈矩的方法。dp(i,j)表示必须在j时间内结束,在i,i+1,,,,n首歌中选择,可以唱的最大歌曲数 (包含jq) sing(i,j)表示在这个状态、歌曲数取最大的情况下,可以唱的最长时间 (包含jq)#include#include#include#define maxn 50+10#define maxt 10000+10#define jq 678

2018-01-16 23:29:00 342

原创 codevs1014 装箱问题

题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入描述 Input Description 一个整数v,表示箱子容量一个整数n,表示有n个物品接下来n个整数,分别表示这n 个物品的各自体积输出描述 Output

2018-01-15 20:30:22 306

原创 uva116 tsp

题目描述:————————————————————————- 在这个题目中,每一列就是一个阶段,每个阶段都有3种决策:直行、右上和右下。 多阶段决策的最优化问题往往可以用动态规划解决,其中,状态及其转移 类似于回溯法中的解答树。解答树中的“层数”,也就是递归函数中的“当前填充位置”cur,描述的是即将完成的决策序号,在动态规划中被称为“阶段”。#include#includeus

2018-01-15 20:21:17 255

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除