自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 codeforces 677E

题意:给出一个1000*1000的举证,问你任意“十字乘积”的最大值。十字可以是#includeusing namespace std;#define N 2010int d[N][N];double s[8][N][N];int p[8][N][N];typedef long long LL;#define MOD 1000000007//0,1 ,1,1, 1,0, 1

2016-08-14 15:00:48 323

原创 codeforces 703E

题意:给出1000个数,和一个整数10^12。求个数最少,和最小的子集,使得他们的乘积是时k的倍数。题解:注意到k的约束的个数不是很大,然后dp[i][d]=dp[i][d/gcd(a[i],d])+1;注意到只有k的约束的才有意义,然后就是离散化,然后dp,细节比较多,请查看代码。#includeusing namespace std;typedef long long LL

2016-08-13 21:03:59 560

原创 codeforces 703D

题意:求区间出现偶数次的数的异或值。序列长度是1000000,操作是1000000.题解:求出区间不同的数的异或值,然后区间异或值^不同的数的异或值 = 出现偶数次的数的异或值。不同数的异或值用离线的方式处理,用树状数组维护。#includeusing namespace std;class FenWick{private: int n; vector d;public

2016-08-13 18:29:12 342

原创 codeforces 703C

题意:有一辆汽车从马路上穿过(不会让人的,可以看成凸多边形),一个人从马路这头最快要多久可以走到对面。速度不能超过一定值,不能被撞。题解:贪心。过马路无非两种情况,(1)在凸多边形的每个点到达马路上之前通过这个点(全部可以的话就急速通过)。每个点走过之后再急速穿过。#includeusing namespace std;typedef pair pdd;#define

2016-08-13 16:24:26 283

原创 codeforces 706E

题意:给你一个(1000*1000)的矩阵,有10000次操作,每次交换两个同样大小的小矩阵,任何一个小方块不会属于两个矩阵,任一两个相邻的小方块不会属于一个矩阵。输出最后的矩阵。题解:十字链表,暴力。(其实只要两个指针)#includeusing namespace std;#define N 1010struct Node{ int right,down; int v

2016-08-12 11:39:12 732

原创 hdu 5821 2016多校8

题意:给出连个1000的数字序列,问是否可以将第一个序列变成第二个序列。操作是将[li,ri]的数字重新排列。题解:贪心题,先处理出来每个数字通过变化到达的位置(发现是一个区间)。然后贪心就可以了。#include#include#include#includeusing namespace std;#define N 1010//#define mp(x,y) make_p

2016-08-11 19:44:10 340

原创 hdu 5831 2016多校8

#include #include #include #include #include using namespace std;#define N 100100char str[N];int main(){ int T; scanf(" %d",&T); while(T--){ int n; scanf(" %d",&n)

2016-08-11 19:39:52 195

原创 poj 2761 主席树

题意:给出一个序列求区间第k小。题解:主席树。/* 主席树求区间第k小,没有修改操作 */#include #include #include #include using namespace std;#define MAXN 100100class TreeNode{public: TreeNode *ch[2]; int size; void upd

2016-08-11 19:28:49 366

原创 hdu 2665 Kth number

题意:没有修改的区间第k小(题目中的第k大是骗人的)。题解:没有修改的主席树可以做。/* 主席树求区间第k小,没有修改操作 */#include #include #include #include using namespace std;#define MAXN 100100class TreeNode{public: TreeNode *ch[2]; int si

2016-08-10 18:39:11 223

原创 hdu 5798 2016多校6

题意:给出一个序列(10^6个,大小为0题解:abs(a[i]-a[i-1])每个数字单独分析,可以发现一个性质。#include#include#include#includeusing namespace std;typedef long long LL;#define N 100100int a[N];LL samebit[21][21],diffbit[2

2016-08-05 20:32:34 502

原创 hdu 5800 2016多校6

题意:给出一个序列(1000长度),定义f(i,j,k,l,m) 为a[i],a[j]必取,a[k],a[l]必不取和为m的子集个数。统计任一i,j,k,l,m的和是多少(i!=j!=k!=l)题解:很容易想的一个dp,转移有一个地方需要考虑一下,就是i和j是有顺序的,不同的顺序要分别统计。#include #include #include using namespace

2016-08-05 14:39:31 502

原创 hdu 5795 2016多校6

//============================================================================// Name : 0804A.cpp// Author : lgc// Version :// Copyright : Your copyright notice// Description :

2016-08-05 14:30:40 247

原创 hdu 5781 2016多校5

题意:账户中有[0,k]的钱,每次可以取Y的钱,如果所要取得钱Y大于账户中的钱警告一次,警告次数不能超过M次,问把全部钱取出来的期望是次数是多少?题解:dp[K][W] = min(dp[K][W],dp[K-i][W]*(K-i+1)/(K+1)+dp[i-1][W-1]*i/(K+1)+1);dp[i][j]表示中户中的钱[0,i],有j次错误机会的期望。答案就是dp[ K][W]。如果A

2016-08-03 12:35:44 306

原创 hdu 5791 2016多校5

题意:求解两个序列的相同子序列个数(位置不同为不同)。题解:dp[i][j] 表示A[i]==B[j],以A[i]这个位置的字符为结尾的序列个数。则,dp[i][j] = sum(dp[a][b]) a#include#include#includeusing namespace std;#define N 1010typedef long long LL;LL s[N][N]

2016-08-02 21:22:56 185

原创 hdu 5783 2016多校5

题意:给出一个序列,求出最多可以分割成多少个前缀和非负的序列。题解:贪心,碰到负数就往前合并区间。#include #include #includeusing namespace std;typedef long long LL;typedef pair pii;class Solution{ vector d,dp; vector s; int

2016-08-02 17:25:36 182

原创 hdu 5792 2016多校5

题意:给出一列数,求多少个四元组(a!=b!=c!=d,1Ad)题解:统计每一个数左侧有多少个大于它,多少个小于它,右侧有多少个大于它,多少个小于它。然后就是加加减减。#include #include #include #include#includeusing namespace std;class Bit{private: int n; vector d;

2016-08-02 17:18:08 202

原创 hdu 5787 2016多校5

题意:求出区间[L,R]任一连续k个数没有重复数字的数的个数。2题解:数位dp,保存前k-1个数字的状态。#include#include#include#include#include#includeusing namespace std;typedef long long LL;LL dp[21][161051];vector str;void toString(L

2016-08-02 17:13:56 218

原创 hdu 5739 2016多校2

题意:给出一个图,求一个很奇怪的权重。       (1).连通块的权重是这个块里面每个节点的权重乘起来Gi.       (2).每个点去掉之后会有一个权重Zi,Zi的值是去掉这个点之后Gi的和。       (3).求Sum(i*Zi)题解:枚举割点,统计。#include #include #include #include #include #include

2016-07-25 12:32:01 262

原创 codeforces 688D

题意:已知n个数的模后的结果,求另外一个数模的结果。题解:中国剩余定理的入门题。#include using namespace std;typedef long long LL;int main(){ int n,m; while(scanf(" %d %d",&n,&m)==2){ LL ret=1; for(int i=0;i<n;i++){ int

2016-07-25 12:21:05 278

原创 codeforces 689D

题意:给出两个序列,计算有多少个区间,第一个序列的最大值等于第二个序列的最小值。题解:注意到第一个区间的最大值递增,第二个区间的最小值递减。我们可以枚举起点,二分相等位置。#includeusing namespace std;class RMQ{ int n; vector Log2; vector > f; vector a;public: RMQ(int

2016-07-25 10:59:13 438

原创 codeforces 689E

题意:n个区间,找出任意k各区间重叠区间长度的和。题解:从重叠部分考虑,原问题变成每个数字被多少组k区间包含。然后就是扫描区间,组合数计算。#includetypedef long long LL;using namespace std;typedef pair pii;#define MOD 1000000007LL powMod(LL x,LL p,LL mod){

2016-07-25 10:53:39 355

原创 codeforces 700B

#includetypedef long long LL;using namespace std;class Solution{ vector > tr; vector vi,cnt; int n,m; LL ret;public: void init(){ cin>>n>>m; tr = vector >(n+1); vi = cnt = vector (n+1,0

2016-07-25 10:43:59 512

原创 codeforces 700C

题目:图上删除最多两条边使得两个点不连通,要求删除的边权和最小。解法:枚举一条可达路径上的边,tarjan找割边。复杂度O(n*m)。#includeusing namespace std;typedef long long LL;struct Edge{ int st,ed,id,w,next; bool edge_cut,deleted; Edge(){} Edge(in

2016-07-25 10:13:07 475

空空如也

空空如也

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

TA关注的人

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