- 博客(73)
- 资源 (6)
- 收藏
- 关注
原创 HDU 4974 A simple water problem
#include#includeusing namespace std;int main(){ int t; scanf("%d",&t); int k=1; while(t--) { int n; scanf("%d",&n); int x,sum=0,MAX=0; for(int i
2015-09-29 20:32:44 302
原创 HDU 5247 找连续数(用映射做题,set)
#include#include#include#includeusing namespace std;const int maxm=1e4+10;int num[maxm];int sum[maxm];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) {
2015-09-29 19:03:13 299
原创 HDU 5247 找连续数
第一次用映射做题,感觉挺简单的。#include#include#include#includeusing namespace std;const int maxm=1e4+10;int num[maxm];int sum[maxm];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++
2015-09-29 19:01:56 388
原创 POJ 1543 Perfect Cubes
暴力水过#include#include#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) { int a,b,c,d; for(a=2;a<=n;a++) { for(b=2;b<a;b++)
2015-09-29 13:31:21 381
原创 HDU 1026 Ignatius and the Princess I(优先队列+BFS+打印路径)
#include#include#include#includeusing namespace std;const int maxm=150;int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};char s[maxm][maxm];int map[maxm][maxm];int vis[maxm][maxm];int list[maxm][max
2015-09-28 20:40:29 303
原创 HDU 5475 2015 ACM/ICPC Asia Regional Shanghai Online An easy problem(线段树)
题意:给你n个数和mod,X=1;接下来的n个数a,b,如果a=1,表示X=X*b;如果a=2,表示X=X/(第b个数的b值),线段树做之;if (a==2)将第b个数表示成1;#include#include#includeusing namespace std;#define LL long long#define lson l,m,rt<<1#define rson m+1,
2015-09-28 15:47:11 356
原创 HDU 1180 诡异的楼梯(BFS,用优先队列过)
#include#include#include#includeusing namespace std;char map[25][25];int PRE[25][25];int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};int m,n;int sx,sy,ex,ey;struct node{ int x; int y;
2015-09-25 16:56:13 315
原创 HDU 5441 Travel(最短路径变形)
/*题意:有一个n个点的无向图,给出m条边的边权,给出q次询问,每次给出一个值,求用到所有边权不大于这个值的边的情况下,能够互相到达的点对的个数(自己到自己不算)分析:先把路线按照权值从小到大排序,然后再把那几个值按从小到大排序。后面就是一系列最短路径问题了,貌似不难*/#include#include#includeusing namespace std;const int max
2015-09-24 12:21:40 462
原创 HDU 5437 Alisha’s Party(优先队列)(2015网络赛长春站)
#include#include#include#includeusing namespace std;const int maxm=200005;int ans[maxm];int k,m,p;struct node{ char name[205]; int val; int id; bool operator<(const node &s)co
2015-09-23 22:24:10 301
原创 HDU 5428 The Factor
对于每一个数字,它有用的部分其实只有它的所有质因子(包括相等的)。求出所有数的所有质因子中最小的两个,相乘就是答案。如果所有数字的质因子个数不到两个,那么就是无解。时间复杂度O(n*sqrt(a))O(n∗sqrt(a))#include#include#includeusing namespace std;int vis[100000];int prime[100000];_
2015-09-23 20:16:01 300
原创 HDU 3577 Fast Arrangement(区间覆盖+单点查询)
区间覆盖+单点查询,不是难题#include#include#includeusing namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxm=1e6+10;int sum[maxm<<2];int add[maxm<<2];int a[maxm<<2];void pushup(i
2015-09-22 20:11:42 380
原创 POJ 2777 Count Color(区间覆盖和区间查询)
这题很巧,要用位运算。#include#include#includeusing namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxm=1e5+10;int add[maxm<<2];int sum[maxm<<2];char s[3];int cnt;void pushup(
2015-09-22 19:05:07 310
原创 HDU 1195 Open the Lock
BFS题,so easy!#include#include#include#includeusing namespace std;const int maxm=10;int vis[maxm][maxm][maxm][maxm];int m,n;struct node{ int a[4]; int step;}num1,num2;void bfs(){
2015-09-21 15:47:37 265
原创 HDU 5455 Fang Fang 2015沈阳网络赛
#include#include#includeusing namespace std;const int maxm=1e6+10;char s[maxm];int main(){ int t; scanf("%d",&t); int k=1; while(t--) { scanf("%s",s); int le
2015-09-21 10:47:25 339
原创 HDU 5461 2015沈阳网络赛水题 Largest Point
每次网络赛都会出一道水题#include#include#includeusing namespace std;#define LL long longconst LL maxm=1e7;LL m1[maxm];LL m2[maxm];LL n,a,b;LL dfs(LL *c1,LL *c2){ LL M1=-maxm*maxm; LL w; for
2015-09-20 22:19:39 660
原创 HDU 5253 连接的管道
就是就最小生成树,就是有点坑人#include#include#include#includeusing namespace std;#define N 1005int a[N][N];int p[N*N];int m,n;int L;struct node{ int u,v,c;}t;struct node M[N*N*4];int cmp(node p,no
2015-09-20 20:17:39 515
原创 HDU 2095 find your present (2)
位运算很强大#include#include#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF&&n) { int v; scanf("%d",&v); int ans=v; for(int i=1;i<
2015-09-20 15:10:28 231
原创 HDU 4252A Famous City
#include #include #include using namespace std;int a[1000005],x,len;int main(){ int n,i,cas = 1,ans,j; while(~scanf("%d",&n)) { ans = 0; for(i = 0; i<n; i++)
2015-09-20 13:07:43 251
原创 HDU 5463 Clarke and minecraft
简单贪心#include#include#includeusing namespace std;const int maxm=505;int a[maxm],b[maxm];int vis[maxm];int n;int main(){ int t; scanf("%d",&t); while(t--) { memset(vis
2015-09-19 22:08:13 317
原创 POJ 2488 A Knight's Journey
读懂题意就知道是一个简单的DFS了#include#include#includeusing namespace std;#define N 30int vis[N][N];int a[N][N];int m,n;int ok;int dir[8][2] = {{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};vo
2015-09-19 16:57:30 256
原创 POJ 1190 生日蛋糕
#include#include#includeusing namespace std;const int maxm=1e4+10;const int inf=1<<29;int mins[maxm],minv[maxm];int n,m;int bests;void dfs(int s,int v,int level,int r,int h){ if(level==0
2015-09-19 16:09:53 284
原创 HDU 1035 Robot Motion
很简单的模拟题,只需读懂题就行了#include#include#includeusing namespace std;const int maxm=100;char map[maxm][maxm];int vis[maxm][maxm];int n,m,t;int main(){ while(scanf("%d%d",&m,&n)!=EOF&&(m||n)) {
2015-09-18 19:14:08 274
原创 HDU 2102 A计划
坑点:1:当两边都是#号是,是死路 2:当两边种,一边是#,另一边是*是,也是死路。其他都没啥好说的这是一道比较难搞定的搜索题,三维立体搜索。#include#include#includeusing namespace std;const int maxm=20;char map[maxm][maxm][maxm];int vis[maxm][max
2015-09-17 20:36:14 268
原创 HDU 2662 Coin
纯数学题/*设所求为n,那么n+a、n+b可以用a、b线性表出,而n不可。所以 n+a=x1*a+y1*b,n+b=x2*a+y2*b所以 n=(x1-1)*a+y1*b n=x2*a+(y2-1)*b因为n不能被线性表出,所以x1=0,y2=0所以 n+a=y1*b,n+b=x2*a所以 n+a=y1*b,n+a=(x2+1)*a-b所以 (x2+1)*a-b是b的倍数因为a、
2015-09-17 19:09:01 407
原创 HDU 2571 命运
挺简单的一道DP题#include#include#includeusing namespace std;const int inf=-1<<29;const int maxm=1e3+10;int a[30][maxm];int dp[30][maxm];int m,n;int main(){ int t; scanf("%d",&t); whil
2015-09-17 11:56:18 232
原创 HDU 1253 胜利大逃亡
很简单的三维深搜。#include#include#includeusing namespace std;#define N 60int map[N][N][N];int m,n,k,time,ok;int a1,b1,c1,a2,b2,c2;int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};st
2015-09-16 23:41:07 325
原创 HDU 1335 Basically Speaking
简单的进制转换题#include#include#includeusing namespace std;#define N 20char s[N],w[N];char y[N];int a,b;int T(int x,int n){ int s=1; for(int i=1;i<=n;i++) { s*=x; } retur
2015-09-16 22:13:54 455
原创 HDU 2181 哈密顿绕行世界问题
简单的搜索题#include#include#includeusing namespace std;#define N 30int vis[N][N];int t[N];int num[N];int k;int p;void dfs(int temp,int cur){ if(cur==20&&vis[num[19]][k]) { printf
2015-09-16 21:30:17 383
原创 HDU 3779 Railroad
很简单的一道题,用dfs回溯可解决,就是要注意一些坑#include#include#includeusing namespace std;const int maxm=1e3+10;int a[maxm<<1];int b[maxm<<1];int c[maxm<<2];int vis[maxm<<1][maxm<<1];int m,n;int dfs(int x,int
2015-09-16 15:52:44 402 1
原创 HDU 4512 吉哥系列故事——完美队形I
很好的一道题#include#include#includeusing namespace std;const int maxm=400;int a[maxm];int dp[maxm];int main(){ int t ; scanf("%d",&t); while(t--) { int n; scanf("%
2015-09-16 14:37:35 308
原创 大素数判断和素因子分解(miller-rabin,Pollard_rho算法)
#include#include#include#include#include#includeusing namespace std;//****************************************************************// Miller_Rabin 算法进行素数测试//速度快,而且可以判断 <2^63的数//********
2015-09-15 21:57:28 356
原创 HDU 1025 Constructing Roads In JGShining's Kingdom
题意:给你N组数,每组数有两个p,r。问在这2n个点中,连线,求最多可以连好多线在不相交的情况下。分析:把p排序,求r的最长上升子序就行了#include#include#includeusing namespace std;const int maxm=1e6+10;int a[maxm];int dp[maxm];int n;struct node{ int
2015-09-15 20:33:37 229
原创 HDU 1423 Greatest Common Increasing Subsequence
经典LIS问题,去最长上升公共子序(要注意输出格式)#include#include#includeusing namespace std;const int maxm=505;int a[maxm];int b[maxm];int dp[maxm][maxm];int n,m;int LIS(){ int i,j; int ans=-1; for(i=
2015-09-15 20:05:16 239
原创 HDU 5427 A problem of sorting
简单的名次排序问题#include#include#includeusing namespace std;#define N 1005char s[N];struct node{ char name[N]; int socre;}t[N];int cmp(node p,node q){ return p.socre>q.socre;//从大到小排序}
2015-09-15 17:38:59 287
原创 HUD 5256 序列变换
这题就是LIS的变形,很好的题#include#include#includeusing namespace std;const int maxm=1e5+10;int dp[maxm];int a[maxm];int n;int len;int main(){ int t; int k=1; scanf("%d",&t); while(t--)
2015-09-15 16:12:19 377
原创 HDU 2037 今年暑假不AC
#include#include#includeusing namespace std;#define N 105struct node{ int s,e;}t[N];int cmp(node p,node q){ if(p.e==q.e) { return p.s<q.s; } else { ret
2015-09-15 15:26:04 249
原创 HDU 1024 Max Sum Plus Plus
题意:将一个有n个数的数组分为m段,求这m段的最大和#include#include#includeusing namespace std;const int maxm=1e6+10;int dp[maxm];int c[maxm];int a[maxm];int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF)
2015-09-15 15:01:04 266
原创 HDU 1559 最大子矩阵
题意:RT分析:刚开始准备用DP做,想了很久,有了思路,去打代码还是有点困难,很多细节不好处理(还是自己太弱),结果居然让我想出了二维树状数组,瞬间秒过#include#include#includeusing namespace std;#define N 1005int add[N][N];int lower_bit(int i){ return i&(-i);
2015-09-14 22:17:55 272
原创 HDU 1081 To The Max
利用dp思想,先将横排的数字依次求后面的和才c[i][j]=c[i-1][j]+a[i-1][j]],扫描过去,最后,求矩阵和最大的那个。矩阵:c[i][k]-c[j][k];#include#include#includeusing namespace std;#define N 1005int a[N][N];int c[N][N];int main(){ int
2015-09-14 19:30:11 241
原创 HDU 3371 Connect the Cities
最短路水题,Kus算法秒过#include#include#includeusing namespace std;const int maxm=25000+10;int n,m,k,p[maxm],w;int sum;struct node{ int u,v,c;} t[maxm],tt[maxm];int cmp(node p,node q){ return
2015-09-14 14:53:02 231
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人