
hdu
YYyyCCCcccBb
觉得为时已晚的时候,恰恰是最早的时候。
展开
-
hdu2047阿牛的EOF牛肉串
思路:E的后面可以+O /F /EF。。。。。+O / E /FO的后面只可以+E /F给出一段代码纯手动推#include #include using namespace std;long long E[100];long long O[100];long long F[100];long long num[100];int main(){ int原创 2016-09-22 18:16:37 · 303 阅读 · 0 评论 -
hdu-1003-Max Sum
思路:最长子段和变形,只是要注意下有负数解#include #include #include #include using namespace std;char s[500500];int table[100];int solve(int tx){ int i; for( i=tx;i<tx+26;i++) { if(table[s原创 2016-09-20 21:55:55 · 226 阅读 · 0 评论 -
hdu 2098 分拆素数和
思路:素数打表,判断#include #include using namespace std;int prime[10015]; void init() { prime[1]=1; for(int i=2;i <= 10005 ; i++ ) { if(prime[i]==0) { for(int原创 2016-09-20 22:00:09 · 236 阅读 · 0 评论 -
二分-hdu-2199
思路:二分求值是否满足。#include #include #include #define exp 1e-15using namespace std;double Y;double judge(double x){ double num=x*8*x*x*x + 7*x*x*x + 2*x*x + 3*x + 6; return num;}int mai原创 2016-09-20 22:01:49 · 327 阅读 · 0 评论 -
bfs-HDU 1253 胜利大逃亡
重点这题是三维的。要找好始末位置!做了这么久才发现了一道在最优解的问题上bfs dfs有矛盾的题。dfs交了N发过不去。bfs写了两发就过了。#include #include #include #include using namespace std;struct node{ int x,y,z,step;};int mp[55][55][55];int v原创 2016-10-14 09:53:44 · 356 阅读 · 0 评论 -
HDU 5011 Game-多个堆的NIM博弈
#include #include using namespace std;int main(){ int n; while(~scanf("%d",&n)) { long long t ; long long ans; scanf("%lld",&ans); for(int i=2; i<=n; i+原创 2016-10-14 10:00:38 · 266 阅读 · 0 评论 -
贪心-HDU 5014 Number Sequence
思路:对于每一个数字的二进制是唯一的,所以他的反也是唯一的(除符号位)。这样0 ^ 1 = 1 可以使的所有数字取得最大值。(之前写的时候判断了 下是否有重复的,看了下网上代码发现想多了。。)每次对于一个数字找到他的按位反,并且记录映射关系。最后输出即可。注意每次操作可以确定 两个数 3-->4 同时4->3也就随之确定了。ans注意*2#include #include #原创 2016-10-14 10:49:21 · 256 阅读 · 0 评论 -
bfs-HDU 5012Dice
题意:给出初状态,给出末状态,4个方向翻转最少几步。思路:一开始以为是个规律题。查了下是个搜索。知道是搜索就很好做了#include #include #include using namespace std;struct node{ int left,right,top,bottom,front,back,step;};node save[10000];i原创 2016-10-14 12:28:12 · 341 阅读 · 0 评论 -
01背包-hdu 2546 饭卡
思路:把最大的那个值去掉,拿剩下的5元钱去买。注意m#include #include #include #include using namespace std;int dp[1005];int a[1005];int n,m;int main(){ while(~scanf("%d",&n)) { if(n==0)原创 2016-10-03 18:18:23 · 267 阅读 · 0 评论 -
区间DP-hdu5115-Dire Wolf
题目大意:有遮头狼排成一排,每只狼都对相邻的狼的攻击力有加成作用,每杀死一只狼所受到的伤害为当前狼的攻击力(算上加成的部分),被杀死之后的狼对相邻的狼的攻击力的加成会被取消,同时,原先与被杀死的狼相邻的两头狼会变成相邻的狼。要求使得受到的伤害值最小,求出最小值。状态方程:dp[i][j]=min(dp[i][j],dp[起始][k-1]+a[k]+dp[k+1][截止]+左右两遍加成 b[原创 2016-10-03 16:57:50 · 326 阅读 · 0 评论 -
01背包-hdu-2602 Bone Collector
题意:T组数据N个石头,VOC背包容量。第一行石头价值第二行石头花费二维的:#include #include #include #include using namespace std;int dp[1005][1005];int val[1005];int price[1005];int main(){ int T; cin>>T;原创 2016-10-04 14:54:33 · 255 阅读 · 0 评论 -
二维-hdu2191-多重背包
去网上查了下全部都是一维的。但是我感觉二维的或许比一维的更清晰直观一点,然而写了一天没调出BUG。下面给出代码:#include #include #include #include using namespace std;int dp[105][105];int main(){ int T; cin>>T; while(T--) { me原创 2016-10-04 14:57:58 · 230 阅读 · 0 评论 -
HDU 2209 翻纸牌游戏
#include #include #include #include using namespace std;char s[100];void turn (int x){ int i; if(x==0) { i=0; } else i=x-1; for( i;ix+1;i++)原创 2016-10-31 09:31:55 · 472 阅读 · 0 评论 -
dfs-HDU 1175 连连看
思路:对于每次位置进行上下左右四个搜索,标记来的方向,如果相同翻转次数不增长。注意turn==2时同行同列的情况下会有优化,vis数组标记到达当前位置最小转弯次数PS:当时自己做死活不出,比赛时候怼了三发竟然出了,运气真不错#include #include #include using namespace std;int n,m;int vis[1005][10原创 2016-10-31 09:34:29 · 308 阅读 · 0 评论 -
dfs-hdu 5113 Black And White
题意:中文翻译:有一个包含从1到K一共K种颜色的N×M棋盘,使得任意两个相邻的区块不能有相同的颜色(如果它们的上、下、左、右任意一边的颜色与自身颜色不同)。第i种颜色可以被使用Ci次。Input第一行包含一个整数T(1 对每一个测试用例第一行包含三个整数N,M,K(0 第二行包含K个整数Ci(Ci>0),表示第i种颜色可以被使用的次数。原创 2016-10-31 21:29:31 · 437 阅读 · 0 评论 -
HDU 1796 How many integers can you find 容斥原理
题意:给定一个数字n,求“小于n”的所有数字中,有多少个满足可以整数给出的m个元素思路:很明显是个高中的容斥原理,自己写了个dfs,结果忘记剔除0,1,以及比如4,8有公因子的特殊条件了。心酸。代码如下#include #include using namespace std;typedef long long ll;ll sum;ll n,m,num;int cnt=原创 2016-11-17 20:16:50 · 288 阅读 · 0 评论 -
矩阵快速幂-HDU5015
PS寻思一小时。构造半小时。代码半小时。无限长的DEBUG。思路:本来天真的找到规律。想斜线走规律的。结果突然发现233....3这也太坑了!之后知道了可以构造矩阵快速幂的形式来AC。就开始了构造之旅。。首先:2333这种形式。因为是个素数。必定无法用一个位置构造出来。那么我们可以拆成2330+3 230+3 23+3 类似的形式。接下来就是规律的问题了。拿第一列23原创 2016-10-12 15:37:21 · 289 阅读 · 0 评论 -
hdu-3410Passing the Message
题意:左边找一个比他矮的最高的。右边找一个比他矮的最高的思路:单stack维护, 为什么暴力能过?哪位帮忙分析下复杂度#include #include #include #include #include #include using namespace std;int a[50005];int l[50005];int r[50005];int main()原创 2016-11-19 22:00:05 · 282 阅读 · 0 评论 -
HDU2795-Billboard(点更点查)
题意:给出一个高h,宽w的板子,要写n条长为x的广告,问从1->h 可以写在哪个位置。思路:第一次写的时候没注意数据 造了个4*h的线段树,果断RE,再想了想n的数据很小,如果依据n来构造线段树,就解决了在构造的时候注意左,右子树的val值的更新,以及构建当前树是几号,还有就是在当前节点如果max( 左,右) #include #include #include原创 2016-12-05 20:46:02 · 190 阅读 · 0 评论 -
hdu5805-NanoApe Loves Sequence
题意:每次删除任意一个数字,记录最大的差值的绝对值之和。思路:第一次写的时候记录最大和次大,然而不对。留组数据 1 31 100 2如果这种写法需要维护第三大。接下来就是网上各种copy万家的代码了。前数组,后数组,维护#include #include #include #include using namespace s原创 2016-12-06 22:00:43 · 238 阅读 · 0 评论 -
hdu2588gcd-欧拉函数应用
题意:给定T组数据,每组数据N,M询问有多少个 1=m思路:以前只是知道欧拉函数(当然求还是靠板子)有用来求从1-n-1中 与n互质的个数,这个题是一个应用(x,n)>=是题目要求->设 gcd(x,n)==d p 与 q 分别是 在等式1.2中d的系数 x= p * d n=q * d;其中d>=m当我们枚举确定了d之后,自然可以求出q, 因为我们原创 2016-11-17 20:09:38 · 356 阅读 · 0 评论 -
HDU 3282-Running Median
题意:在奇数个数的时候输出中位数。思路:离散化,线段树,数据量很小,暴力也过#include #include #include #include #include using namespace std;typedef long long ll;struct node{ int num,id;};node a[10000];int b[100原创 2016-12-16 16:57:00 · 318 阅读 · 0 评论 -
hdu5154-Harry and Magical Computer
题意:判断是否有环存在思路拓补排序#include #include #include #include using namespace std;int in[105];int out[105];int head[105];struct node{ int u,v,next;}edge[10005];int cnt=0;int yes;void a原创 2016-12-16 21:28:56 · 261 阅读 · 0 评论 -
H - Tempter of the Bone HDU - 1010 奇偶剪枝
题意:n,m行列,t时间从s到达D思路:普通搜索过不去,TLE。必须用奇偶剪枝,网上http://www.tuicool.com/articles/muMVZj说的挺好的。#include #include #include #include #include using namespace std;char mp[105][105];int vis[105]原创 2016-12-17 17:05:39 · 298 阅读 · 0 评论 -
Destroy the Well of Life HDU - 1692
题意:引爆生命之泉,手动引爆能量为p[i] ,里面的水会流向下一个泉,如果当前水+流的水>容量,生命之泉就被动引爆。注意:枚举每一个第一次引爆的泉水位置时候特判一下第一个是否比当前最小的还小 #include #include #include #include #include #define maxn 200005using namespace std ;原创 2016-12-17 18:25:12 · 315 阅读 · 0 评论 -
Reorder the Books HDU - 5500
题意:书号从上到下,从大到小。每次只能移动一本书。问最少移动几次可以还原思路:拿到最大的书开始往上找是否存在次大的。#include #include #include #include #include #define maxn 200005using namespace std ; int a[maxn];int main(){ int T;原创 2016-12-17 20:53:50 · 278 阅读 · 0 评论 -
HDU 2115-I Love This Game
题意:对于给出的人按时间排序。时间相同按人名从小到大排序。思路:把时间人名都做成字符串。#include #include #include #include #include using namespace std;struct node{ string name; string time;}a[105];int cmp(node x,node y原创 2016-12-20 20:21:00 · 253 阅读 · 0 评论 -
HDU 2089 不要62 数位DP入门
思路:第一次写数位DP,学了大半天也没看明白网上dfs版本的数位DP,之后了下学长,才明白过劲!第一篇,争取写详细一点。数位DP有些人会和DP一样找出一个转移方程,然后依据转移方程写一个同其他DP题一样的解法。但是数位DP也有另外一种解法:记忆化搜索,下面的主要是写记忆化搜索的想法:先将每一个数字拆分,之后开始搜索,搜索时需要三个参数:第一个:当前位,也就可以找到当前位的数字原创 2017-01-18 15:03:48 · 326 阅读 · 0 评论 -
HDU - 3555 Bomb
题意:问从1~N里有多少个数字含有49这个子串思路:同不要62,基础数位DP,代码里注释#include #include #include #include #include typedef long long ll;using namespace std;ll dp[1000][2];ll a[1000];ll dfs(int len,bool原创 2017-01-18 20:08:00 · 317 阅读 · 0 评论 -
HDU-3652 B-number(数位DP)
题意:找出1~N中所有既包含13这个子串又可以被13整除的数字个数思路:和之前做的数位DP一样,套路同样很强。就是增加了一个余数的记录。并且多加了一个状态状态一:前面一位是3状态二:存在13状态零:前面一位不是1,并且不存在13#include #include #include #include using namespace std;typedef原创 2017-01-19 10:49:04 · 243 阅读 · 0 评论 -
hdu 3549 FlOW Problem
题意:N个点,m条边。1~N最大流量思路:模板#include #include #include#include using namespace std;const int N = 205;const int INF = 0x3f3f3f3f;int n,m,mp[N][N],path[N],flow[N],st,ed;queue q;int bfs(){原创 2017-01-22 13:04:27 · 256 阅读 · 0 评论 -
CodeForces 55D Beautiful numbers
题意:找出L~R中所有的数字,数字和可以被每一位数字整除的总个数思路:1~9中,如果同时能被 比如1 3 5整除,那么一定能被最小公倍数15整除建立HASH映射,反应在最小公倍数的情况下 for(int i=1;i { if(MOD%i==0) { Hash[i]=cnt++;原创 2017-01-26 14:03:22 · 276 阅读 · 0 评论 -
HDOJ-1024 Max Sum Plus Plus
题意:给出m个数, 让分成n段,使得加和最大,注意每段不能相交思路:自己也就能想到二维了,但是并不能过,下面记载一下网上优化后的思路。如果用二维的数组,会好写一些dp[i] [j ] 前i个数字 ,分成j段 最大的和dp[i ][ j]对于第i个数字,有两种转移方法,一种是单独成立一个组 dp[i][j]= dp[ 1->i-1][j-1] +s[i] 找到之前i-1个数字原创 2017-03-06 13:01:48 · 300 阅读 · 0 评论 -
HDU 1029 Ignatius and the Princess IV
题意:找众数,且必定存在思路: 忘记是在什么书上看到过的了, 理论是,如果存在一个众数:记录当前拿到的数字,以及个数,如果下个拿到的数字,与标记的数字不等,则个数-1,否则个数+1,如果个数#include #include #include #include #include #include #include using namespace std;typede原创 2017-03-06 13:13:03 · 634 阅读 · 0 评论 -
hdu5253-连接的管道(优先队列+bfs)
思路:优先队列+bfs 走过的标记掉。第一次判断标记仍在前面了结果TLE了。。vis放在判断里,不要仍进队列就过来。#include #include #include #include using namespace std;int n,m;int mp[1005][1005];int vis[1005][1005];long long ans;struct原创 2017-03-10 20:50:50 · 390 阅读 · 0 评论 -
HDU4027:Can you answer these queries?(点更新,区间查,l和r比较巨坑!!)
题意:给n个数字, 操作0将l->r的数字都变为原来的sqrt,操作1询问l->r的区间和。思路:注意在1的时候我们就不需要再做根号了,因为sqrt1==1 因此可以快速维护出一个解答的区间!最有意思的是 l可能大于r 真坑!#include #include #include #include #include using namespace std;co原创 2017-03-13 14:34:20 · 315 阅读 · 0 评论 -
POJ 2528 Mayor's posters+zoj 1610 Count the Colors(数组记录)
思路:对于线段树区间覆盖的这种题。。我觉得我的办法也挺好,而且如果查询次数更多的话,我觉得线段树也不一定能过,这个办法只要n在10^5以下。。感觉10^5会死里。我觉得是可以过目前至于到10^3 10^4poj 2528#include #include #include using namespace std;int wall[10000001];int l[10005原创 2017-03-13 16:09:07 · 253 阅读 · 0 评论 -
HDU 1534 Schedule Problem 最短路+差分约束
题意:给出FAS A-B>=-wa FAF a-b>=wb-wa SAS a-b>=0 SAF a-b>=wb问是否存在可能,若可能输出最短时间思路:A-B>=C的形式,询问最小解, 构造最长路的形式FAS: b->a ==-waFAF:b->a==wb-waSAS: b-.>a=0SAF b->a=wb#include #include #inc原创 2017-04-10 11:26:52 · 293 阅读 · 0 评论 -
Reading comprehension HDU - 4990
思路:哎,比较菜,不会找规律,就只好构造了一个奇数矩阵和偶数矩阵! 构造对应的base矩阵 就是 ji*ou 判断如果偶数矩阵就再乘一下!#include #include #include #include #include using namespace std;typedef long long ll;ll n,m;const int maxn=3;s原创 2017-04-05 14:40:43 · 446 阅读 · 0 评论 -
HDU 3666&& UVALive - 5094 THE MATRIX PROBLEM(stack判负环,差分约束)
题意:给出n*m的矩阵 ,询问是否能找出一组个数为N的行向量 以及一组个数为m的列向量,使得 l思路:下次不等式条件多想想差分约束吧! 把 n 和 m拆成不同的点,然后开始构造条件。除法取log 变减法-log_l >=bj-ailog_U>=ai-bj把左侧看成dis 右侧看为u,v; 造点的时候要分清 n,m的标号! 如果spfa能跑出来则说明有最短路。原创 2017-04-06 13:29:57 · 289 阅读 · 0 评论