【 2013 Multi-University Training Contest 5 】
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 】的更多相关文章
- 【 2013 Multi-University Training Contest 8 】
HDU 4678 Mine 对于每个空白区域,求SG值. 最后异或起来等于0,先手必败. #pragma comment(linker,"/STACK:102400000,102400000 ...
- 【 2013 Multi-University Training Contest 7 】
HDU 4666 Hyperspace 曼哈顿距离:|x1-x2|+|y1-y2|. 最远曼哈顿距离,枚举x1与x2的关系以及y1与y2的关系,取最大值就是答案. #include<cstdio ...
- 【 2013 Multi-University Training Contest 6 】
HDU 4655 Cut Pieces 假设n个数构成的总数都分成了n段,总数是n*a1*a2*...*an.但是答案显然不会那么多. 对于相邻的两个ai,ai+1,如果选择相同的颜色,那么就减少了a ...
- 【 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 ...
- 【 2013 Multi-University Training Contest 3 】
HDU 4622 Reincarnation 枚举字符串的起点,构造后缀自动机,每次插入一个字符,就能统计得到当前不同字串的个数,预处理出所有的询问. #include<cstdio> # ...
- 【 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. ...
- 【 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 ...
- 【HDU 2014 Multi-University Training Contest 1 1002】/【HDU 4862】Jump
多校训练就这么华丽丽的到了 ,于是乎各种华丽丽的被虐也開始了. 这是多校的1002; 最小费用最大流. 题目大意: 有n*m个方格,每一个方格都一个的十进制一位的数.你能够操作K次. 对于每一次操作, ...
- 【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 ...
随机推荐
- 通过sharedpreferences实现记住密码功能
通过sharedpreferences实现记住密码功能
- JS高级程序设计 笔记
1.instanceof 可以判断实例是否在某个对象的原型上: function A() { this.a = "a"; } function B() { this.b = &qu ...
- 2014鸟人Birdman中文字幕文件下载
下载后,解压缩,会得到 Birdman.2014.1080p.WEB-DL.DD5.1.H264-RARBG.srt 文件,把这个文件放到视频文件(mkv文件)相同的文件夹里. 用暴风影音播放,如果没 ...
- 关于引用JS和CSS刷新浏览器缓存问题
有时候我们会碰到上线的新版本都要刷新一次缓存的问题.那是因为改了JS的内容,但是JSP引用的地方后面的字符串未发生改变导致浏览器读取浏览器缓存而不会重新加载新的JS内容,以下提供两种解决方式: 1.每 ...
- App的启动过程
App的启动过程 所有的app都是通过launcher去启动的 launcher自己也是一个app,一个系统级别的app,放在asystem/app/下,使用系统签名. 对代码进行分析
- 兼容版本实现 XMLHttpRequest
创建XMLHttpRequest function createXmlHttp() { var xmlHttp = null; //根据window.XMLHttpRequest对象是否存在使用不同的 ...
- windows下如何安装和启动MySQL
1.下载,解压到自己喜欢的目录 2.配置环境变量.MYSQL_HOME,值为mysql的根目录:在path中添加%MYSQL_HOME%/bin目录. 3.向windows注册mysql服务.必须用管 ...
- PHP简单文件上传
一个简单的PHP上传文件的例子: upload.html <html> <body> <form action="upload.php" method ...
- Memcached的使用
为什么要使用Memcached? 1)高并发访问数据库的痛:死锁 2)磁盘IO之痛 3)读写性能完美 4)超简单的集群搭建Cluster 5)开源 6)性能最佳 7)丰富的成功案例 Memcached ...
- js写的ajax
1.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8& ...