- 博客(12)
- 收藏
- 关注
原创 HDU 3698 Let the light guide us dp+线段树维护区间极值
很简单的dp 线段树维护区间最小值 第一题线段树 留个纪念#include #include using namespace std;const int inf=0x3f3f3f3f;int n,m,T[105][5005],f[105][5005],dp[5005],t[5005];struct s { int l,r,val,lazy; void upd(int
2017-01-31 01:26:44 279
原创 搜索小专题
A.Red and Black网格搜索,用dfs或者bfs写都可以。#include #include const int dx[4]={0,0,-1,1};const int dy[4]={-1,1,0,0};int w,h;char s[20][21];bool vis[20][21];int dfs(int x,int y) { if (x=h||y=w||vi
2017-01-18 12:05:33 786 3
原创 Codeforces Round #381 (Div. 2) D. Alyona and a tree 树型前缀和+二分维护
题意:给一棵有向树,根固定为1,每个顶点v都有一个权值av。对于每个顶点,若其他顶点满足dist(v, u) ≤ au ,则u能被v控制。注意u是子树节点。要求输出每个顶点控制的顶点个数。解法:刚开始看错了题目,想要二分却维护不了单调性,后来发现u、v中u才是子树节点(和平时做题的命名习惯不太一样哈)。这样就能很好想到二分了。dfs的时候,系统栈里存的其实是一条链式的路径,所以就在这条
2017-01-15 12:27:54 432
原创 Codeforces Round #380 Technocup 2017 - Elimination Round 2 F. Financiers Game DP+状态简化
#include using namespace std;const int maxn=4001;const int inf=0x3f3f3f3f;int n,a[maxn],dp[maxn][181][91][2];int DP(int l,int d,int k,int f) { if (dp[l][d][k][f]inf/2) return 0; r
2017-01-15 01:09:28 368
原创 Codeforces Round #385 (Div. 2) E. Hongcow Buys a Deck of Cards DP+好题
题意:小明要买卡片,卡片分红、蓝两种,每天,小明可以:1.获得一个红币和一个蓝币,注意是和。2.买卡。买卡需要的价格是max(ri-A,0)个红币和max(bi-B,0)个蓝币,ri、bi是第i张卡片所需红蓝币的个数,A、B是已经拥有的红蓝卡的个数。求买完所有卡片所需的最少天数。解法:n很小,自然可以想到状态压缩dp,由于每天是同时获得一枚红币和蓝币,所以dp数组如果存天数会变得难
2017-01-14 00:21:43 600
原创 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) B - Bash's Big Day 枚举
题意:给一堆数,选出个数最多的数的集合。使得集合内所有数的最大公因子不为1。解法:枚举含有每个因子的数的个数,以及相同的数的个数,两者取最大值即可。此题 1 1 答案为1,5 1 1 1 1 1 答案为1,可以拿来hack。#include using namespace std;const int maxn=100005;int n,cnt[maxn],t,res;int mai
2017-01-13 11:13:40 445 2
原创 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C. Felicity is Coming! 哈希
解法:对于pokermon a和b,只要它们在所有gym中出现的次数都是相同的,则变身的时候,种类可以互换。没有出现过的pokermon,归为所有gym都是0的情况,比赛的时候特判了这个反而没有过pretest。将数字划分到不同的集合内,则答案既是:(集合元素个数阶乘)的乘积。用vector进行hash:#include using namespace std;typedef long
2017-01-13 10:54:37 469
原创 Codeforces Round #375 (Div. 2) E. One-Way Reform 欧拉回路+构图
题意:给一个无重边的无向图,给边定向,使得定向后的有向图中满足出度等于入度的点的个数最多。输出点的个数以及各条边的方向。解法:已知一个无向图的联通分量中,奇度点的个数一定是偶数。故可向原图中奇度点之间加边,最后跑出欧拉回路就行,输出边的时候,注意自己添加的边不要输出即可。#include using namespace std;typedef unsigned int uii;typ
2017-01-12 19:26:04 256
原创 Testing Round #13 C. Interactive Bulls and Cows (Hard) 枚举
题意:给定一个隐藏0-9组成的各个位置不同的4位字符串。每次猜测一个数字,系统返回bulls:位置对且值对的数字的个数;cows:位置不对但是值对的个数,且多个值对算一个。如:1234 与 2222 bulls=1,cows=0。总共有5040种可能,每次猜测的时候:1.尝试5040种中每一种可能,使得在当前可能的答案中,返回的bulls和cows的数量的最坏的情况最小。即每次保证排除足够
2017-01-11 02:19:20 304
原创 Codeforces Round #372 (Div. 2) D. Complete The Graph 好题+图论+思维+二分
将可改变的边长度先置为1,不断用dij跑最短路,若d[t]注意原本的最短路已经小于L的情况。#include #include #include #include #include #include using namespace std;#define fst first#define snd secondtypedef long long ll;typedef un
2017-01-08 14:26:35 428
原创 Codeforces Round #390 (Div. 2) D. Fedor and coupons 贪心+优先队列
按左端点排序,则拿一个优先队列维护一下右端点的最小值即可。优先队列里面始终有且仅有k条线段的右端点信息。#include using namespace std;const int maxn=300005;int n,k,res,p,rl,rr;struct ss { int l,r,id;} seg[maxn];bool cmp(ss s1,ss s2) { re
2017-01-07 14:13:25 317
原创 CCF 201612-4 压缩编码 区间dp(石子合并)+四边形不等式优化
拿样例建树的时候发现是一道区间dp。这题没有卡时间,给了三秒,测评机速度还算很快。264914压缩编码01-06 13:28522BC++正确1001.812s4.898MB264913压缩编码01-06 13:15691BC++正确10046m
2017-01-06 13:34:40 522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人