[ZJOI 2008] 骑士】的更多相关文章

题目大意:有一些骑士.他们每个人都有一个权值.可是因为一些问题,每个骑士都特别讨厌还有一个骑士.所以不能把他们安排在一起.求这些骑士所组成的编队的最大权值和是多少. 思路:首先貌似是有向图的样子,可是一个人讨厌还有一个人.他们两个就不能在一起.所以边能够看成是无向的. n个点,n条无向边,好像是一颗基环树. 但事实上这是一个基环树林,由于题中并没有说保证图一定联通. 然后就能够深搜了,处理出每个联通块. 事实上每个联通块就是一个基环树,在这个基环树上进行树形DP.求出最大值,然后累加到答案上.…
题意: 有一些战士,他们有战斗力和讨厌的人,选择一些战士,使他们互不讨厌,且战斗力最大,范围1e6 分析: 把战士看作点,讨厌的关系看作一条边,连出来的是一个基环树森林. 对于一棵基环树,我们找出环,选择环上一条边(u,v). 那么只需考虑两种情况:1.u不选,v任意:2.v不选,u任意.答案取max累计即可 程序: #include <cstdio> #include <cstdlib> #include <cstring> #include <string&g…
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1040 [算法] 首先 , 题目中互相讨厌的关系构成了一棵基环森林 用拓扑排序找出环 , 对于每个环上的点为根节点 , 做以下DP : f[u][0]表示以u为根的子树中 , 不选u , 最大战斗力是多少 , f[u][1]表示选u , 最大战斗力是多少 显然 : f[u][0] = sigma{max{f[v][0] , f[v][1]}) f[u][1] = a[u] + sig…
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中安逸了数百年的Z国又怎能抵挡的住Y国的军队.于是人们把所有的希望都寄托在了骑士团的身上,就像期待有一个真龙天子的降生,带领正义打败邪恶. 骑士团是肯定具有打败邪恶势力的能力的,但是骑士们互相之间往往有一些矛盾.每个骑士都有且仅有一个自己最厌恶的骑士(当然不是他自己),他是绝对不会与自己最…
http://www.lydsy.com/JudgeOnline/problem.php?id=1038 半平面交裸题,求完半平面后在折线段上的每个点竖直向上和半平面上的每个点竖直向下求距离,统计最小的值作为答案即可. 1A!!!斯巴达!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include<cmath> #include<cstdio> #include<cstring> #include&…
sth神犇的模板: //bzoj1036 题目:一个n个点的树每个点有一个权值,支持修改单点权值,求某两点路径上的点权和或最大点权. #include <cstdio> using namespace std; int pos[30001],f[30001],up[30001],son[30001],size[30001],a[80001],next[80001],last[30001],sum[100001],max[100001];//pos是指某点在线段树中的位置:f是父节点:up是所在…
Description 题库链接 双方 \(n\) 人,给出每人的战斗力,赢一场加 \(2\) 分,平局 \(1\) 分,失败不得分.求最大和最小的得分. \(1\leq n\leq 100000\) Solution 田忌赛马.贪心策略及证明可以参考链接 最小得分就相当于 \(2n-\) 对方最大得分.交换再做一次贪心即可. Code //It is made by Awson on 2018.2.27 #include <bits/stdc++.h> #define LL long lon…
http://www.lydsy.com/JudgeOnline/problem.php?id=1036 复习了一下好写好调的lct模板啦啦啦--- #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 30003; int n; struct node *null; struct node { node *fa, *ch[2]; int w,…
[题目链接] 点击打开链接 [算法] 树链剖分模板题 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 30000 struct SegmentTree { int l,r,maxn,sum; } tree[MAXN*]; int i,N,Q,u,v,t,num; ],fa[MAXN+],son[MAXN+],pos[MAXN+], top[MAXN+],dep[MAXN+],id[MAXN+],a[MAXN+]; s…
[题目链接] 点击打开链接 [算法] 动态规划 f[i][j][x][y]表示当前选了i个男生,j个女生,男生与女生差最大为x,女生与男生差最大为y的方案数 转移很显然,笔者不再赘述 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 155 #define MAXK 25 ; int n,m,k,i,j,x,y,ans; int f[MAXN][MAXN][MAXK][MAXK]; int main() { scanf…