ACM
KJBU2
只求看懂题意
展开
-
POJ 1676
#include #include int main() { int t; scanf("%d",&t); while(t--) { getchar(); int a1[100],a2[100],a3[101],a4[101],a5[101],a6[101],a7[101],a8[100]; //8个数组分别存8个不完原创 2014-07-01 15:28:06 · 802 阅读 · 0 评论 -
UVA 1329 - Corporative Network
求节点到根结点的距离。用一个D数组保存每一个节点到根结点的距离。在I操作的时候路径压缩,更新D数组。 #include #include int abs(int x){return x>0?x:-x;} const int maxn=20000+20; int pa[maxn],d[maxn]; int find(int x) { if(pa[x]!=x) { int原创 2015-01-13 09:53:31 · 496 阅读 · 0 评论 -
POJ 3928 Ping pong
题目:有n个人,每个人都有对应的值,现在他们要做游。 游戏的规则:3个人一组,必须有一个人的值介于其他两个之间。 思路:现在有n个人,用第i个人取个例子。在第i个人的左边,有C个人比第i个人的值小,那么就有(i-1-C)个比第i个人大 在第i个人的右边,有D个人比第i个人的值小,那么就有(n-i-D)个比第i个人大 那么左边小右边大的组合有:C*(n-i-D)个 那么左边大右边小原创 2015-01-13 19:16:57 · 673 阅读 · 0 评论 -
UVA 11624 - Fire!
先说下题目的意思吧,就是F点表示着火点,然后会向周围扩撒火势,这是就要用到一次BFS。 然后J点表示触发点,只有走到宫格的边界才能出去。这是第二次的BFS WA了好几次。后来才发现原来是我的第二次BFS出了一点问题。其中我有一个判断条件是这样的如果这点 小于火势达到的点数字,才能走。 还有一种情况没有考虑到,那就是这种情况。万一这一个点火势到不了,但是作者可以走,那就走不了这点,原创 2015-02-25 20:33:45 · 480 阅读 · 0 评论 -
HDU(1728+1175) 两道BFS
HDU-1728(逃离迷宫): 刚开始怎么做怎么WA。 后来看了下别人的写法,才知道 不能以一个点四个方向走,而是朝着一个点的方向走到头。 算一个深度。不像DFS那样,往下搜一个就算一个深度。大概意思就是这样。 #include #include const int maxn=100+10; struct node { int x,y; int t; }que[maxn*m转载 2015-04-15 18:25:07 · 453 阅读 · 0 评论 -
HDU 5365(不是地球人)
题目给你一些点让你求构成正3、4、5、6边形的有多少。 题解:构成正3、5、6边形的不可以是整点。 所以题目转换为4点判断是不是正方形。 4边相等在加上一个直角就可以了。 #include #include struct node { int x,y; }a[22]; int dis(node a1,node a2) { return (a1.x-a2.x)*(a1.x-a原创 2015-08-09 13:37:14 · 686 阅读 · 0 评论 -
HDU5326-Work (建反图,遍历)
题目:N个员工,给你n-1对关系u,v,表示u是V的上级,问你的u的下级有K个的数量。 #include #include const int N=100; int nxt[N],pnt[N],head[N]; int n,m,e; int in[N]; void AddEdge(int x,int y) { pnt[e]=y;nxt[e]=head[x];head[x]=e++; }原创 2015-07-29 16:12:47 · 738 阅读 · 0 评论 -
HDU 5386
题意:由这个状态转换成这个状态。给你m个操作,问你m个操作的顺序。必定可以完成。 那么就可以逆向推导。因为一定可以变成这样。 #include #include int num[102][101],num2[102][102]; char str[505][2]; int m1[505],m2[505]; int a[101],b[101]; int n,m; void debug()原创 2015-08-17 20:56:42 · 491 阅读 · 0 评论 -
HDU 5399
题意:给你n个数字,m个函数。每个函数满足,f1(f2(⋯fm(i)))=i 然后有可能函数的不给你,就是写出来-1. 让你自己给-1那行赋值,问你有多少种可能。 只有一个-1的时候肯定是1。 但是没有-1的时候还要看给你的函数 满不满足条件。 -1有k个。1行的种是N!个。 最后一个-1可以被其他已经赋值的-1确定。最后结果是N !^(k-1). #include #i原创 2015-08-18 20:11:16 · 612 阅读 · 0 评论 -
UVA 1160 X-Plosives
这道题是一道简单的并查集,题目中说K个混合物只有K个化学品的话。 而且两个化学品构成一个混合物。这样的情况的就是化学之间构成了回路, 这也符合了并查集的一个特征,判断是否有回路。#include #include const int maxn=1e5+100; int pa[maxn]; int find(int x) { return pa[x]==x?x:find(pa[x]);原创 2015-01-13 09:05:46 · 528 阅读 · 0 评论 -
UVA 11997 K Smallest Sums(优先队列)
题目: You're given k arrays, each array has k integers. There are kk ways to pick exactly one element in each array and calculate the sum of the integers. Your task is to find the k smallest sums among原创 2015-01-12 10:04:15 · 762 阅读 · 0 评论 -
UVA11464 Even Parity
做法: 枚举第一行的所有的情况。然后根据第一行的情况,推出第二行,以此类推 然后就是原来矩阵中的1不能变成0. 根据前两行推出这一行,就是一个点的上下左右加起来要等于偶数。根据这一个推的。 #include #include #include using namespace std; const int inf=1<<29; const int maxn=30; int n,ans; in原创 2014-12-03 03:31:38 · 541 阅读 · 0 评论 -
求最长回文子串0(n)manacher算法
这个算法已经学了好几天,刚学的shihou原创 2014-07-22 17:05:02 · 672 阅读 · 0 评论 -
hdu 1052 Tian Ji -- The Horse Racing 贪心算法
贪心初学参考:点击打开链接 先将田忌跟齐王的马的速度数组进行一次冒泡排序 1、如果田忌最快的马比齐王最快的马快,则比之 2、如果田忌最快的马比齐王最快的马慢,则用田最慢的马跟齐最快的马比 //这是贪心的第一步 3、如果田忌最快的马的速度与齐威王最快的马速度相等 3.1、如果田忌最慢的比齐威王最慢的快,则比之 //这原创 2014-07-02 16:32:29 · 699 阅读 · 0 评论 -
POJ2485-Highways(最小生成树)
题意:给你N个城镇,用最短的告诉告诉公路将他们连接原创 2014-08-22 15:31:39 · 537 阅读 · 0 评论 -
POJ1679-The Unique MST(最小生成树)
Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a connected, undirected graph G = (V, E). A spanning tree of原创 2014-08-22 15:06:35 · 557 阅读 · 0 评论 -
POJ3268-Silver Cow Party(最短路径)
Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ≤ 100,000) unidirec原创 2014-08-25 14:59:58 · 662 阅读 · 0 评论 -
POJ-3026 Borg Maze(最小生成树)
大概题意:给你y行的字符串,求所有原创 2014-08-17 16:10:41 · 510 阅读 · 0 评论 -
poj2513Colored Sticks(快排-二分-并查集-欧拉路)
题意:就是给你一些木棒,原创 2014-09-01 13:33:20 · 554 阅读 · 0 评论 -
HDU-5105 Math Problem
题意就是求这个函数的最大值。 对于三次函数的求大值原创 2014-11-17 20:14:13 · 562 阅读 · 0 评论 -
HDU 5400
题意:问你[1 ,n]之间有多少个连续区间[l,r] 满足存在一个l i 那么一组数字中只有的区间只有就被分为递增和递减,或者单独的递增,或者单独的递减。 有可能两部分的一个点重合。然后这个区间的种数就是(长度+1)*长度/2; #include #include const int N=1e5+10; int main() { int n,d1,d2,a[N],vis[N],vi原创 2015-08-18 20:01:51 · 692 阅读 · 0 评论