A. Raising Bacteria

计算一下x的bitcount就是答案。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int bitcount(int x)
{
int ans = ;
while(x)
{
if(x & ) ans++;
x >>= ;
}
return ans;
} int main()
{
int x; scanf("%d", &x);
printf("%d\n", bitcount(x)); return ;
}

代码君

B. Finding Team Member

贪心

从大到小排个序,如果两个人都没有舞伴那就结为一组。

 #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = + ; struct FK
{
int r, c, d;
FK() {}
FK(int r, int c, int d):r(r), c(c), d(d) {} bool operator < (const FK& a) const
{
return d > a.d;
}
}fk[maxn * maxn]; int n; int match[maxn]; int main()
{
int tot = ;
scanf("%d", &n); n <<= ; for(int i = ; i <= n; i++)
for(int j = ; j < i; j++)
{
int x; scanf("%d", &x);
fk[tot++] = FK(i, j, x);
} sort(fk, fk + tot); int remain = n;
for(int i = ; i < tot && remain; i++)
{
FK& e = fk[i];
int u = e.r, v = e.c;
if(!match[u] && !match[v])
{
match[u] = v;
match[v] = u;
remain -= ;
}
} for(int i = ; i < n; i++) printf("%d ", match[i]);
printf("%d\n", match[n]); return ;

代码君

C. A Problem about Polyline

题意:

给出 (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + x, x) – .... 这样一条折线,和上面一点(a, b)。求可能的最小的x

分析:

首先(a, b)与原点连线的斜率最大是1,绝对不会超过1. 所以一开始判断一下,如果b > a,无解。

分情况讨论(a, b)是上升点还是下降点:

  • (a, b)是上升点,那么点(a - b, 0)一定在折线上,所以得到 a - b = 2kx (k是正整数)。x = (a - b) / (2k),注意到折线上的点纵坐标最大值为x,所以x应该满足x≥b。所以有k ≤ (a - b) / (2b),k取最大值时,x取得最小值。
  • (a, b)是下降点,和前一种情况一样。点(a + b, 0)一定在折线上,后面的分析思路和上面一样。

这两种情况算出来两个x的最小值再取最小值就是答案。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long LL; int main()
{
LL a, b; cin >> a >> b; if(b > a) { puts("-1"); return ; }
if(a == b) { printf("%I64d.000000000000\n", a); return ; } double x1, x2;
LL k = (a - b) / (b * );
x1 = 1.0 * (a - b) / 2.0 / k;
k = (a + b) / (b * );
x2 = 1.0 * (a + b) / 2.0 / k;
x1 = min(x1, x2); printf("%.12f\n", x1); return ;
}

代码君

D. "Or" Game

这个题是贪心,但是有种黑科技的赶脚,目前没想明白贪心的理由。

贪心的方法是:既然操作不超过k次,那么k次操作直接用在同一个数上面。然后枚举k次操作在哪个数上面,预处理一下前缀后缀的或运算的值,时间复杂度为O(n)。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long LL; const int maxn = + ; LL a[maxn], pre[maxn], suf[maxn]; int main()
{
int n, k;
LL x;
scanf("%d%d%I64d", &n, &k, &x); for(int i = ; i <= n; i++)
{
scanf("%I64d", a + i);
pre[i] = pre[i - ] | a[i];
}
for(int i = n; i > ; i--) suf[i] = suf[i + ] | a[i]; LL x0 = x;
for(int i = ; i <= k; i++) x *= x0; LL ans = ;
for(int i = ; i <= n; i++) ans = max(ans, pre[i-] | (a[i] * x) | suf[i+]); printf("%I64d\n", ans); return ;
}

代码君

E. Weakness and Poorness

很明显,当x向两边趋于正负很大的数的时候,序列{ ai - x }的weakness也是变大的。

但不明显的一点就是,为什么中间只有一个极值?

如果中间只有一个极值的话,就可以用三分找到对应的极小值,同时也是最小值。

关于weakness的计算:

我们可以用线性时间的DP来计算数列的最大连续子序列

d(i)表示以ai结尾的子序列的最大值,状态转移为d(i) = max{ d(i-1) + ai, ai }

同样地,再计算一个最小连续子序列,取两者绝对值的最大值就是整个序列的weakness

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std; const int maxn = + ;
const double eps = 1e-; int n;
double a[maxn]; double Calc(double x)
{
double ans = , p = , q = ;
for(int i = ; i <= n; i++)
{
double t = a[i] - x;
if(p > ) p += t; else p = t;
if(q < ) q += t; else q = t;
ans = max(ans, max(p, -q));
} return ans;
} int main()
{
//freopen("in.txt", "r", stdin); scanf("%d", &n);
for(int i = ; i <= n; i++) scanf("%lf", a + i); //printf("%.7f\n%.7f\n", Calc(2), Calc(1.75)); double L = -1e5, R = 1e5, ans;
for(;;)
{
double t = (R - L) / 3.0;
double Lmid = L + t, Rmid = R - t;
double ansL = Calc(Lmid), ansR = Calc(Rmid); if(fabs(ansL - ansR) < eps) { ans = ansL; break; } if(ansL > ansR) L = Lmid;
else R = Rmid;
} printf("%.7f\n", ans); return ;
}

代码君

CodeForces Round #320 Div2的更多相关文章

  1. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  2. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  3. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  4. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  5. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  6. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  7. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  8. [Codeforces] Round #320 (Div.2)

    1.前言 虽然这次我依旧没有参加正式比赛,但是事后还是看了看题目的...一般不怎么刷Codeforces. A.Raising Bacteria You are a lover of bacteria ...

  9. Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C. Weakness and Poorness 三分 dp

    C. Weakness and Poorness Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...

随机推荐

  1. BeanCopier使用说明

    BeanCopier从名字可以看出了,是一个快捷的bean类复制工具类. 一 如何使用,我就直接丢代码了 public class BeanCopierTest { static SimpleDate ...

  2. Java thymeleaf模板获取资源文件的内容

    我们在某些时候可能需要获取配置文件properties中的配置信息,而不需要用Java传给模板,在模板中就可以直接获取 我们需要在resources/下定义国际化配置文件即可,注意名称必须中messa ...

  3. nodejs 实践:express 最佳实践(三) express 解析

    nodejs 实践:express 最佳实践(三) express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固, ...

  4. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图

    本节中,您将开始修改为电影控制器所新加的操作方法和视图.然后,您将添加一个自定义的搜索页. 在浏览器地址栏里追加/Movies, 浏览到Movies页面.并进入编辑(Edit)页面. Edit(编辑) ...

  5. VirtualBox中出现UUID have already exists ,并且数字键盘numlock效果相反

    原文地址:https://www.cnblogs.com/xqzt/p/5053338.html 原因:由于linux密码登录错误,修改也报错误,所以只能重新安装虚拟机并在其中安装镜像文件,但是安装镜 ...

  6. 面向对象程序设计第四单元总结(UML系列)

    2019面向对象程序设计第四单元总结 前言 ​ 本单元是面向对象程序设计课程的最后一个单元了,本单元是和UML模型相关,也就是说,我们需要正确理解UML模型的基础上,对构建出的UML模型进行解析,但是 ...

  7. 文件系统结构-《循序渐进linux》

    1.目录结构 很多linux的发行版都遵循FSSTND标准,这一标准仅包含系统最基本的文件. /dev 设备文件 /bin 可执行的二进制文件 /opt /root 超级用户的主目录 /home 每个 ...

  8. 帝国empirecms后台登陆次数限制修改

    打开文件:\e\config\config.php, 找到 'loginnum'=>5, 把5改为自己想要的数字即可

  9. Mac下安装ElasticSearch及其插件

    目录 环境介绍 安装过程 安装Kibana 环境介绍 软件版本:ElasticSearch7.0.0 Kibana7.0.0 系统环境:mac 环境 安装过程 官网下载 ElasticSearch7. ...

  10. bug {was not declared in this scope}

    使用自己定义的结构体作为返回值的时候,出现了 ...was not declared in this scope 检查了各种头文件,把缓存也都删掉了还是不行. 结果,发现,应该这样用vector< ...