HDU多校Round 5
Solved:3
rank:71
E. Everything Has Changed
#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0); int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int m; double R;
scanf("%d%lf", &m, &R); double ans = 2.0 * PI * R;
for(int i = ; i <= m; i++)
{
double x, y, r;
scanf("%lf%lf%lf", &x, &y, &r); double dis = sqrt(x * x + y * y);
if(dis + r < R || dis - r >= R) continue; double c1 = acos((r * r + dis * dis - R * R) / (2.0 * dis * r));
ans += c1 * 2.0 * r;
double c2 = acos((R * R + dis * dis - r * r) / (2.0 * dis * R));
ans -= c2 * 2.0 * R;
}
printf("%.20lf\n", ans);
}
return ;
}
G. Glad You Came
#include <bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
typedef long long ll; ui x, y, z;
ui sui()
{
x ^= x << ;
x ^= x >> ;
x ^= x << ;
x ^= x >> ;
ui p = x ^ (y ^ z);
x = y;
y = z;
z = p;
return z;
} ll zx[];
int lz[]; void pushup(int rt)
{
zx[rt] = min(zx[rt << ], zx[rt << | ]);
} void pushdown(int rt)
{
if(lz[rt])
{
lz[rt << ] = max(lz[rt << ], lz[rt]);
lz[rt << | ] = max(lz[rt << | ], lz[rt]);
zx[rt << ] = max(zx[rt << ], (ll)lz[rt << ]);
zx[rt << | ] = max(zx[rt << | ], (ll)lz[rt << | ]);
lz[rt] = ;
}
} void build(int l, int r, int rt)
{
if(l == r)
{
zx[rt] = lz[rt] = ;
return;
}
zx[rt] = lz[rt] = ; int m = l + r >> ;
build(l, m, rt << );
build(m + , r, rt << | );
} void update(int ql, int qr, int v, int l, int r, int rt)
{
if(zx[rt] >= v) return;
if(ql <= l && qr >= r)
{
lz[rt] = max(lz[rt], v);
zx[rt] = max(zx[rt], (ll)v);
return;
} pushdown(rt);
int m = l + r >> ;
if(ql <= m) update(ql, qr, v, l, m, rt << );
if(qr > m) update(ql, qr, v, m + , r, rt << | );
pushup(rt);
} ll query(int l, int r, int rt)
{
if(l == r) return 1LL * (ll)l * zx[rt];
pushdown(rt); ll res = ;
int m = l + r >> ;
res ^= query(l, m, rt << );
res ^= query(m + , r, rt << | );
return res;
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n, m;
cin>>n>>m>>x>>y>>z;
int l, r, v; build(, n, );
for(int i = ; i <= m; i++)
{
ui f1 = sui(), f2 = sui(), f3 = sui();
l = min(f1 % n + , f2 % n + );
r = max(f1 % n + , f2 % n + );
v = f3 % ( << );
update(l, r, v, , n, );
}
printf("%lld\n", query(, n, ));
}
return ;
}
H. Hills And Valleys
构造一个0-9的数组 每次枚举翻转哪两个数就一共45次
然后把两个数组跑一个lcs 枚举翻转的那个数组可以多次匹配
#include <bits/stdc++.h>
using namespace std; char s[];
int a[];
int b[];
int dp[][];
int l[][];
int r[][];
int n, cnt, nl, nr;
int ans, ansl, ansr; void solve(int len)
{
for(int i = ; i <= len; i++) dp[][i] = ;
for(int i = ; i <= n; i++)
{
for(int j = ; j <= len; j++)
{
dp[i][j] = dp[i - ][j];
l[i][j] = l[i - ][j];
r[i][j] = r[i - ][j];
if(a[i] == b[j])
{
dp[i][j]++;
if(j == nl && l[i][j] == ) l[i][j] = i;
if(j == nr) r[i][j] = i;
} if(dp[i][j - ] > dp[i][j])
{
dp[i][j] = dp[i][j - ];
l[i][j] = l[i][j - ];
r[i][j] = r[i][j - ];
}
}
}
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
scanf("%s", s);
int zx = , zd = ;
for(int i = ; i <= ; i++) b[i] = i - ;
for(int i = ; i < n; i++)
{
a[i + ] = s[i] - '';
zx = min(zx, a[i + ]);
zd = max(zd, a[i + ]);
} solve();
ansl = ;
ansr = ;
ans = dp[n][];
for(int i = zx; i <= zd; i++)
{
for(int j = zx; j < i; j++)
{
cnt = ;
for(int a = ; a <= j; a++) b[++cnt] = a;
nl = cnt + ;
for(int a = i; a >= j; a--) b[++cnt] = a;
nr = cnt;
for(int a = i; a < ; a++) b[++cnt] = a;
solve(cnt); if(dp[n][cnt] > ans && l[n][cnt] && r[n][cnt])
{
ans = dp[n][cnt];
ansl = l[n][cnt];
ansr = r[n][cnt];
}
}
}
printf("%d %d %d\n", ans, ansl, ansr);
}
return ;
}
HDU多校Round 5的更多相关文章
- HDU多校Round 8
Solved:2 rank:141 D. Parentheses Matrix n,m有一个小于6的时候是一种构造方法 答案是n + (m - 2) / 2 (n > m) 都大于6的时候 可以 ...
- HDU多校Round 7
Solved:2 rank:293 J. Sequense 不知道自己写的什么东西 以后整数分块直接用 n / (n / i)表示一个块内相同n / i的最大i #include <bits/s ...
- HDU多校Round 6
Solved:2 rank:452 I. Werewolf 没有铁人 找铁狼 如果一个环中只有一条狼人边那个人就是铁狼 说铁狼是好人的人也是铁狼 #include <bits/stdc++.h& ...
- HDU多校Round 4
Solved:3 rank:405................................. B. Harvest of Apples 知道了S(n,m) 可以o(1)的求S(n - 1, m ...
- HDU多校Round 3
Solved:4 rank:268 C. Dynamic Graph Matching 状压DP一下 #include <stdio.h> #include <algorithm& ...
- HDU多校Round 1
Solved:5 rank:172 A.Maximum Multiple #include <stdio.h> #include <algorithm> #include &l ...
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
随机推荐
- 网页设计中11 款最好CSS框架
网页设计和发展领域已经成为竞争激烈的虚拟世界.想要在网络的虚拟世界中生存,仅有一堆静止的在线网络应用是远远不够的,网页必须要有很多功能,配以让人无法抗拒的设计.网页编码一定要合适.精确,才能保证不发生 ...
- MySQL-查询数据(SELECT)
MySQL SELECT语句 SELECT语句用于从表或视图中获取数据 Select语句组成 Select 之后是逗号分隔列或星号(*)的列表,表示要返回所有列. From 指定要查询数据的表或视图. ...
- Python执行系统命令并获得输出的几种方法
[root@a upfc]# ./ffmpeg-linux64-v3.3.1 -i a.mp3 ffmpeg version N-86111-ga441aa90e8-static http://joh ...
- sql server 生成随机数 rand函数
https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql?view=sql-server-2017 在某一个区间内生 ...
- Python split 分割中文
str8="中国 和 韩国 的区别" # a=str8.find("Python") # print a b=str8.find("和") ...
- 昆石VOS3000_2.1.2.4完整安装包及安装脚本
安装包下载地址:http://www.51voip.org/post/56.html 安装教程: 上传安装包 ·给整个目录授权 chmod 777 /root/vosintsall `核实 关闭sel ...
- struct框架
配置文件struct-config.xml<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE str ...
- java静态方法和实例化方法的区别(copy)
[资料来源] http://blog.csdn.net/biaobiaoqi/article/details/6732117 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法 ...
- sql数据库如何在数据库里面把其中一个数据库的表复制到另一个数据库里面
在sqlserver数据库里面,我们肯定有这样一个情况,假如我用的是SQL2008,如何把数据库里面的整个表以及表内数据复制到另外一个表中.那应该如何操作??有两种方法,我们一起来看一下 复制表结构: ...
- 【杂文】C++头文件加速
[杂文]C++头文件加速 骚年,冲钱送开挂哦,可以助你超神于OI战场 如果你发现你的暴力超时了的话,可以尝试用一下头文件加速,说不定就过了呢! #pragma once//只编译一次 #pragma ...