ACM
文章平均质量分 73
yellowjianokok
加油ヾ(◍°∇°◍)ノ゙
展开
-
poj 1069 dfs(难在建立一个坐标)
/*题意:就是给你1到25边长大小的三角形 你可以无限使用 问能不能构成一个大小为<=10的正六边形*//*思路:首先是坐标的变换 坐标变换好了 就是一样的做了 因为呈现的是60的角度 我想都学过坐标转换 由于是成60度的角 所以我们可以把这个放在图上表示为 一个小三角形表示为一个点 坐标的建立如上图所示*/#include#include#include#include#in原创 2015-09-14 17:24:30 · 392 阅读 · 0 评论 -
hdu 1429 状态搜索
Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟只能从一个坐标走到相邻四个坐标中的其中一个。魔王每t分钟回地牢视察一次,若发现Ignat原创 2015-10-02 16:38:52 · 504 阅读 · 0 评论 -
hdu 4745 区间回文最长长度
/*题意:就是给定n个环状的数 俩个人一个从顺时针 一个从逆时针 但是他们走的都要是在相等的数值上面但是他们只能往前走 问他们能这样走多少步*//*思路:题意他么理解了好一会 就是一直往前走 不能回头或者不走 因为是一个环,在区间上去最优解就ok*/#include#include#include#include#include#include#include#includ原创 2015-09-15 20:50:10 · 257 阅读 · 0 评论 -
hdu 5418 (状态压缩)
就是一个人从1出发到途中的其他店都走至少一遍再回到1所需要的最小花费(1)先考虑穷举的方法,将2~n个这n-1个数字的所有组合情况都算一遍,复杂度是 15!=1 3076 7436 8000,那是真的TSP了,不可能实现。 ( 2 ) 可以考虑的就是枚举已经走过的点,这个状态去穷举,然后枚举2~n中没有走过的点,再枚举前面那个状态中已经走过的点 因为可以从任意的已经走过的点到达这个没有达到原创 2015-09-07 18:03:08 · 387 阅读 · 0 评论 -
UVA 1626 区间DP
定义下列为正规括号序列1:空的是正规括号序列2:如果s是正规括号序列 那么[s]和(s)也是正规括号序列3:如果A和B都是正规括号序列,那么AB也是正规括号序列下面的都是正规括号序列 () [()] [] ()[]下面的都不是正规括号序列 ( [ ] )( 输入员工由( ) [ ]构成的序列添加尽量少的括号 得到正规括号序列 并输出#include原创 2015-09-07 16:46:07 · 295 阅读 · 0 评论 -
UVA 816 有点绕的迷宫
题意:一个迷宫,每个点限制了从哪一方向来的,只能往左右前走,然后问起点到终点的最短路径 具体细节看题目好了#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;type原创 2015-09-08 19:33:37 · 271 阅读 · 0 评论 -
二叉树的遍历
二叉树的前序 中序 后序遍历 前序遍历是先父节点 再子节点 中序遍历是先左儿子再父亲再右儿子 后序遍历是先子节点后父节点这里讲如何通过中序和后序遍历俩推出前序遍历和通过前序和中序推出后序。其实不管怎么样都是先把树构造出来 怎么构造树 当然是从父亲节点开始int n; //节点的数目char in_order[maxl],post_order[maxl],lch[maxl],rch原创 2015-09-07 16:26:36 · 223 阅读 · 0 评论 -
codeforces 152C 字符串的运用
//M/* 题意:给定n个字符串 和字符串的长度为m 问你可以去交换任意俩个字符串的任意长度的相对位置的字母 问他可以重组的字符串有多少(就是不同的字符串)*/#include#include#include#include#include#include#include#include#include#include#include#includeusing na原创 2015-09-10 14:51:28 · 330 阅读 · 0 评论 -
hdu 2594 扩展KMP模板题
//M hdu2594 扩展KMP 模板题//题意:给定两个字符串,在第一个字符串中找到一个最大前缀作为第二个字符串的后缀//思路:将S1作为模式串 然后在s2中寻找,S2作为目标串,用KMP就好,看到S2的最后一个字符时能匹配S1中的第几个字符;#include#include#include#include#include#include#include#include原创 2015-09-14 20:28:53 · 1415 阅读 · 2 评论 -
hdu 2476 区间DP
/*题意:就是把一个字符串编程另外一个字符串 操作就是把A串中的任意一个子串变为另外只有一个字符组成的串 问最小变换*//*思路:就是先初始化的时候是每个s1串的字符匹配每个s2串的字符 d[i][j]=j-i+1;然后再中间的时候当然就是d[i][j]=d[i+1][j]; 由于如果s2[i]==s2[k] 那么我们在变化s1串的时候是不是就可以直接变换i~j的子串了呢 而不是单独原创 2015-09-15 18:29:54 · 259 阅读 · 0 评论 -
hdu 3336
/*题意:就是让给你一个字符串,然后计算不断增加的前缀字符串在整个字符创当中出现的次数和,可能出现的次数过大,所以要求结果1007.例如:abab a 2 ab 2 aba 1 abab 1 2+2+1+1=6*//*思路:其实我们想想比如对于位置i来说,现在我们求出了f[i]的值,那么[0,f[i]-1]串就是一个能匹配i-1位置的最长的前缀串。且我们根据f[i]的值可以定位其他所有可原创 2015-09-14 19:58:21 · 360 阅读 · 0 评论 -
2015年百度之星程序设计大赛 - 初赛(1)
B:http://acm.hdu.edu.cn/showproblem.php?pid=5247Problem Description小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的。现在小度熊增加题目难度,他不想知道是否有这样的 k 的区间,而是想知道有几个这样的 k 的区间。 Input输原创 2015-11-22 23:21:32 · 531 阅读 · 0 评论 -
hdu 1055 && poj 2054
/* hdu 1055&&poj 2054 给定一棵树上访问 但是要求是先访问了父亲节点才能访问子节点 首先是从根节点开始的每个节点都有一个权值,访问的时间是递加的,访问的费用是每个节点的权值*访问的顺序,问最后最小花费*//*贪心的思想: 采用累积的想法,一开始的时候“权值”=权值,这样的话我们一定要先找到当前的“权值”的最大值 然后*他父亲的访问时间,因为访问完父亲节点一定先访问它原创 2015-10-09 15:06:55 · 366 阅读 · 0 评论 -
树的相关操作
树的直径 对于树上的边带有权重的话 而且每个节点最多只能经过一次的话 我们定义树的直径是俩个点最大距离为树的直径 然后其他的点的最大距离为到俩个直径端点的最大的那个#include#include#include#include#include#include#include#include#include#include#includeusing names原创 2015-10-02 23:26:20 · 253 阅读 · 0 评论 -
codeforces 582A GCD Table
就是给你一个数n 给定n*n个数表示为某n个数相互取gcd的值 你现在的任务就是输出这n个数分别是什么#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#de原创 2015-10-07 22:57:01 · 245 阅读 · 0 评论 -
2015 长春网赛 图论
//hdu 5438/*题意:就是给你一个图 每个节点都有一个价值 问去掉那些度数小于2的点后 构成的奇数环的所有点的值之和*//*bfs dfs 对于图来说都是O(n)的算法,对于数据特别大的来说应该好好去想想这个方面的算法 乱搞只会超时*//*#include#include#include#include#include#include#include#include原创 2015-09-19 17:41:11 · 424 阅读 · 0 评论 -
cf 579B
// cf 579B 就是给你一个完全图 每个边有一个权值 问你把这些点(偶数个)分成n/2对点对 使得点对的权值和最大//一个优先就解决了 本来自己想到了 但是立刻被自己否认了 欲哭无泪呀!后面一定要试一发 万一AC了呢!!#include#include#include#include#include#include#include#include#include原创 2015-09-17 14:10:26 · 1053 阅读 · 0 评论 -
KMP
// hdu 1358前缀是由几个循环串组成 next数组的运用 next[i]数组是后缀与前缀的最大相匹配的字符个数#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long原创 2015-10-05 19:01:33 · 248 阅读 · 0 评论 -
四川省赛
frog has n integers a1,a2,…,an, and she wants to add them pairwise. Unfortunately, frog is somehow afraid of carries (进位). She defines \emph{hardness} h(x,y) for adding x and y the numbe原创 2015-10-01 15:12:24 · 440 阅读 · 0 评论 -
codeforces 159D 多加二维的区间DP
/*要求你对一个合法的括号序列进行染色,并且需要满足以下条件1、要么不染色,要么染红色或者蓝色2、对于任何一对括号,他们当中有且仅有一个被染色3、相邻的括号不能染相同的颜色*/#include#include#include#includeusing namespace std;#define MAXN 705#define MOD 1000000007typede原创 2015-09-10 14:24:03 · 339 阅读 · 0 评论 -
codeforces 152E bfs+状态压缩
/*题意:在一些n*m的网格中 每个格子里面都有一些不同数量的花 问现在要使得一些给定的重要位置联通 你需要破坏至少多少花来使得道路联通*//* 我们采用暴力的思维 把重要位置当成状态来处理 然后枚举出发的位置点 取最优结果就ok啦*/#include#include#include#include#include#include#include#include#includ原创 2015-09-10 14:03:06 · 404 阅读 · 0 评论 -
UVA 10118 dfs
/*有四堆糖果 每堆糖果都是n个 并且糖果用一个<=20的数来表示,问一个人拿着一个篮子 篮子的容量是5 一旦拿的这个和篮子里的相等,就把篮子里的这个拿出来 要不然就把拿的这个放进篮子里 问最大你能拿到多少对*/#include#include#include#include#include#include#include#include#include#include#i原创 2015-09-09 21:26:32 · 288 阅读 · 0 评论 -
hdu 5113 bfs
/*题意:一开始并不会,给定一个N*M的棋盘,要求用K种颜色对每个格染色,相邻的格的颜色不能相同。并且第i种颜色必须恰好出现c[i]次。求是否存在方案,如果存在,输出任意一种*/#include#include#includeusing namespace std;int map[10][10];int T, n, m, k;struct Color{ int id, cn原创 2015-09-08 20:26:05 · 233 阅读 · 0 评论 -
hdu 3555数位DP 入门题
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define inf 0x3f3f3f3f#define eps 1e-10#define maxl 3001原创 2015-08-18 19:17:42 · 271 阅读 · 0 评论 -
UVA 10817(状态压缩)
学校要安排s个课程的教师,每个课程至少有两门老师任课,已知学校现有现有的n位老师的工资和任课情况,和m为前来应聘的老师的薪资和任课情况,求出安排全部课程的最少薪资花费。不得开除现有老师。#include#include#include#includeusing namespace std;const int maxn = 100 + 20 + 5;const int maxs =原创 2015-09-08 19:50:00 · 491 阅读 · 2 评论 -
hdu 1238 字符串的简单运用
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define inf 0x3f3f3f3f#define eps 1e-10#define maxl 3001原创 2015-08-18 17:11:29 · 331 阅读 · 0 评论 -
hdu 2955 (简单dp)
题意:某个人去抢银行 但是有一个概率p 如果被抓的概率小于p 它的妈妈才会同意他去抢银行 有n个银行 每个银行的钱和被抓的概率让你计算他可以在不被抓的情况下抢到的最大money思路: 简单dp 需要钱的最大数目 就是算出它抢多少钱时候的被抓可能性 如果不被抓 抢到的钱多的话就是这个答案状态转移方程:dp[j]=max(dp[j],dp[j-money[i]]*原创 2015-08-05 14:18:27 · 299 阅读 · 0 评论 -
UVA 1620(找规律)
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define inf 0x3f3f3f3f#define eps 1e-10#define maxl 3001原创 2015-08-04 23:35:08 · 918 阅读 · 0 评论 -
UVA 1619 动态规划
定义二个数组,分别记录下某个位置的值所能达到的左边和右边,来使题目条件成立,然后再遍历一遍数组即可。#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace st原创 2015-08-04 23:32:13 · 306 阅读 · 0 评论 -
UVA 10391 trie树
这个题目就是按照字典序从小到大给你n个字符串 让你找出其中敲好由其他俩个字符串组成的字符串并且输出这里讲述三种方法 可以自行做出比较1.暴力 这种方法是最慢的 是第三种方法的时间的10+倍 而且是最麻烦的 需要严谨耳朵逻辑思维和编码能力#include #include #include #include using namespace std;int main()原创 2015-09-09 13:13:48 · 283 阅读 · 0 评论 -
UVA 10559 区间DP
/*题意就是一个一维的消灭星星的方块 问最大得分是多少*/#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pp;#define inf原创 2015-09-09 20:54:38 · 281 阅读 · 0 评论 -
UVA 1629 二维裸区间DP dfs
/*1~n 1~m网格中有一些樱桃 每次切蛋糕使得每一块蛋糕上面恰好一个樱桃 问切割的总长度最小是多少*//*思路:这里就是遍历这个蛋糕 然后最小进行统计就好了*/#include#include#include#include#include#include#include#include#include#include#includeusing namespace s原创 2015-09-09 21:41:39 · 287 阅读 · 0 评论 -
codeforces 155C dp
//R 取出最少的字符 使得里面不包含给定的字符对和逆序字符对/*思路:cf题目一般难想 但是代码简洁 简单统计一下就好啦 我一定要想办法拿下C题*/#include#include#include#include#include#include#include#include#include#include#include#includeusing namespa原创 2015-09-10 13:28:07 · 223 阅读 · 0 评论 -
codeforces 157D 模拟
/*题意:福尔摩斯正在处理一件案子。此时已经抓捕了n个嫌疑人,里面只可能有一个是真正的犯人。福尔摩斯正在审问这些嫌疑人。每个嫌疑人的回答只有两种,一种表明他说编号为i的嫌疑人不是犯人,用-i表示;另一种表明他说编号为i的嫌疑人是犯人,用+i表示。聪明的福尔摩斯已经知道了其中有m个人说的是真话。要求那些人说的是真话,那些人说的是假话。*//*思路:我们先假设某个人是嫌疑犯,然后统计真话的个数原创 2015-09-10 13:12:39 · 476 阅读 · 0 评论 -
UVA 514 栈
//给定输出序列 给定顺序的输入 通过栈的操作 问能不能得到给定的输出序列#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pp;#d原创 2015-09-09 18:59:08 · 243 阅读 · 0 评论 -
hdu 4886 hash+暴力
/* 题意:给你一个字符串 让你选一个最短的字符串 但是不能是这个字符串的子串 如果存在多个 输出字典序最小的那个 虽然给定的字符串的长度达到1000000 但是只包含前面八个大写字母*/#include #include #include #include #include #include #include #include #include #include原创 2015-09-08 22:22:35 · 284 阅读 · 0 评论 -
hdu 5122 简单题
//给定n个数 要使得其从小到大排好序之后问交换的最少次数是多少 逆序对才需要交换一下#include #include #include using namespace std;int a[1000010];int main(){ int t,ii,n,i,Min,ans; scanf("%d",&t); for (ii=1; ii<=t; ii++原创 2015-09-08 20:52:12 · 296 阅读 · 0 评论 -
hdu 5116 dp
/*题意: 给定一个点集合 问从中选出子集 如果存在(a,b) 对于x,y集合Q{(x,y),(x+1,y)...(x+a,y),(x,y+1)...(x,y+b)并且gcd(a,b)==1 那么集合Q是good 问从给定集合S中找出集合对(A,B) A,B both good A,B都是S的子集 且A交B为空 *//*思路:求出每个点向右,向上延伸的距离。dp[d][n]: [1,原创 2015-09-08 20:48:48 · 563 阅读 · 0 评论 -
hdu 4885
/* 题意:给你一个起点,一个终点和一些加油站,你只能走直线,只能到达这三种点,经过加油站必须加油,一次加油可以走L的距离,问最少经过加油站几次可以从起点到达终点*/#include #include #include #include #include #include #define INF 0x3f3f3f3f#define maxn 1005#define MAXN原创 2015-09-08 21:44:45 · 390 阅读 · 0 评论 -
UVA 1218 (树形DP)
题意:n个台式机器构成树状结构 使得每台不是服务器的计算机恰好和一台服务器相邻 问需要的最少服务器机的个数。思路:我们假定 0:u是服务器的话 那么他的子节点都可以是服务器或者不是服务器(如果这个不是服务器的话就是他的子节点也不能是服务器 对应1)。 1:如果u不是服务器 但是u的父亲节点是服务器 那么u的所有子节点都不能是服务器。2:如果u和u的父亲节点都不是服务器,但原创 2015-08-07 23:54:44 · 310 阅读 · 0 评论