- 博客(99)
- 收藏
- 关注
原创 POJ 3518
#include#include#include#include#include #include#include#includeusing namespace std;const int maxn=1299710;bool u[maxn];int ans[maxn];void prepare(){ int i,j,k; for(i=2;i<maxn;i++)u
2017-09-30 00:27:15
417
原创 POJ 2262
#include#include#include#include#include #include#include#includeusing namespace std;bool u[1111111];int su[1111111];int num;void prepare(){ int i,j; memset(u,true,sizeof(u)); for(i=2
2017-09-30 00:04:16
307
原创 POJ 2828
#include#include#include#include#include#include #include#define maxn 200100using namespace std;int pos[maxn],val[maxn],size[maxn<<2],ans[maxn],point[maxn];int n;void build_tree(int l,in
2017-09-29 09:49:48
309
原创 ZOJ 2760
#include#include#include#include#include #include#include #include#include#define inf 0x3f3f3f3f#define INF 1<<20using namespace std;const int MAX_V=220; struct edge{ int to,cap,rev;};
2017-09-17 15:41:08
295
原创 POJ 2187
求最远点对距离的平方。#include#include#include#include#include #include#include#includeusing namespace std;const int maxn=50010;const int eps=1e-10;double add(double a,double b){ if(abs(a + b)<eps
2017-09-17 00:51:18
303
原创 POJ 1127
给出木棍两端坐标,判断木棍是否相连。#include#include#include#include#include #include#includeusing namespace std;double eps=1e-10;const int maxn=13;const int maxm=10010;double add(double a,double b){ i
2017-09-16 22:45:00
245
原创 noip2011
点击打开链接#include#include#include#include#includeusing namespace std;int n,k,price,c,v,s,f;int a[65],b[65],u[65];int main(){ scanf("%d%d%d",&n,&k,&price); for(int i=1;i<=n;i++) { scanf(
2017-07-07 16:47:13
343
原创 URAL 1005
一堆石头分成两队求最小的差值。#include#include#include#include#includeusing namespace std;int a[22];int dp[2500000];int main(){ int n; cin>>n; int sum=0; for(int i=0;i<n;i++) { cin>>a[i]; sum+=
2017-07-07 16:41:57
378
原创 图
给定一个整数序列为1到n的排列,给出连边的命令,从一个区间选出最大最小值相连,给出询问,问两个点是否连通。#include#include#include#include#includeusing namespace std;int n,m,k;struct node{ int minn,maxx;};#define maxv 101100node arr[maxv
2017-07-07 15:36:10
233
原创 网络流模板
struct edge{ int to,cap,rev;}vectorG[MAX_V];int level[MAX_V];int iter[MAX_V];void add_edge(int from,int to,int cap){ G[from].push_back((edge){to,cap,G[to].size()}); G[to].push_back((edge){
2017-07-07 15:35:31
302
原创 prufer code
计算n个节点,k个叶子的树的数目。#include#include#include#include#include#includeusing namespace std;const int maxn=105;const int m=2007;int c[maxn][maxn];int g[maxn][maxn];void init(){ for(int i=0;i
2017-07-07 09:35:15
526
原创 矩阵
给出一个矩阵,要求统计左上方的所有子矩阵中不同元素的个数。#include#include#include#include#include#includeusing namespace std;const int maxn=1005;int A[maxn][maxn];int B[maxn][maxn];int R[maxn][maxn];int NC[maxn*max
2017-07-07 08:29:17
379
原创 noip 能量项链
点击打开链接#include#include#include#include#include#includeusing namespace std;int m[205][205];int n,temp,p[205];void matrixch(int p[],int n){ int i,j,k,r; for(r=2;r<=n;r++) for(i=1;i<=n;i
2017-07-07 08:27:31
564
原创 机械臂
n个机械臂读取n-1条记录,代价为距离差,求最小总代价。#include#include#include#include#include#includeusing namespace std;#define maxn 10005int n;int s[maxn];int t[maxn];int i,j,k;int a[maxn];int b[maxn];int n
2017-07-07 07:56:45
638
原创 noip 2000 乘积最大
点击打开链接#include#include#include#include#includeusing namespace std;char str[41];long g(int start,int end){ long i; long s=0,t=1; for(i=end;i>=start;i--) { s+=(str[i]-'0')*t; t*=10;
2017-07-07 04:25:23
306
原创 URAL 1167
f[i][j]为第i个马厩分配j匹马的最小冲突值。#include#include#include#define INF 1<<20using namespace std;int f[505][505],a[501],s[501];int main(){ int n,k; int minn; scanf("%d%d",&n,&k); for(int i=1;i<=n;i
2017-07-07 04:16:48
291
原创 zoj 2042
opt[i,j]表示前i个数%k是否可以得到余数为j的结果。#include#include#include#include#define clr(a) memset(a,0,sizeof(a))#define N 10001#define M 101using namespace std;int a[N];int b[N][M];int p,q;int n,m;int
2017-07-07 03:15:51
236
原创 数论模板
const int maxn=1025;const int maxp=33;//sqrtconst int maxl=11;//logbool isprime[maxp];int prime[20],c[maxn];void makeprime(){ int i,j; memset(isprime,1,sizeof(isprime)); for(i=2;i<=maxn;i++
2017-07-07 02:42:36
220
原创 zoj 2271
不知道为什么过不了。#include#include#includeusing namespace std;int dir[301][301]={0};float p[301][301]={0},q[301][301]={0};int main(){ int n; while(~scanf("%d",&n)) { memset(dir,0,sizeo
2017-07-07 02:34:05
281
原创 noip2003 数字游戏
点击打开链接#include#include#include#define INF 1<<20using namespace std;int Max,Min,n,m,line[200],sum[200];int f[200][20];int g[200][20];void dp(int a[]){ int i,j,k; for(i=1;i<=n;i++) sum[i]
2017-07-06 21:39:02
1083
原创 轰炸问题、连续子序列的积、n个最大连续子序列和
#include#include#includeusing namespace std;int m,n,h,w;int a[1001][1001],su[1001][1001];int main(){ int i,j,Ma=-INT_MAX; cin>>m>>n>>w>>h; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { cin>>a[i
2017-07-06 13:09:36
297
原创 IOI96 最长前缀
P1809【USACO2.3.1】Longest Prefix最长前缀 IOI’96时间限制 : 15000 MS 空间限制 : 65536 KB问题描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+”
2017-07-06 12:27:34
507
1
原创 Ural1017
将一个整数N拆成几部分,各部分的值互不相同。#include#include#include#includeusing namespace std;long long f[1005];int main(){ int n; cin>>n; f[0]=1; for(int i=1;i<n;i++) for(int j=n;j>=i;j--) f[j]+=f[j-i];
2017-07-06 10:42:47
285
原创 noip2001 数的划分
给定一个整数n,将其划分成k份。#include#include#include#define MM 201using namespace std;int f[MM][8],n,kind;int main(){ cin>>n>>kind; f[1][1]=1; for(int i=2;i<=n;i++) for(j=1;j<=kind;j++) if(i>=j) f
2017-07-06 09:47:24
433
原创 动态规划经典问题
股票问题给出一只股票在n天内的价格,求1元本金的最大收益。#include#include#include#include#include#includeusing namespace std;int main(){ int i,n; double v,f=1,g=0; scanf("%d",&n); for(int i=1;i<=n;i++) { scan
2017-07-06 09:34:16
263
原创 hdu 3535 混合背包
#include#include#include#include#include#include#include#includeusing namespace std;#define MAXV 410#define MAXM 40010typedef struct{ int h,a,c;}Blocks;Blocks v[MAXV];int cmp(Blocks
2017-07-06 09:13:32
200
原创 POJ 2392
多重背包。#include#include#include#include#include#include#include#includeusing namespace std;#define MAXV 410#define MAXM 40010typedef struct{ int h,a,c;}Blocks;Blocks v[MAXV];int cmp
2017-07-06 08:24:50
325
原创 POJ 2192
DescriptionGiven three strings, you are to determine whether the third string can be formed by combining the characters in the first two strings. The first two strings can be mixed arbitrarily, bu
2017-07-06 03:17:53
367
原创 zoj 1254
Mr. Jones is an exemplary husband. Every Saturday morning Mrs. Jones gives him a list of goods to be bought from the supermarket and he buys exactly what he has been asked for, always choosing the b
2017-07-06 02:40:30
503
原创 USACO 3.3.2
【描述】在商店中,每一种商品都有一个价格(用整数表示)。例如,一朵花的价格是 2 zorkmids (z),而一个花瓶的价格是 5z 。为了吸引更多的顾客,商店举行了促销活动。促销活动把一个或多个商品组合起来降价销售,例如:三朵花的价格是 5z 而不是 6z, 两个花瓶和一朵花的价格是 10z 而不是 12z。 编写一个程序,计算顾客购买一定商品的花费,尽量利用优惠使花费最
2017-07-06 02:05:11
392
原创 UVA 10003 切割能量棒
#include#include#include#include#include#include#define INF 1<<20using namespace std;int main(){ int length,n,i,j,x,y,temp,l,k,tt,sum; int t[51][51],p[51]; while(scanf("%d",&length)&&leng
2017-07-05 20:44:07
309
原创 流水作业调度问题
n个作业交给两台机器处理,每个机器处理每个作业都有一个时间,求处理完成所有任务的最短时间。#include#include#include#include#include#include#define INF 1<<20using namespace std;int p[2000]={0};int main(){ int n; int i,j,k,sa=0,sb=0,
2017-07-05 20:25:46
619
原创 vijos1143
#include#include#include#include#include#include#define INF 1<<20using namespace std;int main(){ int f[41][21][21][21],w[21][21]; int n,m,i,j,k,s,x1,x2,x3,y1,y2,y3,d1,d2,d3,get; memset(f,0
2017-07-05 14:33:22
179
原创 POJ 3311
#include#include#include#include#include#include#define INF 1<<20using namespace std;int dis[12][12];int dp[1<<11][12];int n,ans,minx;int main(){ while(scanf("%d",&n)&&n) { for(int i=0
2017-07-05 13:47:02
219
原创 RQNOJ愚蠢的矿工
题目描述背景Stupid 家族得知在HYC家的后花园里的中央花坛处,向北走3步,向西走3步,再向北走3步,向东走3步,再向北走6步,向东走3步,向南走12步,再向西走2步( - -||)就能找到宝藏的入口,而且宝藏都是藏在山里的,必须挖出来,于是Stupid家族派狗狗带领矿工队去挖宝藏.(HYC家的宝藏被狗狗挖走后有什么感想?)描述这个宝藏的制造者为了掩盖世
2017-07-05 07:54:06
486
原创 选课
题目描述学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows操作基础》之后才能选修。我们称《Windows操作基础》是《Frontpage》的先修课。每门课的直接先修课最多只有一门。
2017-07-05 03:14:56
418
原创 选上司
给出一棵树,每个节点都有一个值,选了一个结点不能选它的儿子和父亲结点。#include#include#include#include#include#includeusing namespace std;int N,f[6001][2],parent[6001];bool visited[6006];void tree_dp(int node){ if(!visite
2017-07-05 03:00:14
169
原创 KM算法
const int MAX=1024;int n;int w[MAX][MAX];int A[MAX],B[MAX];bool visitx[MAX],visity[MAX];int match[MAX];void init(int size){ n=size; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>w[i][j];
2017-07-03 18:32:39
223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人