- 博客(75)
- 收藏
- 关注
原创 2014taichuan D题
题意:给定一颗有N个节点的树,一开始每个节点都是白色的,现在要对每个节点进行决策,使得每个白色节点连接着恰好K个黑色节点,如果达不到则这个白色节点变为黑色分析:树形dp g[u] 表示以u为根节点的子树且u节点为黑色时的最大白点数f[u][i] 表示以u为根节点时的子树且u为白色节点时连接i个黑色节点的最大白点数,这里的转移是一个树上的背包{CSDN:CODE:1205
2015-10-14 14:41:59 703
原创 二分图的最大匹配
poj 3401 题意:给定一个n*n的矩阵,其中分布着m个东西吧,每一次行操作或者列操作都可以消除整行或整列,求最小的操作次数分析:以行和列建立左右顶集, 因此为一个二分图,对于i, j位置有一个东西这建立一条这样的边, 表示行i或列j至少要进行一次操作,也就是选出最少的边,使得每一个顶点至少被一条边覆盖, 这个就是最小点覆盖,二分图中这个等于最大匹配{CSDN:CODE:1
2015-10-13 20:22:27 430
原创 poj 3565
题意:给定平面上的n个白点和n个黑点,要求用n条线段连接白点和黑点, 并且每一条线段不想交分析:黑白点可看为二分图中的x集合和y集合,可得出当两个集合为最小圈匹配时一定满足条件#include #include #include #include const int N = 100 + 5;const double eps = 1e-10;int n;
2015-10-05 17:51:14 964
原创 2014西安F题
题意:给定n朵花, 用m种颜色去染色, 要求相邻两朵花之间的颜色不同并且不同的颜色总数恰好为K,求方案数分析:首先我们可以从m种颜色种选出k种颜色,让这k种颜色进行染色g(k) : 恰好k种颜色的染色方案数f(k):小于等于k种颜色的染色方案数则 f(k) = sum(g(i) * c(k, i) (i = 1, 2, 3...k))此处用到了二项式反演公式:则g(k
2015-10-02 23:21:12 529
原创 hdu 4777
题意:给定一个长度为n的序列,然后m次询问, 每个询问求[l, r]区间的与其他数都互质的数的个数分析:非常感谢叉姐提供的思路,首先对于每一个a[i]我们可以求出 left[i], right[i]表示这段区间的数与a[i]都互质,对于询问的区间我们按照左端点从小到大排序进行离线操作,对于到达left[i]时我们将[i, right[i]] +1, 离开i时将[i, right[i]] -1
2015-10-02 23:06:42 1022
原创 sprintf小记
sprintf:可将一个一个整数转换为一个字符串#include int main() { freopen("out.txt", "w", stdout); for (int i = 1; i <= 10; i ++) { char str[10]; sprintf(str, "%d", i);
2015-09-01 18:36:22 449
原创 istringstream小计
存个模板, istringstream主要是有利于带有空格的长度不定的字符串的读入#include const int N = 10000 + 5;char buffer[N];int main() { freopen("a.txt", "r", stdin); freopen("out.txt", "w", stdout);
2015-08-25 22:08:24 451
原创 hdu 5363
题意:给定1-n这N个数, 求一个非空的和为偶数的子集个数分析: 答案为2(n - 1) - 1个 。#include typedef long long ll;const int N = 100000 + 5;const int mod = (int)1e9 + 7;int main() { int t; scanf("%d", &t);
2015-08-10 13:45:20 474
原创 hdu 5340 manacher
题意 : 给定一个长度小于20000的字符串, 问是否可以分割成3段非空回文字符串。分析: manacher预处理出前缀和后缀回文的位置, 然后判断中间部分是否回文即可, 复杂度o(n2);
2015-08-05 10:55:26 551 1
原创 hdu 5213
很久没有写博客了, 今天学了一下莫对算法, 存个模板#include using namespace std;const int N = 30000 + 10;const int M = 30000 + 10;struct node { int id; int is; int flag; int l, r; node(int
2015-04-28 17:15:25 724
原创 vim
set nocompatiblesource $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswinset diffexpr=MyDiff()function MyDiff() let opt = '-a --binary ' if &diffopt =~ 'icase' | let opt =
2015-01-28 10:06:46 629
原创 杭电扩栈
今天做了一个题, 居然zhan#pragma comment(linker, "/STACK:1024000000,1024000000")
2014-08-29 10:50:48 1162
原创 结构体学习
#include #include #include using namespace std;struct node { int x, y; node () {}; node (int x, int y) : x(x), y(y) {};};int main() { node a; node b(1, 2); node
2014-08-24 18:38:31 666
转载 LightOJ数论题单及简易题解
1007 计算前n个数的欧拉函数的平方的和,递推计算欧拉函数,并利用树状数组,注意2 5000000这组数据要unsigned long long才能存下1014 计算P-L的因子中大于L的数的个数,从1到65535分别对P-L进行试除,同时储存除数和商,然后输出大于L的数即可1024 计算最大公倍数,每个数需要素数展开,然后取最高次幂,结果需要大数,大概有4000位,写不好的话会T1
2014-07-26 19:45:41 994
原创 UVA 10817 Headmaster's Headache
题意:校长#include #include #include using namespace std;const int inf = 0x3f3f3f3f;int dp[110][7000], cnt[10], vis[10];int s, n, m;char str[100];bool is_digit(char c) { if
2014-07-19 14:44:31 749
原创 UVA 11404 Palindromic Subsequence
题意:给你一个字符串, 求最长的回文子序列, 若答案不唯一, 则输出zidia
2014-07-16 12:59:51 853
转载 ACM大纲
Changsha University of Science & TechnologyJuly 31, 20121 推荐题库• http://ace.delos.com/usaco/美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以baidu 一个
2014-05-02 17:25:24 1479
原创 hdu 3397
开一维数组col[]进行延迟标记col[] = -1表示没有要向下传递的操作col[] = 0表示向下传递时将左右区间全部赋值为0col[] = 1表示向下传递时将左右区间全部赋值为1col[] = 2表示向下传递时将左右区间的0变为1, 1变为0 #include #include using namespace std;const int maxn =
2014-02-23 13:58:24 714
原创 线段树 区间合并
1 poj 3667 题意:支持两种操作 1 如果有连续长度大于D的房间,则输出最左的区间值, 否则输出0;2 将ql, qr区间的房间标记为 未入住思路:节点维护三个域, 该节点的最大房间数,该节点左端点起的最大房间数, 该房间右端点起的最大连续房间数,用线段树进行更新和查询#include #include using namespace s
2014-02-17 13:56:33 774
原创 Codeforces Round #223 (Div. 1)
题目:http://codeforces.com/contest/380A题意:实现两种操作1 在数组的最后插入一个数; 2将数组的钱L部分复制c次, 问任意位置的元素值思路:递归求解, 每次执行操作后记录下当前数组的总长度和此操作的类型,求解时二分查找该位置为第P次操作,若该操作为1, 则直接输出答案,否则计算该位置为复制前L长的位置v,递归求解{CSDN:CODE:18
2014-02-09 22:52:51 824
原创 最长上升子序列的变形
poj 3616#include #include #include using namespace std;typedef struct { int s, e, v;}point;point a[1010];int dp[1010], n, m, r;bool cmp(point a, point b){ return a.e < b.e;}int mai
2014-02-03 11:19:52 763
原创 hdu 1242
在使用优先队列时, 不仅可按元素的大小为优先级,在使用结构体时,可通过运算符重载在其他的博客看到一句话,优先队列是队列和排序的结合,很精辟本题因为经过守卫和道路时所花的时间不一样,故不能用简单的队列求解,可使用优先队列,到达该点时间少的先出队列#include #include #include using namespace std;struct node{ int x
2014-01-22 19:27:28 652
原创 优先队列
poj 3253#include #include using namespace std;priority_queue, greater > q;int n, t;int main(){ while(scanf("%d", &n) == 1) { while(!q.empty()) q.pop(); for(int i=1; i<=n;
2014-01-21 10:56:42 676
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人