![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
code
CodeCatt
喜欢go语言
展开
-
猜测大学获得的奖数
额。。。用一个map ,还有一个sort,然后记住不要混乱。。。#include <iostream>#include<map>#include<algorithm>using namespace std;char uname[13][50];char a[50];char b[2];char c[10];int defen[1...原创 2019-02-25 20:01:47 · 92 阅读 · 0 评论 -
DFS 环绕城市
用一个map数组记录每一个城市相邻的三个城市,用一个vis记住是否访问过这个城市,接下来就是dfs。路径是用re数组记住的。如果这个城市没有访问过,那么就用re数组记住他,再把他标记已经去过了,接下来进行下一步的搜索。如果碰到了访问过得城市,那就跳过他了呗,继续搜索。如果第一个分支搜完了, 就不要打扰第二个分支的搜索,这时候需要回溯一下。当搜索完20个城市,第21个城市的时候,就输出。#i...原创 2019-01-27 00:16:31 · 107 阅读 · 0 评论 -
HDU 1158 Employment Planning (DP)
这个的意思就是 我找到哪天最多的员工。然后让a[i][j]去记住他,从第一天的员工数,一直循环到最大一天的员工数。 然后开始做下一轮循环,比如,第一天要求的员工数是5个人,这几个月中有个月最大的人数是8个人。那么就会有一个a[1][j]数组分别取记住,第一次雇佣5个人,6个人,7个人,8个人的情况。然后再进入第二天的循环,第二天的循环也是从前一天雇佣的人开始也就是,如果第二天要6个人,那么...原创 2019-01-26 18:15:46 · 130 阅读 · 0 评论 -
DP找最小矩阵
一个暴力搜索。先定1行为界限,不断地 用接下来的行减去第一行,就可以反馈一个竖列的和,在加上旁边的相同长度的竖列,如果大于0,就先记住一下,再比较先前的sum大,还是加了之后大,用一个maxn存起来,sum只要不小于0就一直存着每行竖列的相加,当小于0时就重置为0,意思就是前面那段构不成最长竖列的和了,此时就舍去。之后竖列从1到n,无限得变长,记住每个sum,的最大值。一个dp的爆搜,但是不用dp...原创 2019-01-26 16:05:47 · 501 阅读 · 0 评论 -
FatMouse believes that the fatter a mouse is, the faster it runs.
这题用DP 处理最长子序列 然后在输出他的标号。 #include<iostream>//动态规划#include<cstdio>#include<cstring>#include<string>#include<algorithm>const int MAX = 10010;//题目中给了最多1000只老鼠但是没说给几组...原创 2019-01-25 23:00:49 · 1038 阅读 · 0 评论 -
贪心地减少司机加班费
把早上的路程从小到大排序晚上的路程从大到小排序想加超过第一天应该有的路程那么就要加钱了这是最省钱的方法。。 #include<iostream>#include<algorithm>using namespace std;int a[110];int b[110];bool change1(int a, int b){ return a&...原创 2019-01-25 20:37:53 · 102 阅读 · 0 评论 -
卡特兰数的DP 23 10
这是一个DP,由一个公式推出来的。可以通过参考百度的博客来理解 #include<iostream>using namespace std;long long a[37][37] = { 0 };int main(){ int n; int i = 1; for (int i = 0; i <=36; i++) { a[i][0] = 1; } f...原创 2019-01-25 01:03:03 · 228 阅读 · 0 评论 -
二分法查找
百度说的很明白哈哈,就是在一个大小排序好的数组里面查找,挺神奇的。验证了几次都可以。两边夹着查找,判断中间的mid是否等于查找的数就可以了。 #include<iostream>#define N 10using namespace std;int main(){ int a[N],front,end,mid,x,i; cout<<"请输入...原创 2019-01-04 12:02:51 · 100 阅读 · 0 评论 -
第三次周赛涂色问题
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题: 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 以上就是著名的RP...原创 2018-12-24 20:02:12 · 213 阅读 · 0 评论 -
第三次周赛 折线分割平面问题
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。 Input输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。 Output对于每个测试实例,请输出平面...原创 2018-12-24 19:50:25 · 159 阅读 · 0 评论 -
第一次周赛problem I
https://vjudge.net/contest/274223#problem/I这是一道要注意空格,并且使用ASCII码解决的问题哦 #include<cstring>#include <iostream>using namespace std;int main(){ int n; cin >> n; getchar();//用于清...原创 2018-12-11 00:26:01 · 125 阅读 · 0 评论 -
多重背包Marsha and Bill own a collection of marbles.
死磕很久的石头题,目前还没有找到二进制优化。 #include <iostream>#include<algorithm>using namespace std;int dp[10005];int val[7] = { 0,1,2,3,4,5,6 };//每件的价值int num[7];//数量int main(){ int n = 1; while...原创 2019-01-27 18:08:41 · 399 阅读 · 0 评论 -
多重背包啊二进制的转换
Marsha and Bill own a collection of marbles. 感觉自己根本想不到。。。我就知道一个多重背包就这么写了。。没有考虑这么多,原来是会溢出的。。。 #include<stdio.h>#include<string.h>#define N 100010int dp[N],Vect;int max(int a,int b)...原创 2019-01-28 00:20:23 · 85 阅读 · 0 评论 -
BFS1
POJ3984 迷宫问题【BFS】一个一维数组 表示x轴的方向变化 表示y轴的方向变化再定义一个2维的方向数组一个头指针 一个下一个位置的指针一个访问的数组申请一个队列代表有多少个坐标在里面包括 横坐标 纵坐标 步数 三个因素用一个布偶判断这个点是否来过第一步将起始点加入队列步数处理:{que 1.s 起始步数是0走过一个点后 第...原创 2019-02-24 00:21:22 · 94 阅读 · 0 评论 -
合数处理
Title:Codeforces Round #270A. Design Tutorial: Learn from Math 合数就是不是质数就是合数。 #include<iostream>using namespace std;bool prime(int x)//这个是找合数的方法,找到就判断是对的。{ for (int i = 2; i < ...原创 2019-02-23 22:41:40 · 230 阅读 · 0 评论 -
并查集2
HDU-1213-Ignatius' birthday #include<iostream>using namespace std;int dad[1002];//数组的值代表爸爸是几号。int find(int x){ if (x == dad[x])//如果自己是爸爸,就返回自己 { return x; } dad[x] = find(dad[x])...原创 2019-02-22 21:16:02 · 133 阅读 · 0 评论 -
简单搜索
题目名POJ 1321-棋盘问题(dfs) 首先确定dfs的递归需要回溯,然后就是把列的问题用一个for循环解决。行的问题用S记录,可以判断越界了就停止DFS。这个处理很好啊。 #include<iostream>#include<algorithm>using namespace std;char map[10][10];int vis[10];...原创 2019-02-22 15:30:56 · 164 阅读 · 0 评论 -
DP DIY travel
又是一个DP 的问题,根本想不到子问题方程,看到答案又觉得很容易= =。、,有时候真的想不到 ,难受 ,只是我们再DP 的过程中观察是否能够飞到那个路线就可以行了#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX(a,b) (a)>(b)?(a):(b)...原创 2019-01-29 15:26:34 · 99 阅读 · 0 评论 -
德国杯的DP
这是一个DP,值得注意的是需要将城市看成2份,因为他是环绕的。然后就是找到子问题的关键,一个就是当前城市你够话费,再然就是下一个城市的钱加上你当前城市的钱是大于0的,此时就不用考虑下一个城市够不够钱了,因为分成这样的子问题更直接,然后就让下一个城市的钱记住,这2个城市总的钱,就可以推移到下下个城市的判断,如果这个成立不了,那就跳过这次执行,说明已经连不起来了。如果你的钱已经够了全部城市,那就输...原创 2019-01-28 15:58:22 · 98 阅读 · 0 评论 -
丑数问题,要防止超时
就是能被分解成2,3,5,7的数就是丑数啦。 #define MAX 99999 //数组最大值int uglyNum(int n) { int uglys[MAX] = {1}; //保存丑数数组 int count = 1; //因有一个数,所以从1开始 //1的情况另做判断 if (n == 1) { return 1; } while (1...原创 2019-01-28 00:42:48 · 199 阅读 · 0 评论 -
数塔问题的理解
关于自己对数塔问题的理解题意是怎么走找到最大的数值总和这里是运用逆行思维d[x][y]=max (d[x+1][y],d[x+1][y+1]) +a[x][y]用过一个二维数组d 记住每个点的下一条路的最大总值然后输出的最终d 就是总值的最大了 分为子问题解决最底部往上 一直找最大的相加for(int i=1;i<=n;i++)d[n][i]=a[n][i];...原创 2019-01-28 00:33:02 · 411 阅读 · 0 评论 -
错排,尴尬的新郎
说实话,挺喜欢编程的,但是这些算法对我来说理解的很困难,迷茫。。最后再让不同的组合方式乘上错排的可能就可以得到总的答案了。#include <iostream>using namespace std;int main(){ int a, b, n; int t; long long int sum = 1; cin >> n; long long in...原创 2019-01-28 00:25:19 · 100 阅读 · 0 评论 -
欧几里德算法
当时复习一下吧= =。很久没看真的不记得了 #include <iostream>using namespace std;int gcd(int a, int b){ if (b==0) { return a; } else { int t; t = a; ...原创 2019-01-28 00:22:24 · 91 阅读 · 0 评论 -
查并集 亲戚问题
输入3个数,n表示这个大家族有几个人,m表示有多少对亲戚关系,q表示你要询问多少对亲戚的关系。之后输入m对亲戚关系,比如1 2 是亲戚 1 3是亲戚 1 4 是亲戚一开始大家都在dad数组中有自己的位置,这时候可以表示大家都还不认识,接下来输入亲戚关系变是一个找爸爸的过程。find函数是让他们找到自己的爸爸。如果是自己就返回自己,如果不是就让他再运行,相当于一个递归。不是的过程中是让自...原创 2018-12-21 19:20:23 · 188 阅读 · 0 评论 -
第二周白银赛杨辉三角问题
https://vjudge.net/contest/275895#problem/C#include <iostream>using namespace std;int main(){ int n; int a[30][30]; while (cin>>n) { for (int i = 0; i < n; i++)//先让头尾都是一 ...原创 2018-12-19 23:22:18 · 68 阅读 · 0 评论 -
第二周白银组小蜜蜂移动问题
https://vjudge.net/contest/275895#problem/E #include <iostream>using namespace std;int main(){ long long F[51] = { 0,1,2 }; int a, b, t; int n; cin >> n; while (n--) { cin >...原创 2018-12-19 22:58:29 · 84 阅读 · 0 评论 -
第二周白银组汉诺塔3移动问题
https://vjudge.net/contest/275895#problem/D之前,有一个误区,误认为n-1块中最大块的一块也可以放在最上面,没想到不可以,只能够用常规的方法移动。#include <iostream>using namespace std;int main(){ long long F[21] = { 0,2 }; int b; int ...原创 2018-12-19 22:51:38 · 101 阅读 · 0 评论 -
第二次周赛白银组小蜜蜂移动问题
https://vjudge.net/contest/275895#problem/Ei块的组合方式看成,i-1的组合方式和i-2的组合方式。假设用arr[i]表示2*i的方格一共有组成的方法数,我们知道arr[1]=1;arr[2]=2; 现在假设我们已经知道了arr[i-1]和arr[i-2],求arr[i],所谓arr[i],不过是在2*(i-1)的格子后边加上一格2*1的方格...原创 2018-12-19 22:44:59 · 129 阅读 · 0 评论 -
第二次周赛白银组G题
https://vjudge.net/contest/275895#problem/G做题的时候被自己的递归绕晕了,原来可以分割的每2个数相加再分割,这样子就能省去很多麻烦,实在是没有想到。简单意思就是比如777,我一开始的想法是,7+7+7=21,21最后再分割成1+2=3。最好的其实是7+7=14,分割成1,4,再用5+7=12,分割最后得到3.还有就是用字符数组来做数字输入会方便很多,得...原创 2018-12-19 17:31:05 · 91 阅读 · 0 评论 -
第二期第六题
这是一道水题emmmm。。。 http://acm.hdu.edu.cn/showproblem.php?pid=2055#include"pch.h"#include<iostream>using namespace std;int main(){ char a; int b; char c; int y; int n; cin >> n;//这里是...原创 2018-12-13 23:25:02 · 152 阅读 · 0 评论 -
第二期第五题判断有多少个汉字
http://acm.hdu.edu.cn/showproblem.php?pid=2030这又是一道一脸懵逼的题目,哎,还是通过百度才能知道的东西。 getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个...原创 2018-12-13 22:08:49 · 194 阅读 · 0 评论 -
第一期第四题
在这里插入代码片```#include &amp;lt;iostream&amp;gt;using namespace std;int main(){ int a, b; while (cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b)//输入a,b;当有值传进去时就可以执行循环,即使是0也可以循环,这样子就可以做无限次对一组数据的加法。 {cout原创 2018-12-07 15:43:28 · 117 阅读 · 0 评论 -
第二期第二题大写锁键
https://vjudge.net/contest/160731#problem/Oemmmm,很明显这是一道水题,算法也没什么问题,想一下就很快写的出来了。但是,还是给细节坑的很惨,最后改大了定义的字符数组才AC了,真是又爱又恨啊!原因很简单,因为题目要求输入的是1到100个字母,而字符数组肯定需要一个\0来结尾,所以我们需要申请101以上的数组才可以才有足够的位置输入。#inclu...原创 2018-12-13 00:05:21 · 115 阅读 · 0 评论 -
第一期第二题
#include &lt;iostream&gt;using namespace std;int main(){ intn,j=0; cin&gt;&gt; n;//输入房间数 for(int i = 0; i &lt; n; i++) { intq, p;原创 2018-12-07 15:54:37 · 93 阅读 · 0 评论 -
第一期第五题
我不会,是粘贴别人的#include "pch.h"#include<stdio.h>#include<iostream>#include<string.h>using namespace std;int a[120]; //记录分离的数据;char b[1000];//记录总数据;void fun1();void fun2();void f...原创 2018-12-07 16:02:05 · 103 阅读 · 0 评论 -
欧几里得算法
欧几里得算法求最大公约数,得出最大公约数之后,可以运用两个数的乘积除以最大公约数即可得到最小公倍数。欧几里得算法主要是让大的数于最小的数,然后让大的数记住小的数,让小的数记住余数知道余数是0的时候输出0上一次的余数,就是最大公约数。 #include<iostream>using namespace std;int gcd(int a, int b){ int t;...原创 2018-12-21 16:57:51 · 83 阅读 · 0 评论 -
01背包问题
这又是一道死磕很久的题目,不过还是有收获的,很多事情都是要从最简单的开始。01背包是用二维数组解决问题。接下来看代码吧。 我们可以把他看成是一个小偷偷商品的问题,a[i][j].i表示偷多少商品的数量,然后j就是自己包容量的大小。当for循环遇到的i表示的意思就是第i个商品,接下来判断能不能够把他装下。如果装下的话,就要先减去背包空间,再把剩余的空间分配到最值钱的情况中去。最后和不装的情...原创 2018-12-21 16:13:39 · 100 阅读 · 0 评论 -
没有意义的事情,查找一篇文章有多少不同的单词
第一次运用到map函数。然后还发现了一些关于字符串的特别输入,收获颇好。 #include <iostream>#include<map>//map里的value,不会记住重复的东西,所以这是很好的记住不同单词的容器。#include<string>using namespace std;map<string, int> GG;int...原创 2018-12-20 22:49:52 · 222 阅读 · 0 评论 -
汉诺塔移动次数的问题周赛problem B
https://vjudge.net/contest/274223#problem/BIn summary,要懂得汉诺塔的移动原理,就是不断重复调用递归函数。#include <iostream>#include<cmath>using namespace std;int main(){ int m; int k; int j;long long int...原创 2018-12-15 10:51:16 · 279 阅读 · 0 评论 -
汉诺塔问题
终于弄懂这个问题了55555,还是很有意思的,之前总是想的太复杂,没有找到规律,找到规律才是最重要的!就是有A,B,C三根柱子,然后把n块柱子上的东西看成n-1块,你就会发现,有一个无线循环的动作。 实现整块n-->C的思路,帮整块分成2部分。n-1-->Bn-->Cn-1-->C然而实现n-->C的条件就是n-2-->Bn...原创 2018-12-14 21:09:04 · 83 阅读 · 0 评论