自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

九野的博客

新窝:cygmasot.com

  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 Uva 12587 Reduce the Maintenance Cost 边双连通+树形dp+贪心

题目链接:点击打开链接题意:给定n个点m条边的无向图下面n个数表示每个点的权值。下面m条边 (u,v) dis对于每条边,这条边的权值为 原图上删除这条边后,有N对点被分离, 则点权为 N*dis然后:让边两端任意一个点的点权上 加上这条边的权值使得:最大的点权最小。问:最小的答案。思路:1

2014-10-31 23:58:41 1415

原创 BZOJ1016 && JSOI2008] 最小生成树计数

题目链接:点击打开链接裸题#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include template inline bool rd(T &ret) { char c; int sgn; if (c = getchar(),

2014-10-31 15:05:34 1209

原创 HDU 4408 Minimum Spanning Tree 最小生成树计数裸题

题意:给定n个点m条无向边 答案取模 MOD问:有多少个最小生成树DET模版:#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include template inline bool rd(T &ret) { char c; i

2014-10-31 15:00:34 1891

原创 最小生成树计数模版

typedef long long ll;const int N = 105; //点的个数const int M = 1005; //边的个数//点标从1-nstruct node { int set[N]; void init(int n) { for (int i = 0; i <= n; i++) set[i] = i; } int find(int x) {

2014-10-31 14:57:47 1247

原创 SPOJ 104 Highways 最小生成树计数

题目链接:点击打开链接题意:给定n个点m条边的无向图,问最小生成树有几个。思路:模版#pragma comment(linker, "/STACK:1024000000,1024000000")#includetemplate inline bool rd(T &ret) { char c; int sgn; if(c=getchar(),c==EOF)

2014-10-31 11:16:25 1935

原创 UVALive 6534 Join two kingdoms 树的直径+期望

题目链接:点击打开链接

2014-10-30 16:18:47 1509

原创 UVALive 6533 Inverting Huffman 哈夫曼树(构造

题目链接:点击打开链接给定哈夫曼树的n个

2014-10-30 16:12:02 1836

原创 UVALive 6530 Football (水

题目链接:点击打开链#include #include #include using namespace std;typedef long long ll;vector s;int main() { int n, k; while (~scanf("%d%d", &n, &k)) { s.clear(); int sum = 0, cnt = 0; for(int

2014-10-30 13:18:40 1431

原创 UVALive 6529 Eleven 区间dp

题目链接:点击打开链接题意:给定一个数,重新排列这个数的各个位置使得1、无前导02、能被11整除问:有多少种组合方法#include #include #include using namespace std;typedef long long ll;const int mod = 1000000000 + 7;const int N = 100+2

2014-10-30 13:16:26 1519

原创 UVALive 6527 Counting ones dfs(水

题目链接:点击打开链接#include #include using namespace std;typedef long long ll;ll re;vector p;void dfs(int dep, int g) { if (dep == 0) return ; if (p[dep-1] == 1) { re += (dep-1) * (1

2014-10-30 13:14:56 1613

原创 UVALive 6525 Attacking rooks 二分匹配 经典题

题目链接:点击打开链接题意:给定n*n的棋盘,可以在'.'上摆 象棋中的车(X是墙壁)使得任意两个车都不能互相攻击到问:最多能摆多少个车。思路:二分匹配1、若没有X,那么做法就是 X点集为行,Y点集为列,对于图上的每个点所在的行和列(x,y) 建一条边 x->y2、有了X,那么对于每个点所在的上方能接触到的X必须各不相同,所以给每个X标号,第一个X标记成n+1

2014-10-30 00:15:37 1587

原创 UVALive 6531 Go up the ultras 单调栈+RMQ

题目链接:点击打开链接题意:给定n座山下面n个数字表示n座山的高度若这座山u合法,则要满足:1、若u的左边存在比u高的山,设v是u左边距离u最近的且严格比u高的山,在[v,u]之间至少有一座山x,使得x和u的高度差>=150002、右边也同理。同时满足1、2的情况则算合法。问:输出所有合法的山。思路:求距离某个点最近的山就是维护一个单调栈,然后给

2014-10-30 00:05:01 1758

原创 Codeforces 235B Let's Play Osu! 概率dp(水

题目链接:点击打开链接给定n表示有n个格子下面每个格子为O的概率是多少。对于一段连续 x 个O的价值就是 x*x ;问:获得的价值的期望是多少。思路:把公式拆一下。。#include const int N = 100005;double dp[N][2], p[N];int main(){ int n; scanf("%d", &n); fo

2014-10-29 13:32:41 1602

原创 Codeforces 167B Wizards and Huge Prize 概率dp(水

题目链接:点击打开链接题意:给定n个对手,至少要击败其中 l 个人,现在有口袋容量为 k下面n个数字表示击败这个人的概率下面n个数字(若为-1表示击败这个人可以获得一个金币,若>0则表示可以增加口袋容量为这个数字)问:至少击败其中的l个人,且获得的总口袋容量 >= 获得的金币个数 的概率是多少。(即任何时候金币都不能放不下)思路:概率dp要注意的是有可能

2014-10-29 13:28:09 1334

原创 HDU 5074 Hatsune Miku 2014 Asia AnShan Regional Contest dp(水

简单dp#include #include #include #include using namespace std;typedef unsigned long long ull;const int N = 105;int n, m, a[N];int s[N][N], dp[2][N];void pt(int x ){ for(int i = 1; i

2014-10-27 09:34:54 1269

原创 HDU 5073 Galaxy 2014 Asia AnShan Regional Contest 规律题

推公式#include #include #include #include #include using namespace std;typedef long long ll;const int N = 50000+3;ll a[N], b[N];int main() { int T, n, m, len; ll x, sum, ans;

2014-10-27 09:33:17 1151

原创 HDU 5072 Coprime 2014 Asia AnShan Regional Contest 容斥

#include #include #include #include #include using namespace std;/////template inline bool rd(T &ret) { char c; int sgn; if(c=getchar(),c==EOF) return 0; while(c!='-'&&(c'9')) c=getchar();

2014-10-27 09:32:05 1405

原创 HDU 4821 String 字符串hash(水

题意:给定整数M L一个字符串s我们定义一个子串为"好"串 iff1、长度为 M*L2、把这个好串分成M段,每段长度为L,且每段各不相同。且我们得到的这些好串不重复计算(即把这些好串去重)问有几个好串#include #include #include #include using namespace std;typedef unsigne

2014-10-26 15:56:58 1565

原创 Codeforces 148D Bag of mice 概率dp(水

题目链接:http://codeforces.com/problemset/problem/148/D题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠。谁先抓到白色老师谁就赢。王妃每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来。每次抓老鼠和跑出来的老鼠都是随机的。如果两个人都没有抓到白色老鼠则龙赢。王妃先抓。问王妃赢的概率。解析:设dp[i][j]

2014-10-26 13:56:22 1147

原创 HDU 3853 LOOPS 概率dp(水

水水过~#include #include #include #include #include template inline bool rd(T &ret) { char c; int sgn; if(c=getchar(),c==EOF) return 0; while(c!='-'&&(c'9')) c=getchar();

2014-10-25 23:39:33 1299

原创 Codeforces 482B Interesting Array 构造+线段树判可行

题目链接:点击打开链接题意:构造一个n长的序列,m个限制:每个限制[l, r] q序列要满足 区间[l,r]的所有数 & 起来结果是q思路:直接构造,然后判可行就好了。。#include #include #include #include template inline bool rd(T &ret) { char c; int sg

2014-10-25 22:41:27 1374

原创 HDU 1316 How Many Fibs? java大数(水

水一水。。import java.math.*; import java.util.*; import java.io.*; public class Main { BigInteger[] fib = new BigInteger[505]; public void work(){ fib[1] = BigInteger.ONE; fib[2] = BigIntege

2014-10-24 19:40:01 1314

原创 HDU 3569 Imaginary Date 简单期望

推一下公式,就会发现是这个。。因为设结果有x种方案。则每个数字出现的概率都均等,然后和就是x*m每种方案的概率是1/x每个数出现的概率都是1/n所以每个方案的和就是 sum/n *m#include #include #include using namespace std;typedef long long ll;const int N = 1005;in

2014-10-23 12:10:47 1364

原创 HDU 3564 Another LIS splay(水

题意:给定一个空序列插入n个数(依次插入 1、2、3、4··n)下面n个数表示i插在哪个位置。每插入一个数后输出这个序列的lis然后。。。因为每次插入的数都是当前序列最大的数所以不会影响后面的数的dp值那么这个位置的dp值就是插入位置的前面最大dp值+1然后输出这个序列最大的dp值。==思路:splay。。。Q:为何这题需要用splay,不是简单

2014-10-23 12:02:10 1313

原创 HDU 4391 Paint The Wall 线段树(水

题意:给定n长的数组,m个操作下面是每个点的颜色下面m个操纵:1 l r col 染色2 l r col 询问区间内为col颜色的点数== 就是普通的操作+区间内最大最小颜色数的优化,感觉很不科学。。。==感觉可以卡掉这种写法。。反正就是不科学嘛 #include #include #include #include #include

2014-10-21 23:45:36 1427

原创 HDU 4035 Maze 概率dp+树形dp

题解:点击打开链接#include #include #include #include #include #include #include using namespace std;const double eps = 1e-9;const int N = 10010;vector G[N];int n;double k[N], e[N], dp[N];do

2014-10-21 14:22:36 1203

原创 POJ 2096 Collecting Bugs 概率dp(水

题目链接:点击打开链接题意:点击打开链接对于这里的dp做法是:写一个状态x,然后把从x转移出去的方程写出来,即 x = y1+y2+···其中所有的yi都是已知的。这样我们就会得到一个方程是从未知到已知。但是dp是由已知到未知。所以我们再呵呵回来。。#include #include #include #include #include

2014-10-20 20:18:27 1203

原创 Codeforces 480C Riding in a Lift dp

题目链接:点击打开链接题意:给定 n a b k构造一个长度为k的序列。使得序列中 对于任意两个相邻的数 | w[i-1] - w[i] | 且第一个数 |a - w[1] | 问:有多少种不同的序列。思路:dp对于粗暴的dp复杂度是 n^3我们可以用前缀和来优化掉一维的dp。。反正是简单粗暴的题。具体看代码吧。。#include

2014-10-19 22:24:29 1244

原创 Codeforces 480B Long Jumps 规律题

题目链接:点击打开链接题意:输出n l x y有一根直尺长度为l上面有n个刻度。下面n个数字是距离开头的长度(保证第一个数字是0,最后一个数字是l)要使得 直尺中存在某2个刻度的距离为x , 某2个刻度的距离为y要添加最少几个刻度。问:最少的刻度个数输出标记的位置。思路:分类讨论一下。。若本身尺子里就有x、y就输出0若只有x 或只有y

2014-10-19 21:37:27 1377

原创 HDU 4405 Aeroplane chess 概率dp

题目大意: 跳棋有0~n个格子,每个格子X可以摇一次色子,色子有六面p(1=(copy的思路:先处理一下每个点最远能飞到的点保证只会往终点的方向飞。。能确定的状态就是最终n-n+5这6个点的步数是0然后从后往前递推#include #include #include #include #include #

2014-10-19 21:27:24 1124

原创 UVA 10529 Dumb Bones 概率dp 求期望

题目链接:点击打开链接题意:要在一条直线上摆多米诺骨牌。输入n, l, r要摆n张排,每次摆下去向左倒的概率是l, 向右倒的概率是r可以采取最优策略,即可以中间放一段,然后左右两边放一段等,摆放顺序任意。问:在最佳策略下要摆成n张牌的期望次数。思路:点击打开链接#include #include #include #include #incl

2014-10-17 23:46:08 1543

原创 Codeforces 478D Red-Green Towers dp

题目链接:点击打开链接题意:给定r个红色正方体,g个绿色正方体。要求搭建一个高度为n的塔。对于高度为n的塔,第一层积木个数必须为n,第二层必须为n-1,依次类推,每层比下面那层少一个。且同一层颜色必须相同。问:我们设最高能搭建的塔的高度为h,问有多少种方法能搭建出高度为h的塔。思路:从最顶层开始构造。设dp[i][j]表示前i层花了j个红色木块的方法

2014-10-17 21:38:10 2058

原创 Codeforces 476C Dreamoon and Sums (水

题目链接:点击打开链接题意:给定a,b对于一个数x,若x是nice number,则满足(x/b)/(x%b) == [1,a](即结果在1-a之间)问:输出一个数表示 所有nice number的和。推一推公式就好。。结果就是b*(b-1)/2 * (a + b*( (1+a)*a/2 ) )#include #include #include #inc

2014-10-17 20:32:40 1541

原创 Codeforces 476D Dreamoon and Sets 规律+构造

题目链接:点击打开链接题意:输出n组集合,每组4个。对于任意一组中的4个元素,一组内任意2个数的gcd==k且n组的所有数字各不相同。要使得n组中最大的数字最小。问:输出最大的那个数,并输出n组的数字。思路:首先能得到,当把这组数字都/k,则任意两个数互质。然后就是规律:1 2 3 57 8 9 11对应+6#include #includ

2014-10-17 20:24:50 1346

原创 HDU 4359 Easy Tree DP? 带权二叉树的构造方法 dp

题意:给定n deep1、构造一个n个节点的带权树,且最大深度为deep,每个节点最多只能有2个儿子2、每个节点的值为2^0, 2^1 ··· 2^(n-1)  任意两个节点值不能相同3、对于一个节点,若他有左右儿子,则左子树的和 问:有多少种构造方法。思路:dp#include #include #include #include using

2014-10-10 13:59:34 1294

原创 HDU 4357 String change 规律题

题意:给定a串b串,问能否把a变成b串方法:任选a的2个字母,ascil+=1 然后交换位置,可以操作任意多次。3个及3个以上一定可以T^T2个就暴力判一下#include #include #include #include using namespace std;const int N = 66;char a[N], b[N];bool check()

2014-10-10 13:52:33 1284

原创 HDU 4355 Party All the Time 三分

题意:给定n个x轴上的点x w选一个点 X 使得 for(int i = 1; i 最小T^T看过了这么多人只能猜三分。。凑一下数据大概能感觉出来#include #include #include using namespace std;typedef long long ll;const int N = 50005;double a[N],

2014-10-10 13:50:54 1109

原创 HDU 4345 Permutation dp

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2014-10-10 13:45:31 1178

原创 HDU 4341 Gold miner 分组背包变形

题意:挖金矿,人在(0,0)点n个金子 游戏时间为T下面n行(x, y) cost val且若人 和 多块金子共线时,只能先取最近的金子,依次取,就是和游戏一样的。且所有点只在1 2象限思路:我们先把所有共线的点分组对于每组的物品,我们都可以认为取这个物品的花费就是前面所有物品的花费总和,而价值就是前面所有物品的价值总和。这样就能消除每组物品的先取后取的影响

2014-10-10 13:42:37 1153

原创 HDU 4344 随机法判素数(费马小定理

#include #include #include #include using namespace std;typedef long long ll;const int N = 108;const int S = 10;ll mult_mod(ll a, ll b, ll c) { a %= c; b %= c; ll ret = 0; whi

2014-10-09 20:46:00 1327

九野的模版3.15.10.pdf

http://blog.csdn.net/acmmmm

2015-12-19

空空如也

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

TA关注的人

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