
CodeForces
文章平均质量分 62
huanghongxun
这个作者很懒,什么都没留下…
展开
-
2017 ACM ICPC East Central North America Regional Contest
手速场。。就不放队友的代码了。A: Abstract Art题目大意给定多个多边形,求面积并。题解模板题。B: Craters题目大意给定多个圆,求这些圆的凸包周长。题解一个圆最多引出两条切线,计算切线注意一些情况就好了。 不过我的做法是暴力将圆拆成3000个点,然后暴力求背包。#include <bits/stdc+...原创 2018-04-21 23:25:06 · 1036 阅读 · 0 评论 -
CodeForces 629E(#343)|Famil Door and Roads|树形dp|概率
Ubuntu下的搜狗好痛苦。。中文翻译描述Famil Door的城市地图看起来像一棵树(无向无环图)所以其他人叫他Treeland。城市里有n个由n-1条双联通边连接起来的节点。 Famil Door有m个朋友生活在这城市。第i个朋友住在uiu_i而且在viv_i工作。在城市里的每个人都不开心因为在他们家和工作地点间只有一条简单路径。 Famil Door计划构造1条新边而且他会在n(n−1)/原创 2016-02-25 23:36:07 · 937 阅读 · 0 评论 -
CodeForces 731
731A题目大意:类似电话表盘,不过表盘上有26个字母,问一开始表盘指向a,如何转动表盘使得依次指向字符串中的各个字符且转动表盘次数最小(转一格为一次) 题解:每次都拿最近的那个#include <cstdio>#include <algorithm>using namespace std;char s[128];int main() { int i, now, ans = 0,原创 2016-10-17 22:17:48 · 1286 阅读 · 0 评论 -
CodeForces #363(698A|699C|698C|699E)|动态规划
698A|699C - Vacations题目大意你一天可以选择去锻炼或打比赛,但你不能连续2天都锻炼或打比赛,你还知道某天是否有比赛、体育馆是否开门。问你最少没事干的天数。题解#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;+原创 2016-11-07 23:08:43 · 806 阅读 · 0 评论 -
CodeForces #367(706C)|动态规划
706C - Hard Problem题目大意有一列字符串,你可以翻转一些字符串使得这一列字符串按字典序排列(翻转操作代价cic_i)。问最小代价。题解很多dp题喜欢披着字符串的羊皮啊。。 要注意到的是相等也是满足字典序的QwQ。 注意到字典序排列满足无后效性,故考虑DP。 令dp[i][0]dp[i][0]表示不翻转第i个字符串时1~i按字典序排列的最小代价,dp[i][1]dp[i][1]原创 2016-11-06 22:36:16 · 480 阅读 · 0 评论 -
CodeForces 724|模拟|贪心|扩展欧几里得|
724A Checking the Calendar题目大意:题目感觉有点晦涩。。就是说给定不是闰年的某个月(1~11月)第一天是星期几,下个月的第一天是星期几,问你是否合法。#include int parseDay(char *ch) { if (ch[0] == 'm' ) return 0; if (ch[0] == 't' && c原创 2016-10-12 22:23:54 · 557 阅读 · 0 评论 -
CodeFoces #377(732A|732B|732C|732D|732E)|贪心
这是贪心大赛的节奏。。。732A Buy a Shovel题目大意一件商品k元,你身上有无数多个10元硬币和r(1≤r≤91\leq r\leq 9)元硬币,问买多少件商品你才可以刚好使用你身上的硬币购买而不需要找零。题解显然商品件数不会超过10件(10件时可以只使用10元硬币),且只k的个位数有关。#include <cstdio>int main() { int k, r, i;原创 2016-10-23 11:55:03 · 1220 阅读 · 0 评论 -
CodeForces 713A|Sonya and Queries|字典树|没方法
给出一些数字,询问一些满足对应位为偶数(0表示)或奇数(1表示)的数字的个数。 比如010格式的数字可以有818,52,98,2212等。首先各位数具体为多少并没有什么关系,所以全都模2,将长度扩展到18方便位数不相等的查询。 然后扔到字典树里查询就好啦。#include <cstdio>#include <cstring>#include <algorithm>using namespa原创 2016-09-22 22:23:07 · 700 阅读 · 0 评论 -
CodeForces 723
723A数轴上有3个点x1<x2<x3x_1<x_2<x_3,求一个点x0x_0,最小化|x1−x0|+|x2−x0|+|x3−x0||x_1-x_0|+|x_2-x_0|+|x_3-x_0|。 显然,x0x_0肯定在[x1,x3][x_1,x_3],否则不是最优解,故化简得:x3−x1+|x2−x0|x_3-x_1+|x_2-x_0|,故x0=x2x_0=x_2时解最小为x3−x1x_3-x_1原创 2016-10-04 22:24:43 · 1928 阅读 · 0 评论 -
CodeForces 273D|Dima and Figure|动态规划
N*M(≤150\leq 150)的棋盘有多少个连通块是凸的。绕了好几个弯之后终于搞定了。。 令f[i][j][k][l]f[i][j][k][l]表示现在到了第i行,当前连通块占用j~k列,状态为l。 考虑一个连通块,我们用一条线扫过去,发现可能的情况只有覆盖区域:变小,变大,左移,右移(没有限定区域大小)。所以l就表示这4种情况。 那么左右边界只可能有:一直扩张,一直收缩,或者先扩张再收缩原创 2016-04-24 17:48:49 · 1019 阅读 · 0 评论 -
CodeForces 231E|Cactus|边双联通分量|LCA
给定一个仙人掌图,多次询问某两点间的路径数。发现某两点间的路径数就等于2的路径间环的个数的幂。 因此Tarjan缩点后LCA计算路径经过的环的个数即可。#include <cstdio>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i)using namespace std;typedef long long ll;const原创 2016-04-21 10:29:37 · 1512 阅读 · 0 评论 -
CodeForces 487E UOJ 30 Tourists Tarjan + 树链剖分
#include #define FOR(i,j,k) for(i=j;i<=k;i++)int read() { int s = 0, f = 1; char ch = getchar(); for (; '0' > ch || ch < '9'; ch = getchar()) if (ch == '-') f = -1; for (; '0原创 2015-11-20 18:35:24 · 1075 阅读 · 0 评论 -
CodeForces 235C Cyclical Quest 后缀自动机
给定母串,每次询问一个字符串及其循环串在母串中的出现次数和。重复一遍循环串在母串上匹配即可。。。 要注意重复的不要再算一次了。#include <cstdio>#include <cstring>#define FOR(i,j,k) for(i=j;i<=k;++i)const int rt = 1, N = 2000005;int ch[N][26], ma[N], fa[N], vis原创 2016-04-16 19:09:40 · 734 阅读 · 0 评论 -
CodeForces 274C|275E|The Last Hole!|计算几何
给出N个点,从零时刻起,分别以这N个点为圆心的N个圆逐渐变大,有半径r=时刻t;随着时间推移,图形当中可能出现一些”洞”,而且出现的洞一定会在某时刻消失。严格地,一个洞被定义为封闭的、连通的未被圆覆盖的区域,可以理解为被圆所围起来的区域。对于给出的n个点,求出最后一个洞消失的时间;如果没有出现过洞,输出-1。最后一个洞♂考虑3个圆的情况,发现洞消失的位置即三个圆心围成的三角形的外心,而且当且仅当三角原创 2016-04-27 12:18:29 · 921 阅读 · 2 评论 -
CodeForces 438E The Child And Binary Tree NTT模板 生成函数应用
求有多少个二叉树使每个点权值均在给定集合C中而且权值和为令fsf_s表示总权值为s的合格二叉树个数。 于是有 f0=1fs=∑w∈C∑ifi×fs−w−i\begin{align}&f_0=1\\&f_s=\sum_{w\in C}\sum_i f_i\times f_{s-w-i}\end{align} 发现右边和卷积有点像。 于是令 gk=∑ifi×fk−i g_k=\sum_i原创 2016-03-22 14:20:04 · 1203 阅读 · 0 评论 -
CodeForces 148D Bag of Mice 概率DP
CF的题都喜欢加一堆背景? 锻炼英语翻译233。 第一段不翻了。。。 两人轮流从袋子里(包含w和白老鼠和b个黑老鼠)拿老鼠,第一个拿到白老鼠的人赢。 每次拿走一只老鼠以后,剩下的老鼠就会很恐慌,然后就会有一个老鼠自己跑出来(公主拿老鼠很小心,所以并不会惊动其他的老鼠。公主先拿。公主赢得概率有多大? 如果包里没有更多老鼠,而且没人拿到白老鼠,龙赢。自己跑出去的老鼠不算在拿出来的老鼠里,而且不原创 2016-02-25 16:24:07 · 551 阅读 · 0 评论 -
CodeForces 86D Powerful array 莫队算法
对于每个询问统计区间内每种数字出现次数的平方乘以数字本身的和。 莫队裸题。#include <cmath>#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;const int N = 200005;int block[N], c[N], s[1000001]; ll x[N];s原创 2016-03-13 10:07:18 · 581 阅读 · 0 评论 -
CodeForces 120F|Spiders|树形DP|求树最长链
给出n棵树,求这些树最长链长和。令f[i]表示在i子树中能走到的最长步数。有f[i]=max{f[son[i]]+1}那么对于每个点i,有答案为max j∈son[i] {f[son[i]-{j}]+f[j]+1}#include #include #include using std::max;const int N = 101, M = 2 * N;int far[N],原创 2015-11-29 16:15:58 · 861 阅读 · 0 评论 -
CodeForces 652E|Pursuit For Artifacts|边双连通分量|缩点
include include include using namespace std;define FOR(i,j,k) for(i=j;iconst int N = 300005, M = 2 * N;struct Graph { int h[N], p[M], v[M], w[M], val[N], dis[N], vis[N], cnt = 0原创 2016-11-12 18:44:35 · 787 阅读 · 0 评论 -
CodeForces Gym 101221 | 2014 World Finals | A Baggage | K Surveillance
A: Baggage题目大意一开始坐标[−2n+1..2n][−2n+1..2n][-2n+1..2n]中,[1..2n][1..2n][1..2n]按顺序放BABABA...BA,一共nnn个BA,坐标[−2n+1,0][−2n+1,0][-2n+1,0]是空的。每次可以移动连续2个字母到空的位置上,问最少多少步操作可以使得最后的序列变成AA..ABB..B(位置不一定要在[1..n][...原创 2018-03-11 21:00:21 · 658 阅读 · 0 评论 -
CodeForces Gym 101208 | 2013 World-Finals (需补坑)
感觉自己被虐千百遍,看着final的队伍做题速度++++很难受。 最后只做了6题。A: Self-Assembly题目大意C: Surely You Congest题目大意给出一个无向有权图,已知每个点会有一些汽车,这些汽车需要到1号点,汽车只会走最短路,每条路同时只能有一辆汽车从一个方向进入(也就是说不同时候是可以进入的,不同方向互不影响),车的速度一定,问有几...原创 2018-03-11 20:28:11 · 268 阅读 · 0 评论 -
CodeForces Gym 101611| Moscow Subregional of Northern Eurasia Programming Contest, ICPC 2017-2018
A: Advertising Strategy题目大意题解#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;int main() { ll n, k; scanf("%lld%lld", &n, &k);...原创 2018-03-10 19:01:31 · 951 阅读 · 0 评论 -
Codeforces Gym 101612 | 2017-2018 NEERC St Petersburg Subregional
居然这套题要文件输入输出。。A: Auxiliary Project题目大意Anna的机器可以显示最多n条灯条,问显示n条灯条能表示的数字的和最大是多少。题解因为n不大,所以完全背包即可。#include <cstdio>#include <algorithm>using namespace std;const int s[]...原创 2018-02-28 11:36:49 · 725 阅读 · 0 评论 -
UVALive 7958|Gym 101201G|Maximum Islands|二分图|最大独立点集
DescriptionYou are mapping a faraway planet using a satellite. Your satellite has captured an image of the planet’s surface. The photographed section can be modeled as a grid. Each grid cell is either原创 2017-12-09 20:05:14 · 342 阅读 · 0 评论 -
UVALive 7960|Gym 101201I|Postman|贪心
DescriptionA postman delivers letters to his neighbors in a one-dimensional world. The post office, which contains all of the letters to begin with, is located at x=0x = 0, and there are nn houses to原创 2017-12-09 21:06:30 · 417 阅读 · 0 评论 -
UVALive 7959|Gym 101201H|Paint|DP|贪心
DescriptionYou are painting a fence with n sections, numbered from 1 to n. There are k artists, each willing to paint their design on a specific portion of the fence. However, artists will never agree原创 2017-12-09 20:51:55 · 459 阅读 · 0 评论 -
UVALive 7962|Gym 101201K|Tournament Wins|概率期望|组合数求对数
DescriptionYou are one of 2k2^k competitors invited to enter a single elimination tournament. You are ranked rrth in the published rankings. Furthermore, you know that in any match between two players原创 2017-12-09 20:31:44 · 736 阅读 · 0 评论 -
CodeForces #?(727A|727B|727D|727F)|贪心|动态规划
727A题目大意:给出s和t,对s有2个操作:一个×2,一个*10+1,问怎么操作能使s变成t。 题解:暴力。。#include <cstdio>typedef long long ll;bool isPower2(ll x) { return x - (x & -x) == 0;}ll s, t, p[64];void output(int d, ll r) { puts原创 2016-10-16 12:02:29 · 1155 阅读 · 0 评论 -
CodeForces 813A|813B|813C|813D - 搜索|DP
CodeForces 813813C - 树上搜索并分析题目利用条件原创 2017-06-09 19:51:10 · 635 阅读 · 0 评论 -
CodeForces 243A|The Brand New Function|位运算
其实就是个利用位运算的知识简单的暴力。。但是比赛的时候我用的一种贪心策略超时了= =!!。找区间【l,r】的所有位运算可能产生的结果,暴力的方法。直接两重for循环。但是题目n的常数为10^5,肯定会超时。所以要换一种思路。要找 v[r] 与前面[l,r-1]的所产生的|结果,如果v[r]|v[r-1]==v[r-1]|v[r-2]..那么后面的循环就不用做了。因为产生的答案前面已经做过原创 2017-07-10 16:18:36 · 488 阅读 · 0 评论 -
CodeForces #157(258A|258B|258C|258D|258E)|数位DP|搜索|线段树
258A - Little Elephanh and Bits小象有一个二进制表示的整数a。现在它要删掉一个二进制位,使这个新整数最大。输入输出样例input101output11input110010output11010题解显然删去尽量高位的0答案就最大,当然没有0的话随便删个1就好了。代码258B原创 2017-06-17 17:03:03 · 653 阅读 · 0 评论 -
CodeForces 182D(#117)|Common Divisors|KMP求循环节
题目大意给出s1和s2,求两字符串公共循环节个数。题解求最小循环节的方法: http://blog.youkuaiyun.com/huanghongxun/article/details/53213871 注意到循环节只有最小的和由最小的重复几次组成的。 所以先求出两串的最小循环节,并判断是否一致,如果不一致就不可能有公共循环节。 如果一致,那么求出两串的循环次数,那么两次数的公共因子的个数就是循环节个原创 2016-11-18 12:00:01 · 775 阅读 · 0 评论 -
CodeForces 432D|Prefixes and Suffixes|KMP|动态规划
题目大意求s的不同长度的既是s前缀又是s后缀的子串的个数题解考虑KMP的next数组。 因为next[j]表示lcp(s[1..j],s[1..k])(k<j)lcp(s[1..j],s[1..k])(k<j)。 故s[1..j]与s[1..next[j]]的关系是后者是前者的最长后缀,由于是最长,所以肯定不会漏情况,因此后者的出现次数是前者的出现次数+1(前者最后一次出现的后缀)。。。。。。。原创 2016-11-18 00:35:54 · 699 阅读 · 0 评论 -
CodeForces #179(295A|295B|295C)|动态规划|最短路径|前缀和
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I原创 2016-11-13 23:57:23 · 507 阅读 · 0 评论 -
CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
734A: Anton and Danik题目大意给定字符串中,D多输出Danik,A多输出Anton,一样多输出Friendship题解#include <cstdio>char s[100005];int main() { int n, i, d = 0, a = 0; scanf("%d%s", &n, s); for (i = 0; i < n; ++i)原创 2016-11-16 17:58:43 · 1931 阅读 · 0 评论 -
codeforces 618d 搜索
题意:给出一个完全图的生成树,树边权和非树边权,求最短路过各点一次当x#include <cstdio>#include <vector>using namespace std;const int N = 200005;vector<int> g[N];int tree = 0;int dfs(int u, int fa) { int out = 2; for (int原创 2016-02-19 21:09:30 · 1141 阅读 · 0 评论 -
机房水题欢乐赛 2016-02-18
明天就要去参加GDKOI了怎么办好虚QAQCodeForces 283 一日游:T1: Seghttp://blog.youkuaiyun.com/huanghongxun/article/details/50686941T2: Programhttp://blog.youkuaiyun.com/huanghongxun/article/details/50687100T3: Coinhttp://blog.csdn.ne原创 2016-02-18 16:55:19 · 396 阅读 · 0 评论 -
CodeForces 335b Palindrome 动态规划
求给定字符串的最长回文子序列。f[i][j]表示前i个字符已经处理到长度为j的回文子串的最右位置(为最大化答案)。g[i][j]表示前i个字符中离i最近的字符j的位置。有f[i][j]=max(f[i-1][j], p[f[i-1][j-2]-1][str[i]])一种是继承前i-1字符的结果,另一种是令str[i]为当前回文子串的结尾,结果为找到f[i-1][j-2]的左端前和s原创 2015-11-19 14:16:34 · 612 阅读 · 0 评论 -
CodeForces 455B A Lot of Games 字典树 博弈
给定n个字符串,进行k次游戏,每次游戏初始字符串为空串,两人轮流向新字符串末尾加1个字符且新串必须为n个字符串中的某个的前缀,不能操作的人输。第i次游戏输的为第i+1次游戏的先手,最后一句赢者胜,求第1次游戏先手是否必胜。前缀->字典树->判断博弈状态。对每次游戏有4个状态:先手可决定胜败,后手可决定胜败,先手必胜,后手必胜。必胜表示2人轮流胜。可决定成败表示输k-1次并最原创 2015-12-10 19:53:16 · 707 阅读 · 0 评论 -
CodeForces 260A Adding Digits 模拟
给出a和b,要求给a右端加一位数字n次且次次是b的倍数。按照题目模拟就行了,遇到结果就结束程序。发现throw+try catch退出dfs特别方便。#include int a, b, n;int num[100001];void dfs(int x, int d) { if (x > n) { printf("%d", a); for(int i=1;i<=n;i+原创 2015-11-17 20:00:27 · 634 阅读 · 0 评论