自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 2016中国大学生程序设计竞赛

题目汇总AB暴力求即可,最后除以GCD(A,B);#include<cstdio>int a[25],b[25];int T,A,B,N;int GCD(int a,int b){ if(b==0) return a; else return GCD(b,a%b);}int main (){ int K=0; scanf("%d",&T

2016-10-06 20:41:20 2053

原创 数据离散化

有些数据的数据量很大,但是我们只会用到其中的某些属性,例如大小等等。这个时候我们就可以对其进行离散化。例如: 11111,22222,33333,99999,44444,88888,55555,66666,77777这几个数据,在只考虑其相对大小的时候,我们可以把它们转化成: 1,2,3,9,4,8,5,6,7这个时候对数据有更多的处理方法。STL处理离散化int a[manx

2016-09-03 20:54:19 749 1

原创 VJ16216/RMQ/线段树

题目链接/*单点更新,用RMQ维护最大值,add对c[i]修改,或加,或减。求[l,r]的和,用sum(r)-sum(l-1).即可。*/#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int max

2016-08-30 13:15:41 379

原创 POJ 3368/RMQ

题目链接/*给出一段序列,询问[L,R]区间内最大相同数的个数。用一个很巧妙地方法,转化成求区间内的最大值的问题。RMQ维护区间最大值。MAX处理:*/ for(int i=1;i<n;i++) { if(a[i]==a[i-1]) d[i]=d[i-1]+1; else

2016-08-29 21:05:47 480

原创 POJ3264/RMQ

题目链接/*询问一段区间内的元素差值最大是多少,用RMQ维护一个最大值和一个最小值,相减即可。*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=50000+5;int h;int dpmax[maxn][18];int dpmin[maxn][18];

2016-08-29 13:38:51 531

原创 POJ 2182/暴力/BIT/线段树

POJ 2182暴力/*题意:一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列。(拗口)首先想到的是从前到后暴力枚举暴力枚举。数据量为8000,O(n^2)。*/#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#

2016-08-29 11:25:57 496

原创 HUD 1541/BIT(数状数组)

题目链接按从左到右,从下到上的顺序给出星星的坐标,计算出level为[0,n)的星星的个数。星星的level为该星星左下边(包括自己正下方的星星,但是不包括自己)星星的个数。BIT模板题。 £:把星星的下标转化成从1开始。 £:想到用BIT做。#include<cstdio>#include<cstring>#include<algorithm>using namespa

2016-08-28 15:30:49 420

原创 POJ 1308/并查集

题目链接/*判断一棵树:* 1、There is exactly one node, called the root, to which no directed edges point. * 2、Every node except the root has exactly one edge pointing to it. * 3、There is a unique sequence of d

2016-08-28 10:02:58 447

原创 Power oj2470/DFS

题目链接 2469: C 小Y的难题(1) Time Limit: 1000 MS Memory Limit: 65536 KB Total Submit: 9 Accepted: 7 Page View: 128 Submit Status Discuss Description 最近小Y迷上了数学,总是在思考各种数学问题。有一天,他不小心把墨水洒在草稿纸上。他现在能看到的是“2?3?

2016-08-14 21:06:27 453

原创 HDU 2579/BFS/ Dating with girls(2)

题目链接/*题意是是传统的迷宫加上一个条件,墙壁在k的整倍数时刻会消失,那么求到达出口的最短时间。关键点在于某个点最多被走k次,标记vis[x][y][time%k]即可。*/#include<queue>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std

2016-08-14 10:33:56 338

原创 HDU 1072/BFS

题目链接NightmareTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10069 Accepted Submission(s): 4910Problem Description Ignatius had a nightmare

2016-08-13 16:00:30 194

原创 POJ3321/Apple tree/(DFS序+线段树)

题目链接 Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9692 Accepted: 3217DescriptionWshxzt is a lovely girl. She likes apple very much. One day HX t

2016-08-12 19:48:45 362

原创 Trie/Xor

题目链接/*有一个数组a1,a2,a3……an。找到一个连续子段[l,r],使得al ^ al+1 ^……^ ar达到最大。一般思路:维护前缀异或+暴力;for(int i=1;i<=n;i++) a[i]^=a[i-1];for(int i=1;i<=n;i++) for(int j=1;j<i;i++) ans=max(ans,a[i]^a[j]);数据量

2016-08-10 16:59:28 302

原创 A New Change Problem

题目链接/*给定两个互质的数,a,b,求这两个数不能表示的数的最大值和个数。最大值=a*b-a-b;个数 =(a-1)*(b-1)/2;*/#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#inc

2016-08-10 14:43:22 525

原创 Trie/最短的名字

题目链接/*简单trie树的应用,注意在初始化的时候要把cnt也初始化,不然,WA!下面的四分代码各有特点*///数组型,名字查询。#include<cstdio>#include<cstring>using namespace std;const int maxn=1000000;struct tire{ int wd[27]; int cnt; void

2016-08-10 14:33:21 411

原创 HDU1492/The number of divisors(约数) about Humble Numbers

题目连接The number of divisors(约数) about Humble NumbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3416 Accepted Submission(s): 1676Problem

2016-08-08 14:51:58 298

原创 HDU 2802 F(N)(简单题,找循环解)

题目链接 F(N)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4579 Accepted Submission(s): 1610Problem Description Giving the N, can you tell

2016-08-08 14:13:06 394

原创 覆盖问题<shui>

题目链接/*hang[maxn]标记每行是否可以被攻击,并计算前缀和lie [maxn]标记每列是否可以被攻击,并计算前缀和*/#include<cstdio> //#include<cstring>#include<iostream>using namespace std;const int maxn =100000+5;int hang[maxn];int lie[max

2016-08-07 20:28:46 383 4

原创 简单hash[或者是哈希思想]

题目链接/*有一个长度为n的只包含小写字母的字符串s,有m次操作,每次输入2个字符A , B表示将s中的全部字符A变成B,B变成A。char sky[30],顺序记录每个字母的映射,在sky[]里做改变,然后将原字符串通过sky[]得到答案。//丑*/#include<cstdio>#include<cstring>#include<map>#include<cstring>#i

2016-08-07 20:10:01 652 2

原创 最小点覆盖

题目连接/* 最小点覆盖为:在一个二分图中,选取最少的点可以把所有的变覆盖, 点的最少个数就是最小点覆盖。 最小点覆盖=最大二分匹配。 克鲁斯卡尔算法。 关于本题: £:把从零开始,转化成从一开始。 £:起点不用加入E[],因为机器的起始状态就是1,或者加入E[]但是不参加计算,(我采用的是第二种。)*/#include<cstdio>#

2016-08-07 19:47:23 2175 3

原创 求n!末尾0的个数

题目连接/*£:离散数学。£:n!中2的个数>5的个数。£:2*5=10;*/#include<cstdio>#include<cstring>#include<iostream>using namespace std;typedef long long LL;int N;int main (){ int T;scanf("%d",&T); while(T--

2016-08-07 11:21:14 292

原创 求N以内与N互质的数的和

题目连接/* 求所有小于N且与N不互质的数的和。 若:gcd(n,m)=1,那么gcd(n,n-m)=1; sum(n)=phi(n)*n/2; //sum(n)为小于n的所有与n互质的数的和 //phi(n)为小于n的所有与n互质的数的个数*/#include<cmath>#include<cstdlib>#include<vector>#i

2016-08-06 16:10:11 3332 1

原创 最小点集覆盖/HDU2119

题目连接先试一下题/?/ 最小点集覆盖=最大匹配/*根据i、j建图,跑一边最大匹配*/#include<cstdio>#include<cstring>using namespace std;const int maxn=100+5;int maze[maxn][maxn];int f[maxn];bool vis[maxn];int n,m,ans=0;bool machin

2016-08-04 15:16:03 538

转载 最小点集覆盖=最大匹配<二分图>/证明

最小点集覆盖==最大匹配。首先,最小点集覆盖一定>=最大匹配,因为假设最大匹配为n,那么我们就得到了n条互不相邻的边,光覆盖这些边就要用到n个点。现在我们来思考为什么最小点击覆盖一定<=最大匹配。任何一种n个点的最小点集覆盖,一定可以转化成一个n的最大匹配。因为最小点集覆盖中的每个点都能找到至少一条只有一个端点在点集中的边。如果找不到则说明该点所有的边的另外一个端点都被覆盖,所以该点则没必要被覆

2016-08-04 14:41:10 622

原创 拓扑排序<反向拓扑+有向环的判断>

题目链接#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>typedef long long LL;using namespace std;const int i

2016-08-02 20:53:57 859

原创 最短路径问题/Spfa

题目链接题目描述给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。(1<n<=1000, 0<m<100000, s !=

2016-07-31 20:43:49 255

原创 cddiv/数组维护

题目连接看代码:#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>typedef long long LL;using namespace std;//const

2016-07-31 19:25:43 474

原创 cfdiv2/c/找规律

题目连接 £:若n<4,NO; £:若n==4,特判,n==5,特判。 £:若n>=6,用2-4组成24,1和5和6组成零,即可。#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>

2016-07-31 19:22:51 807

原创 HDU/5499/模拟

题目链接 模拟题,直接看代码。 £:分数的计算方法,要用double;#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespac

2016-07-31 19:18:07 381

原创 cfedu/A/求和

题目连接思路:用数组直接标记2^n,n属于(0~~31);用LL或者INT都可以,不会爆。但是ans要用LL。#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>usi

2016-07-31 19:13:39 466

原创 HDU<1372>/bfs

题目连接简单dfs搜索#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef pair<int, int> pa;

2016-07-31 19:05:49 326

转载 4位开锁<dfs>

题意: 有一个四位密码的锁,每一位是1~9的密码,1跟9相连。并且相邻的连个密码位可以交换。每改变一位耗时1s,给出锁的当前状态和密码,求最少解锁时间。 思路: 用bfs枚举出所有相邻交换的情况,并记录时间,然后每一位与密码比较,得出最少时间。注意输入的是一个数字,要把每一位提取出来。 代码:#include <iostream>#include <cstring>#i

2016-07-28 21:49:58 468

原创 华哥倒酒<区间标记,二分>

题目链接#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn=400000+10;int a[maxn],v[maxn],s[maxn],t[maxn];LL sum[maxn];//标记区间int n,m;int che

2016-07-28 15:36:29 423

原创 div.2/Bellovin<最长上升子序列>

题意:序列arr[i--n];输出以a[i]为结尾的最长上升子序列。1<=n<=100000;思路:O(n*log(n)),求最长上升子序列。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn = 100000+100;int

2016-07-28 14:20:27 279

原创 div.2/D. As Fast As Possible<数学题,二分>

题意:n个学生出去玩,要前进一段距离,租了一辆可以载k个人的车,问到达到目的地的最短时间。cin: n,l,v1,v2,k.£:所有人一起到达终点的时候时间最短。 £:所有人走路和坐车的时间相等。法一:公式推导:•求批次:if(n%k) cnt=n/k+1;else cnt=n/k;•设第一批人到达坐车到l1l1处下车,乘车时间为t1t1: l1=t1×v1=>t1=l1/v

2016-07-28 11:13:46 451

原创 div.2/C. They Are Everywhere<two pointer>

题意:给出包含n (3<=n<=100000)个字符的字符串,计算出包含所有类型字符的最小区间长度。题解:Two pointer.注意区间的处理。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=100000+100;char

2016-07-28 09:37:25 317

原创 HDU 1540<线段树,区间并>

题目连接 参考题意:维护各个点的连续的最大连续长度。思路:主要是维护一个区间的三个变量ll,f[i].l为起点向右的最大连续长度,rl:f[i].r为起点向左的最大连续长度,ml:[l,r]区间内的最大连续长度,便于合并。#include<cstdio>#include<algorithm>using namespace std;const int maxn=100000+100;

2016-07-27 16:46:17 404

原创 HDU 4027 <线段树,区间√>

题目连接题意给出一个区间,每次把[l,r]内的值√,维护区间和。坑:£:l会比r大,swap.£: 当f[i].sum=f[i].r-f[i].l+1;,不修改。因为保证每个数都大于等于1,当每个数都为1的时候,此区间不需要开根。//纯手工#include<cmath>#include<cstdio>#include<iostream>#include<algorithm>using

2016-07-27 11:18:24 501

原创 HDU 1698 <线段树,区间set>

题目连接题意:一条长为N的铜链子,每个结点的价值为1。有两种修改,l,r,z;z=2:表示把[l,r]区间内链子改为银质,价值为2.z=3:表示把[l,r]区间内链子改为金质,价值为3.思路:线段树,区间重设,求和。#include<cstdio>#include<cstring>using namespace std;const int maxn=100000+10;struct

2016-07-27 09:15:23 245

原创 POJ 3468<线段树,区间add>

题目连接//位运算 k<<1 相当于 k*2 k<<1|1 相当于 k*2+1/*  修改区间内的值,并且维护区间和。  详见代码*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn=100000+10;

2016-07-26 21:51:20 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除