自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Anxdada -- 我等风来也等你

此博客不会维护了

  • 博客(48)
  • 收藏
  • 关注

原创 Codeforces Round #430 (Div. 2) C , D 题 题解

传送门 C: 给一颗树, 有点权. 然后输出每一个点的beauty值, 代表从根节点1开始到该节点, 所有点权的gcd. 并且每一条路你可以把某个点的点权变成0. 从而使得beauty值变大, 最后输出所有节点的最大的beauty值. 思路: 考虑到每个数最多的因子数是√n, 不断求gcd是很快降到1的, 所以直接暴力求每一种情况, 而某个节点的父亲的可能的值不会很多. 然后直接暴力求. 细节

2017-09-24 21:20:34 253

原创 AIM Tech Round 4 (Div. 2) B, C 题解

传送门 B : 给你一个n*m的01矩阵, 问有多少种选矩阵位置的方式使得所在位置属于同一行或同一列, 且颜色相同(即数字相同)那么是很简单的一道水题. 直接是组合数, 那么直接求有点麻烦, 还要先去打组合数的表. 所以直接利用二进制枚举的思想, 直接有多少个直接是2的多少次方. 然后减去0 (都不选)的情况就行了. 记得最后减去多加的就行.AC Codeconst int maxn = 1e2+

2017-09-24 21:09:32 891

原创 POJ - 2443 Set Operation 【思维 + bitset操作】 !!!bitset操作详解!!!

bitset详细讲解首先bitset<10>bit(6); 就可以直接把6转化成了相应的二进制了. 但是如果要输出. 必须先强制转化成int才能输出. 下标从0开始. 然后就是bitset之间的操作只能用bitset来判断, 比如说判断是否等于0. 那么应该先定义bitset<10>bit(0); 然后判 (注意优先级)(bitset[5] & bitset[2...

2017-09-24 20:57:59 662

原创 2017年南宁网络赛 L 题 【最长非递减序列 + 思维】

传送门 //题意: 就是给你一串数字, 如果它是负数那么它的权重为0, 如果它>=1e4, 那么它的权重为5, 且在序列中真正的数是该数 - 1e4. 其他的数权重为1. 问选一个权重最大的LIS. //思路: 我们首先考虑nlogn的LIS的做法, 其中的g数组保存的是以该个数结尾的最长的LIS是多少, 并且越小的越好. 那么是不是跟这个很像了. 所以直接权重为5的连续插入5次, 然后求一个

2017-09-24 20:48:32 430

原创 西南交通大学第十三届ACM决赛 F 题 【思维 + 前缀】

传送门 //题意: 给定n个数和一个位置k, 定义F(n) 为题目中的要求. 问必须移动这n个元素中的某一个数恰好k位(往前或往后), 问怎样移动是的F(n)的值最大. 给出的n个数以非递减的顺序给出. //思路: 非递减的顺序很重要, 这样的话一定是移动某一个数往前移是最优的. 具体证明就不给出了. 其实仔细想想就可以明白. 然后有了这个前提, 我们就可以枚举每一个数往前移动k为时可以得到的

2017-09-23 00:17:02 391

原创 Codeforces Round #435 (Div. 2) B, C 题解

传送门 B: 给定一棵树, 问最多可以加多少条边, 使得这幅图还是一个二分图. (二分图定义为对于任意一条边, 它的连个端点来自于不同的集合) 思路: 既然是二分图, 那么肯定想到染色, 对于处于深度进行染色成为二分图. 然后答案就是两个集合的点数相乘再减去(n-1). 意思上每两个点之间都可以有一条边, 然而原图中已经存在n-1条边了. 所以可以加的边数就是这么多.AC Codeconst i

2017-09-20 19:21:20 335

原创 HDU - 6153 A Secret 【kmp + 思维】

传送门 //题意: 就是问第二个串的每一个后缀在第一个串出现的次数*该后缀的长度然后在求和. //思路: 那么我们可以知道如果长的串都匹配了, 那么比它短的串也一定匹配了, 拿第二个例子说. aba匹配了, 自然ba, a也都匹配了. 但是有个问题就是可能会有遗漏. 比如这里的a应该是两次. 然后向后匹配不好写, 那么我们同时翻转两个字符串. 就可以正着进行kmp了. 只是对传统的kmp进行一

2017-09-20 19:14:07 380

原创 网络流之最大流(最小割)板子(Dinic 很快哦~~~) (还有玄学邻接表写法)

模板题HDU - 3549 最大流的精华在于反向边. 刘汝佳的(很快的, 一般的都能跑) (如果会T, 边的容量会爆int的, 小心的传inf即可, 能够就行)int cnt ;int n, m, s, t;bool vis[maxn];int d[maxn], cur[maxn];struct Edge { int u, v; int cap, flow;} e...

2017-09-19 22:56:01 772

原创 打印欧拉路径问题 hihoCoder - 1182 POJ - 1392 POJ 1780 POJ - 2237

hihoCoder hihoCoder的题就不讲题意和解法了. 还是说说几个注意的点. 1: 解法完全就是hihoCoder的解法, 就是实现方法时非常巧妙的. 我们每次从扩展0或1的边, 为了防止越界, 在%一下len. 然后建边的不同建造出来的可行路是不同的. 后面有道题是要输出字典序最小的路, 所以在那个题需要注意下建边顺序. 而这道题不要求什么顺序, 所以随便输出一个可行路就可以了.

2017-09-19 19:56:01 539

原创 头文件

/** @Cain*/#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>#include <queue>#include <stack>#include <vector>#include <map>#include <set>#include <bi

2017-09-18 22:52:57 440

原创 HDU - 6206 Apple 【大数计算之Java】

传送门 //题意: 给定圆上三点, 问第四个点是否在圆内. //思路: 题意很简单, 方向也很好做. 直接求圆心, 求距离比较即可. 麻烦的是点的坐标范围都很大. 所以导致ll都会爆, 精度也很难保证. 所以比赛时就想用到Java来实现高精度计算. 就是太久没碰Java了, 写起来很是生疏…. 这次相当于复习下Java了. 注意一点就是, 就是在嵌套使用大数之间的运算的时候, 如果实在不是很

2017-09-18 21:38:32 554

原创 Codeforces Round #434 div2 A, B , C,D 题 题解

传送门 A题: 给出n和k. 求一个数是n的倍数且末尾最少包含k个零 思路: 刚开始的时候没啥思路, 然后枚举1-1e8暴力过去的. 后面一想不就是求个lcm?赛后补了一发. 所以CFA题是很简单, 看你能想到不….void solve(){ ll n,k; while(~scanf("%lld%lld",&n,&k)){ ll m = 1;

2017-09-18 14:17:37 709

原创 大数C++板子

这个板子可以解决长度为4000之内的大数之间的运算, 并且把所有会用到的运算都加进去了, 但是总的来说, 感觉抄板子都要找很久, 而且可能抄错, 所以比赛的时候可能还是会用其他语言写题吧, 这个还是保存着.这道题是以 HDU 6202#include <cmath>#include <map>#include <vector>#include <cstdio>#include <cstdli

2017-09-17 23:46:11 401

原创 是否存在欧拉路径问题 POJ - 1386 hihoCoder - 1181

poj - 1386 //题意: 给出结果字符串, 问他们是否可以头尾相连起来. //思路: 以每个单词的头和尾作为节点, 每个单词头尾之间连接一条有向边, 最后看是否可以找到一条有向欧拉路径即可. 注意两点: 1: 根据有向欧拉路的判定, 最后cnt最好是标记的入度和出度不等的顶点数, 因为如果有欧拉路, cnt一定等于0. 否则的话做法稍显麻烦. 2: 一定要判当前的图中是否联通. 不

2017-09-16 21:40:49 384

原创 西安网络赛 F 题 Trig Function 【数学公式题】

传送门 //题意: 给出一个如题面的公式, 问将公式右端展开得到的多项式中cos(x)的m次方那项的系数是多少. //思路: 那么最为关键的部分也就是如何展开cos(n*x), 当时比赛的时候百度了好久., 终于找到一个公式: 前面那个求和符号是求所有的系数之和. 所以对于一个m我们算出相应的k, 然后直接计算根据n的奇偶带入k进行计算即可. 注意当n,m 一定同奇偶! 否则对应的就没有那

2017-09-16 19:16:39 444

原创 欧拉路径相关知识

首先说说概念: 设G是无向连通图, 则称经过G的每条边一次且仅一次的路径为欧拉通路. 如果欧拉通路是回路, 那么该回路为欧拉回路. 具有欧拉回路的无向图G称为欧拉图.如果G是有向图, 并且G的基图联通. 那么由上面的定义中所有的名次加上一个有向即可…相关定理: 1: 无向图G存在欧拉通路的充要条件是: G为连通图, 并且G仅有两个奇度节点或者无奇度节点 2: 当G有两个奇度节点的连通图

2017-09-15 23:10:22 482

原创 POJ - 1659 Frogs' Neighborhood 【Havel定理可图化】

可简单图化的判定(Havel定理): 把序列排成不增序,即d1>=d2>=……>=dn,则d可简单图化当且仅当d’={d2-1,d3-1,……d(d1+1)-1, d(d1+2),d(d1+3),……dn}可简单图化. 简单的说,把d排序后,找出度最大的点(设度为d1),把它后面的d个数依次连边,然后这个点就可以不管了(然后这个数–),一直继续这个过程,直到建出完整的图,或出现负度等明显不合理的情况

2017-09-15 00:30:33 389

原创 SCU - 4438 Censor 【字符串好题】

传送门 //题意:每次从第二个串中删去第一个串, 输出最后剩下的串. //思路: 这道题是字符串一列比较经典的题目, 一般所有的求解字符串的题目都可以做. 我用的是KMP. 每次保存匹配到当前位成功匹配到了第一串目前匹配位置的前面的几个字符. 这样每次匹配到了一次第一个串后,k -= len, t = now[k-1] ,这样就又可以接着匹配了.AC Code/** @Cain*/const

2017-09-14 23:25:06 569

原创 HDU - 5918 Sequence I 【kmp 变形】

传送门 //题意: 问有多少个起点满足每次跳p个单位可以匹配下面那个子串. //思路: 比较水的一个KMP变形. 每次我们跳k个单位进行kmp匹配就行了. 需要注意一点的但就是循环多少次了? 很显然的K次啊!!! 复杂度还是O(n+m)AC Code/** @Cain*/const int maxn = 1e6+5;int zc[maxn], pp[maxn];int Next[maxn]

2017-09-14 22:52:55 323

原创 新疆网络赛 G 题 Query on a string 【kmp/暴力匹配 + 树状数组 + 思维】

传送门 //题意: 给定一个字符串每次询问一个区间, 问可以匹配多少个子串. //思路: 因为子串的长度最大10. 那么每次修改最多只修改到10次. 所以我们可以直接暴力匹配就是了. 对于主串, 如果从某个开头可以匹配, 那么设那个开头的位置为1. 比如说样例就是 1000000. 这样对于询问的一个区间, 我们直接求前缀和就是了. 还有就是需要注意的几个小细节, 请看代码. 注意分清下标

2017-09-14 22:47:01 383

原创 HDU - 5962 Counting Cliques 【思维 + dfs 暴力】

传送门 //题意: 给定一幅n个点, m条边的图, 问有多少个恰好有S个顶点的完全子图? //思路: 这道题的想法炒鸡棒, 要学到. 因为s最大10. 点数最多也才100. 完全可以用暴力搜索. 问题有一点, 如何避免搜重? 所以这里就非常有意思了. 我们建图时建有向的有序边. 即我们只从编号小的到编号大的(或者反着, 必须有序)建有向边. 而连接性我们双向标记. 这样我们在暴力每个点搜索时

2017-09-14 22:14:58 542

原创 POj - 2752 Seek the Name, Seek the Fame 【next数组的理解】

传送门 //题意: 问从开头开始多长的序列前后缀是相同的. //思路: 还是对next的理解, 理解到了这种题就是水题. 其实做多看这种题就会发现, 只要把next数组写出来, 然后对next数组进行分析和理解, 很容易出答案的.AC Codeconst int maxn = 4e5+5;int cas=1;char zc[maxn], pp[maxn];int s[maxn];int

2017-09-12 22:24:42 280

原创 HDU - 1358 Period 【next数组的灵魂掌握】

传送门 //题意: 从第1个到第i个, 如果这一段的循环节>1, 则输出位置以及循环周期(即循环节个数) //思路: 还是由我上一篇博客给出的证明, 这篇博客给出了循环节以及循环节周期的证明, 刚好适用于这道题. (其实上一篇博客是这个的缩小版, 只用求全部, 而这道题是全部可能的循环节都要求, 即把每一个位置都可能作为串终止地方)AC Codeconst int maxn = 1e6+5;i

2017-09-12 21:47:53 312

原创 HDU - 3746 Cyclic Nacklace 【KMP next数组的深入理解】

传送门 //题意: 问使得最少让所有字符循环两次最少需要添加的字符数量. (如果循环次数超过两次, 但循环没有完整, 也必须添加一定的字符). //思路: next数组的深入理解, 首先我们可以很清楚的知道要先求循环节长度. 那么循环节长度可以直接通过 总长 - next[总长]得到. 这是证明 然后就可以直接判断输出了.AC Codeconst int maxn = 1e5+5;int c

2017-09-12 21:08:46 300

原创 KMP板子

纯板子: (原理懂了, 板子随便进行修改)next[i] 代表的是序列i之前构成的序列的最大公共前后缀的长度. 注意, next对应的字符串下标应该是从0开始的!!! 最好保持这个不变!!! 不要轻易去改动它!!! 字符版:const int maxn = 1e4+5;int cas=1;char zc[maxn], pp[maxn*100];int Next[maxn];void get

2017-09-12 20:12:56 374

原创 POJ - 1201 Intervals 【差分约束 + 最长路模型】

传送门 // 题意: 对于一个序列,有n个描述,[ai,bi,ci]分别表示在区间[ai,bi]上,至少有ci个数属于该区间, 输出满足这n个条件的最短的序列(即包含的数字个数最少) 包含的最少的个数是多少.// 思路: 首先还是一个数轴来表示, 但是这的点并不再是单调的点, 而是应该用区间的形式. 所以设d[i] 表示 [0, i] 上有多少个数属于该区间. 所以对于输入数据ai bi

2017-09-12 11:53:48 347

原创 HDU - 3440 House Man 【差分约束 + 最短路模型】

传送门 题意:有n个屋子,超人从最矮的屋子开始,依次跳下比当前屋子高且最接近当前高度的屋子(即按照屋子高度增序来跳),但超人跳跃还有一个水平距离限制D,他每次跳的水平距离这题是个差束约分看sample说明问题sample34 210 20 16 13超人从10开始,跳到13,但是10和13的水平距离至少为3,但超人的水平限制距离是2,所以无论怎么移动都无法跳过去,输出-1

2017-09-12 11:32:33 388

原创 查分约束系统讲解以及板子

以HDU3592作为背景 板子const int maxn=1e4+5;const int inf = 0x3f3f3f3f; //用这个可以直接memint n;int head[maxn], cnt, dis[maxn];bool vis[maxn];int times[maxn];struct node{ int to,next,w;}e[maxn1];v

2017-09-12 00:19:56 500

原创 HDU - 6025 card card card 【双指针 + 尺取】

传送门 //题意: 问最少从哪个位置起(包括本身) , 将这些数字对移动到最后”接着”, 使得可以将所有的牌拿完, 拿相应上一堆的数要付出下面那么多数的代价. 中途不允许出现小于0的情况. //思路: 直接算出最后的序列(c[i] = a[i] - b[i] ), 然后复制一段到后面, 用双指针进行尺取, 取得最大长度的和不小于0的序列就是我们要的答案. 想这种题就一定要维护好边界情况!!!!

2017-09-11 01:06:19 319

原创 HDU - 4109 Instrction Arrangement 【思维 + DAG求最长路】

传送门 //题意: 给定m种关系, 每种关系表示为X Y Z , 表示Y指令需要在执行完X指令后至少Z的时间后才能执行. 开启第一个任务需要时间1, 问最少需要多少时间可以执行完所有的指令. 同一时间内可以执行多条指令. //思路: 我们把图画出来后看, 对于一个入度为零的起点, 向下可以走的最长路就是所需要的时间, 所以问题就转化成了DAG求最长路, 所以随便用一种方法写就是了. 我用的B...

2017-09-11 00:35:20 360

原创 HDU - 1224 Free DIY Tour 【DAG求最长路】

传送门 //题意: 固定好了的起点和终点, 每个点有相应权值. 问从起点到终点中间进过的点权加起来的最大值是多少, 并输出路径. //思路: DAG求最长路有很多种方法, DP, DFS, 拓扑序(我用蜜汁T, 我把所有的循环都特判了), BFS, 都是可以的, 视题目而定. 那这道题我就直接用BFS写, 每次松弛一下就行了. 打印路径记录一下前驱就好了. 有一个坑点就是一定要清空val值...

2017-09-10 23:31:03 369

原创 POJ - 1236 Network of Schools 【有向图至少加多少条边变成强联通图】

传送门 //题意: 给定一幅有向图, 问: 1: 至少需要给几个人传递消息, 可以使图中任意点可以收到消息. 2: 至少加多少条边, 使得原图变成一幅强联通图. //思路: 这个就很简单了, 就是一个水题. 随便分析一下就知道了. 对应答案就是缩完点后的图中入度为0的点数, max(入度为0的点数, 初度为0的点数). 注意一个坑点就是当缩完点后只有一个点时, 需要特判答案.AC Cod

2017-09-10 23:24:13 582

原创 CF--- PROBLEM 620 E 【思维 + DFS序 + 二进制状态】

传送门 //题意: 对于一棵树以1为根的树, 每个结点有一种颜色. 现在有两种操作. 1 x y 把以x为根节点的子树中的所有节点染成颜色y 2 x 询问以x为根节点的子树中有多少种颜色的节点 //思路: 很明显的DFS序, 需要考虑几点, 涉及到线段树的区间修改. 然后就是颜色的计数, 由于颜色最多60种, 那么用long long 的二进制来表示它的颜色. 这样再pushup时直接左右

2017-09-09 11:36:50 298

原创 DFS序的学习

//DFS序是个很有用的东西, 可以将树上的信息维护成一个连续的区间, 从而使树变成一条一条的链, 我们就可以用线段树来维护这些链, 从而求出我们所要的东西. 因为遍历的次序. 一个结点和其子树一定是在一个连续的区间内. 遍历的写法:void dfs_id(int u,int fa){ p1[u] = ++ti; for(int i = head[u] ; ~i ; i

2017-09-09 11:33:27 371

原创 Codeforces Round #433 div2 C,D 题 题解

CF – 835A 传送门 //题意: 给定n,k. 重新安排一个时间表, 范围是(k+1,k+n), 你需要计算的是一个新的时刻表, 使得res = (第一个时间 -1)*a[1] + (第二个时间 -2)*a[2] + … 要最小. a[1] - a[n] 是题目中给出的. //思路: 也是比较简单的一道题, 我们贪心的选择对于输入的cost越大的, 我们就从(k+1, k+n)中选出

2017-09-08 16:27:46 322

原创 HDU -- 5908 Abelian Period 【思维 + map + 暴力】

传送门 //题意: 问可以将给定的一个序列, 划分成长度全为相同值的一些子串, 且每个子串中出现了的数的次数要相等. //思路: 首先必须是n的约数才行. 那么枚举n的约数, 对于每一个约数, O(n)暴力扫一遍判定是否满足就行. 总的复杂度为O(n的约数个数*n). 需要注意一些, 在暴力判定两个串是否符合题意时, 用map是非常方便的. 这是map的一个骚操作, 记好了!!! 详见代码.

2017-09-08 15:36:15 380

原创 HDU --- 5904 LCIS 【思维 + 简单dp】

传送门 //题意: 给出两个序列, 分别为n,m. 求这两个序列最长公共子序列, 并且要满足选出来的这个序列是严格递增且相邻数字之间恰好差1. //思路: 突破点肯定是在要求递增且相邻位置差1上. 所以dp状态转移方程很简单: dp[num] = dp[num-1] + 1 ; 所以我们对第一个序列进行dp处理, 处理出每一个数作为满足条件的最长值是多少. 处理完后, 直接对第二个序列进行边扫

2017-09-08 15:26:16 320

原创 北京师范大学第十五届ACM决赛 C题 Captcha Cracker 【水题模拟】

传送门暂时没有, 嘻嘻 //就是给你一串包含小写字母和数字的字符串, 从中打印出是02469的, 英文的也算. 0 - zero….. //就是一份很简单的模拟. 用string做也是非常好写的. 记一记 AC Code/** @Cain*/void solve(){ string s; cin >> s; for (int i = 0;i < s.size();

2017-09-07 17:22:00 482

原创 HDU --- 5901 Count primes 【求1e11内的素数模板题】

传送门 //题意: 求最大1e11内的素数个数. //刚开始做这道题时, 想得可以解决区间1e6以内的素数个数, 然后特判一下输入的数, 分段打表输出答案. 但是死活过不了. 于是搜题解说这个是1e11内的素数个数模板题??? 可以用什么Meisell-Lehmer方法做. 具体证明情况都是给的论文, 我能怎么说, 只能说还是把这个模板留下来, 免得在遇见(手动滑稽). 有两个版本, 一个复杂

2017-09-06 15:00:20 422

原创 HDU -- 5601 N*M bulbs 【思维 + 规律】

传送门 //这道题和HDU5600很相似, 只是从一维拓展到了二维. 那么解决方法和5600也比较相似. 我们可以发现, 从起点开始去把除起点以外的为1的点全部变成0, 再回到起点, 除了起点和为1的那个点状态改变为相反状态, 其他的点都没有受影响(随便画一画就可以知道了). 最后起点的状态是由除起点以外1的个数决定的. 如果是奇数那么最后状态相反, 否则不变. 所以最后要考虑的就是从起点到终点

2017-09-05 22:15:56 428

空空如也

空空如也

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

TA关注的人

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