【 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 ...
随机推荐
- centos 6.6中的yum源更换成国内的阿里云yum源
阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ 第一步:备份你的原镜像文件,以免出错后可以恢复. mv /etc/yum.repos.d/CentOS-Base. ...
- CSS样式表(二)
[layout] clear:该属性的值指出了不允许有浮动对象的边. 默认值:none none: 允许两边都可以有浮动对象 both: 不允许有浮动对象 left: 不允许左边有浮动对象 right ...
- install intel c/c++ compiler
通过在Intel官网上申请试用版本Intel® Parallel Studio XE Cluster Edition for Linux,会让你提交邮箱等信息,完成后会很快回复邮件,邮件会给出下载地址 ...
- 【翻译】利用Qt设计师窗体在运行时创建用户界面(Creating a user interface from a Qt Designer form at run-time)
利用Qt设计师窗体在运行时创建用户界面 我们利用Calculator窗体例子中创建的窗体(Form)来展示当一个应用(application)已经生成后,是可以在其运行时产生与例子中相同的用户界面. ...
- 点击表格tr同时点击checkbox
项目里偶然要用到这个功能,写到了就记一下吧.
- ucos中的三种临界区管理机制
熟悉ucos,或者读过Jean.J.Labrosse写过的ucos书籍的人,一定会知道ucos中著名的临界区管理宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(). 同样 ...
- Servlet开发详解
一.Servlet简介 Servlet是sun公司提供的一门用于动态web资源的技术 sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,需要完成两个步骤: 编写一个J ...
- 如何在自己的窗体(控件)中显示XAF的视图
Form form = new Form(); DevExpress.ExpressApp.View listView = Application.CreateListView(Application ...
- Scrum Meeting 12-20151218
任务安排 姓名 今日任务 明日任务 困难 董元财 无 网络连接框架优化 无 胡亚坤 无 修复商品列表排列混乱) 无 刘猛 无 无 马汉虎 无 无 赖彦俞 无 无 燃尽图 团队照片 代码签入记录 今天开 ...
- [MVC_Json序列化]Json字符串反序列化成C#对象
上一篇中有Json序列化相关问题得到了解决. 那么结果集为Json串时,如何将Json串转成C#对象呢? 现举例说明: -现有如下字符串数据 string k = "{\"ring ...