HDU 4647 Another Graph Game

如果没有边的作用,显然轮流拿当前的最大值即可。

加上边的作用,将边权平均分给两个点,如果一个人选走一条边的两个点,就获得了边的权值;如果分别被两个人拿走,两人的差值不变。

将边权平均分配给点,对点的权值排序轮流选择。

 #include<cstdio>
#include<algorithm>
#include<iostream>
#define MAXN 100010
#define EPS 1e-8
typedef long long LL;
using namespace std;
double arr[MAXN];
int main() {
int n, m;
int i;
int x, y, val;
double a, b;
while (~scanf("%d%d", &n, &m)) {
for (i = ; i <= n; i++) {
scanf("%lf", &arr[i]);
}
for (i = ; i < m; i++) {
scanf("%d%d%d", &x, &y, &val);
arr[x] += val * 0.5 + EPS;
arr[y] += val * 0.5 + EPS;
}
sort(arr + , arr + + n);
a = b = ;
for (i = n; i > ; i -= ) {
a += arr[i];
b += arr[i - ];
}
cout << (LL) (a - b + EPS) << endl;
}
return ;
}

HDU 4648 Magic Pen 6

求前缀和,枚举擦除的起点,求出最右端的位置,更新答案。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 100010
using namespace std;
int arr[MAXN];
int sum[MAXN];
int pos[MAXN];
int main() {
int n, m;
int i;
int ans;
while (~scanf("%d%d", &n, &m)) {
sum[] = ;
memset(pos, -, sizeof(pos));
for (i = ; i <= n; i++) {
scanf("%d", &arr[i]);
arr[i] = (arr[i] % m + m) % m;
sum[i] = (sum[i - ] + arr[i]) % m;
pos[sum[i]] = i;
}
ans = ;
for (i = ; i <= n; i++) {
ans = max(ans, pos[sum[i - ]] - i + );
}
printf("%d\n", ans);
}
return ;
}

HDU 4649 Professor Tian

dp[i][j][k]表示第i位,处理到第j个数,该位的结果为k的概率。

答案就是每一位的dp[i][n][1]*(1<<i)相加。

 #include<cstdio>
#include<cstring>
#define MAXN 220
#define MAXM 20
double dp[MAXM][MAXN][];
int arr[MAXN];
char str[MAXN];
double p[MAXN];
int main() {
int n;
int ca = ;
int i, j, k, l;
int tmp;
double ans;
while (~scanf("%d", &n)) {
for (i = ; i <= n; i++) {
scanf("%d", &arr[i]);
}
for (i = ; i <= n; i++) {
scanf(" %c", &str[i]);
}
for (i = ; i <= n; i++) {
scanf("%lf", &p[i]);
}
memset(dp, , sizeof(dp));
for (i = ; i < MAXM; i++) {
if (arr[] & ( << i)) {
dp[i][][] = ;
} else {
dp[i][][] = ;
}
for (j = ; j <= n; j++) {
if (arr[j] & ( << i)) {
l = ;
} else {
l = ;
}
for (k = ; k < ; k++) {
if (str[j] == '&') {
tmp = k & l;
} else if (str[j] == '|') {
tmp = k | l;
} else {
tmp = k ^ l;
}
dp[i][j][tmp] += dp[i][j - ][k] * ( - p[j]);
dp[i][j][k] += dp[i][j - ][k] * p[j];
}
}
}
ans = ;
for (i = ; i < MAXM; i++) {
ans += dp[i][n][] * ( << i);
}
printf("Case %d:\n%lf\n", ca++, ans);
}
return ;
}

【 2013 Multi-University Training Contest 5 】的更多相关文章

  1. 【 2013 Multi-University Training Contest 8 】

    HDU 4678 Mine 对于每个空白区域,求SG值. 最后异或起来等于0,先手必败. #pragma comment(linker,"/STACK:102400000,102400000 ...

  2. 【 2013 Multi-University Training Contest 7 】

    HDU 4666 Hyperspace 曼哈顿距离:|x1-x2|+|y1-y2|. 最远曼哈顿距离,枚举x1与x2的关系以及y1与y2的关系,取最大值就是答案. #include<cstdio ...

  3. 【 2013 Multi-University Training Contest 6 】

    HDU 4655 Cut Pieces 假设n个数构成的总数都分成了n段,总数是n*a1*a2*...*an.但是答案显然不会那么多. 对于相邻的两个ai,ai+1,如果选择相同的颜色,那么就减少了a ...

  4. 【 2013 Multi-University Training Contest 4 】

    HDU 4632 Palindrome subsequence dp[x][y]表示区间[x,y]构成回文串的方案数. 若str[x]==str[y],dp[x][y]=dp[x+1][y]+dp[x ...

  5. 【 2013 Multi-University Training Contest 3 】

    HDU 4622 Reincarnation 枚举字符串的起点,构造后缀自动机,每次插入一个字符,就能统计得到当前不同字串的个数,预处理出所有的询问. #include<cstdio> # ...

  6. 【 2013 Multi-University Training Contest 2 】

    HDU 4611 Balls Rearrangement 令lcm=LCM(a,b),gcd=GCD(a,b).cal(n,a,b)表示sum(abs(i%a-i%b)),0<=i<n. ...

  7. 【 2013 Multi-University Training Contest 1 】

    HDU 4602 Partition f[i]表示和为i的方案数.已知f[i]=2i-1. dp[i]表示和为i,k有多少个.那么dp[i]=dp[1]+dp[2]+...+dp[i-1]+f[i-k ...

  8. 【HDU 2014 Multi-University Training Contest 1 1002】/【HDU 4862】Jump

    多校训练就这么华丽丽的到了 ,于是乎各种华丽丽的被虐也開始了. 这是多校的1002; 最小费用最大流. 题目大意: 有n*m个方格,每一个方格都一个的十进制一位的数.你能够操作K次. 对于每一次操作, ...

  9. 【2018 Multi-University Training Contest 5】

    01: 02:https://www.cnblogs.com/myx12345/p/9436953.html 03: 04: 05:https://www.cnblogs.com/myx12345/p ...

随机推荐

  1. 2017年1月4日 16:16:24开始学习Linux——好像回到上次发随笔的时间。

    auto为C语言局部变量的默认属性 static指明变量的静态属性,也具有作用域限定符的意义 static修饰的全局变量作用域只是生命的文件中,修饰的函数作用域只是声明的文件中 register指明将 ...

  2. Android runtime Exception 整理

    一般面试中java Exception(runtimeException )是必会被问到的问题 常见的异常列出四五种,是基本要求.更多的....需要注意积累了   常见的几种如下:   NullPoi ...

  3. OpenCV2+入门系列(三):遍历图像的几种方法

    根据OpenCV中Mat类型的结构和内存中存储方式,此处给出三种对图像进行遍历的方法.首先给出基础的读取图片代码,在中间替换三种遍历方法即可,本文中,程序将遍历图像并将所有像素点置为255,所有运行结 ...

  4. 图片懒加载--判断div ul中的li是否已经滑动到可视区域里

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. 移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果

    需求:页面有弹出层菜单,当弹出层菜单超出屏幕可视区域时,不能滚动.加上滚动后,底部body的滚动事件如何禁止,加上了overflow:hidden;还是不可用. 如下图:地区弹出框可以滚动,而底部的b ...

  6. Sublime Text 3 支持的热门插件推荐(转载)

    SublimeText是一款非常精巧的文本编辑器,适合编写代码.做笔记.写文章.它用户界面十分整洁,功能非同凡响,性能快得出奇.这些非常棒的特性 包括任意跳转(Goto Anything).多重选择( ...

  7. 服务器上index.jsp变空

    早上,前五分钟3台分别浏览了3台服务器,都是正常的,一会后台说其中一台打开页面是空白的,发现这台服务器上的index.jsp文件变成了空白.用其他服务器上的index.jsp文件覆盖,蹦出了另一个错误 ...

  8. C#常用错误

    解决方法: 在配置文件连接数据库设置后加 MultipleActiveResultSets=true; <add key="ConnectionString" value=& ...

  9. M2事后分析报告

    设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 这次M2预想的就是解决3个主要问题,1:增加查询自己购买或者发布记录的功能,2:优化 所有的网络连接 ...

  10. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...