【HDU 2669】Romantic】的更多相关文章

Problem Description The Sky is Sprite.The Birds is Fly in the Sky.The Wind is Wonderful.Blew Throw the TreesTrees are Shaking, Leaves are Falling.Lovers Walk passing, and so are You. ................................Write in English class by yifenfei…
[HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #include<cstring> using namespace std; int a[20]; __int64 dp[20][11]; void digit_dp() { memset(dp, 0LL, sizeof(dp)); dp[0][0]=1; for(int i=1; i<20; ++i)…
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 332    Accepted Submission(s): 112 Problem Description DZY has an unroote…
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最高位的1在第x位. [就是原集合的任意子集的异或和 与 线性基的任意子集的异或和 完全相等] 2.线性基的构造法: 对每个数p从高位到低位扫,扫到第x位为1时,若ax不存在,则ax=p并结束此数的扫描,否则令p=p xor ax. [高斯消元] 异或版高斯消元后的线性基会变成类似上面的样子(线性基是…
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解,先求出树的直径,那么树的任意节点的最远点必然是直径上的两个端点之一,证明可以通过反证法构造: 设端点为a,b;设任意点为i,假设存在一点c到i的距离大鱼i到a,b的距离,那么a与c又能形成一个距离更长的点对,与ab是直径的假设不符,因此不存在c,证明完成. #include <queue> #i…
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题:给出一棵树,求每个节点的最远点,每一个节点的最远点有两种可能,一种是向下拓展的最远点,一种是父节点的最远点,那么需要两次dfs即可.一次求出每个节点的最远点和次远点,一次直接计算. #include <queue> #include <cmath> #include <cstd…
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 593    Accepted Submission(s): 179 Problem Description NPY's girlfriend blew him out!H…
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1043 [题意] 会给你很多组数据; 让你输出这组数据到目标状态的具体步骤; [题解] 从12345678x这个目标状态开始bfs然后获取它能够到达的所有状态; 然后在队列中记录下执行这一步用的是那个操作; 递归输出就好; map来判定这状态存不存在; 在队列里面存这个状态 就按照所给的存成1维的数组就好; x用9代替;(用0也可以哦); 模拟八数码的操作就好; 因为是逆序的,所以记录的操作是相反…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 110010 char s[MAXN]; inline void Manacher() { ,pos = ,mx = ; ]; ]; len = strlen(s+); ; i <= len; i++) { tm…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀和,即可 [代码] #include<bits/stdc++.h> using namespace std; ; const int INF = 2e9; class mstack { private : int tot; int s[MAXN]; public : inline void cle…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4864 [算法] 贪心 不妨将两个数组分别按x从大到小排序 然后枚举每件物品,选择x值大于该物品的且y值最小的机器对它进行修理 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 100010 #define MAXP 110 int n,m,i,j,pos; long long ans,money; int cnt[MA…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1007 [算法] 答案为平面最近点对距离除以2 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> #inc…
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=2108 [题意] [题解] 逆时针; 可以想象一下; 如果是凸多边形的话; 逆时针的相邻的两条边; 前一条和后一条(逆时针意义上的"后一条")边所代表的向量; 如果做叉积的话; 其结果肯定是指向屏幕外面的; 如果突然变成凹的了; 再做叉乘的话; 指向是屏幕里面的了; 也就是说如果是凸多边形的话; 叉乘的结果应该都为正数; [Number Of WA] 0 [完整代码] #include…
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=2036 [题意] 中文题 [题解] 这里用的是叉积对应的求三角形的面积; 即 A×B=A*B*sina 除2的话就能和面积对应了; 且因为算的是"有向面积" 所以就算是凹多边形也能正确计算; 叉积用行列式来记. A×B=|i j k| |a b c| |d e f| //在二维上就对应c和f为0的情况所以也即a*e-b*d [Number Of WA] 0 [完整代码] #include…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3085 [算法] 双向BFS [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 810 ] = {,,-,}; ] = {-,,,}; int i,n,m,px,py,qx,qy,T; char mp[MAXN][MAXN]; bool visited1[MAXN][MAXN]; bool visited2[MAXN][…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6162 [算法] 离线树剖 我们知道,u到v路径上权值为[A,B]的数的和 = u到v路径上权值小于等于B的数的和 - u到v路径上权值小于等于(A-1)的数的和 不妨将询问拆开,离线计算答案即可 [代码] #include<bits/stdc++.h> using namespace std; ; int i,n,m,u,v,now,timer,tot,cnt; long long l,r;…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3663 [算法] 先建图,然后用Dancing Links求解精确覆盖,即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 500000 int i,j,k,l,m,cnt,N,M,D,u,v; ][]; struct Time { int s,e; } ans[],a[]; struct info { int l,…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1846 [算法] 巴什博弈 若有(m+1)个石子,显然先手不能直接取完,后手必胜 因此,我们可以把石子总数表示为 : n = k(m+1) + r 若r不为0,则先手取走r个,若后手取s个,先手取(m + 1 - s)个,只要保证留给对手的石子数是(m+1)的倍数即可,先手必胜 否则,先手必败 [代码] #include<bits/stdc++.h> using namespace std; i…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1847 [算法] 我们知道,每一种状态,要么必胜,要么必败 记忆化搜索即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 1010 int n; int f[MAXN]; inline bool dfs(int n) { int i; ) return f[n]; f[n] = false; ; i <= ;…
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 让你求出[a..b]这个区间内和N互质的数的个数; [题解] 利用前缀和,求出[1..a-1]和a[1..b]这两个区间内和N互质的数的个数; 方法是; 从小到大求出N的所有因子xi; 然后从大到小枚举每个因子xi; 可以求出[1..t]内和N的最大公因数为xi的个数设为f[xi]; (减去大于xi且为xi的倍数的y就好,即f[xi]-=f[y],一开始f[xi]=t/xi);…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2176 [算法] Nim博弈 当石子数异或和不为0时,先手必胜,否则先手必败 设石子异或和为S 如果S xor ai <= ai,那么,第一步就可以从第i堆石子中取走(S xor ai)个石子 [代码] #include<bits/stdc++.h> using namespace std; #define MAXM 200010 int i,m,k,sum; int a[MAXM]; i…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5015 [算法] 矩阵乘法 [代码] #include<bits/stdc++.h> using namespace std; ; int i,j,n,m,ans; ],val[]; struct Matrix { ][]; } b; inline void multipy(Matrix &a,Matrix b) { int i,j,k; Matrix res; memset(res.m…
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1890 [题意] 给你n个数字; i从1到n; 每次让你把第i小的数和数组的第i个元素之间这段区间内的数翻转 (第i小的数到了第i个位置); 让你输出每次操作前第i小的数的位置; [题解] 伸展树的区间翻转以及删除操作; 维护区间的最小值; for (int i = 1;i <=n:i++) 每次找到最小的数,然后看看它的左子树的大小->cnt; 答案就为i+cnt; ->这个数字在数组中…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=3987 [Description] 给出一张有n个点的图,有的边又向,有的边无向,现在要你破坏一些路,使得从点0无法到达点n-1.破坏每条路都有一个代价.求在代价最小的前提下,最少需要破坏多少条道路.(就是说求在最小割的前提下,最小的割边数) [Solution] 我们先在原图上跑一次最大流; 求出跑完最大流之后的剩余网络. 显然,最后剩余网络上容量变成0的(也就是满流的边); 它才可能是最小割的…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=4289 [Description] 给出一个又n个点,m条边组成的无向图.给出两个点s,t.对于图中的每个点,去掉这个点都需要一定的花费.求至少多少花费才能使得s和t之间不连通. [Solution] 最小割问题. 根据最大流最小割定理; 跑一次最大流即可; 因为是去掉点; 所以,把每个点转换成2个点; 2个点之间建一条边,容量为删掉它的花费. 这两个泛化出来的点,一个点作为原本点的"进点&quo…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=4649 [Description] 给你一个由位运算"与""或""和"组成的计算表达式; 每个运算符都有p[i]的几率消失; 问你最后这个计算表达式的值的期望是多少? 运算的数字< 220 [Solution] 因为二进制在进行位运算的时候,是不会产生进位的; 因此,我们可以一位一位地算; 即从二进制的第一位开始算,通过一个简单的DP,得到…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=3478 [Description] 一个人从起点s出发,假设他在时间t在节点x; 则在时间t+1,他能到达x-y-z这条路径的z节点上; 也即越过一个节点.到达下一个点. 且只能这样走; 问他能不能走遍所有的点. [Solution] 如果图是不联通的.那么肯定走不遍. 是联通的话, 如果是一张二分图的话. 这样的走法只能从二分图的左半部分点之间走来走去; 永远走不到右边的点; 而只要在二分图的左…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=1068 [Description] 有n个人,一些人认识另外一些人,选取一个集合,使得集合里的每个人都互相不认识,求该集合中人的最大个数. [Solution] 最大独立子集问题; 等于节点个数-最小点覆盖. 写之前做一下染色,从0开始写最大匹配. [NumberOf WA] 0 [Reviw] [Code] #include <bits/stdc++.h> using namespace st…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=1083 [Description] 有p门的课,每门课都有若干学生,现在要为每个课程分配一名课代表,每个学生只能担任一门课的课代表,如果每个课都能找到课代表,则输出"YES",否则"NO". [Solution] 二分图最大匹配. 看看是不是完美匹配即可. [NumberOf WA] 0 [Reviw] [Code] #include <bits/stdc++.…
Problem Description There are N hotels all over the world. Each hotel has a location and a price. M guests want to find a hotel with an acceptable price and a minimum distance from their locations. The distances are measured in Euclidean metric. Inpu…