所谓的日常 #10 - 勤王室馬騰舉義 報父仇曹操興師

div.2

CodeForces 546B Soldier and Badges

给定n(<= 3000)个整数Ai,有一种操作:给某个数加1。问最少操作几次,使得n个数都不一样。

考虑这样一个问题:已知一个数组B,用上面的操作,把A变成B的最小代价怎么算。

一个最优的方法是,把A中最小的数变成B中最小的数,把A中次小的数变成B中次小的数...把A中最大的数变成B中最大的数。

所以做法就出来了。先把A数组排序,然后把A[i]变成max(A[i],B[i - 1] + 1)即可。(因为同样要保证变化完后B数组递增)

 1 #include <stdio.h>
 2 #include <algorithm>
 3
 4 int A[3000];
 5 int n;
 6
 7 int main() {
 8     scanf("%d",&n);
 9     for (int i = 0; i < n; ++ i) {
10         scanf("%d",A + i);
11     }
12     std::sort(A,A + n);
13     int answer = 0;
14     for (int i = 1; i < n; ++ i) {
15         if (A[i] <= A[i - 1]) {
16             answer += A[i - 1] + 1 - A[i];
17             A[i] = A[i - 1] + 1;
18         }
19     }
20     printf("%d\n",answer);
21 }

div.1

CodeForces 461B Appleman and Tree

给定一棵n(<=1e5)个节点的树,每个节点有颜色(黑或白),让你删掉一些边使得剩下的每个连通块内都恰好只有1个黑点。问删边的方案数。

那么就dp(u,c)表示节点u的子数,与u关联的连通块有/无黑点的状态是c,的方案数。

然后就是一个树dp啦。

 1 #include <bits/stdc++.h>
 2
 3 const int MOD = (int)1e9 + 7;
 4 const int N = 100000 + 5;
 5 std::vector<int> edges[N];
 6 int color[N];
 7 int n;
 8 int dp[N][2];
 9
10 inline void add(int &a,int b) {
11     a += b;
12     if (a >= MOD) a -= MOD;
13 }
14
15 void dfs(int u) {
16     if (color[u] == 1) {
17         dp[u][1] = 1;
18         dp[u][0] = 0;
19     } else {
20         dp[u][0] = 1;
21         dp[u][1] = 0;
22     }
23     for (int i = 0; i < edges[u].size(); ++ i) {
24         int v = edges[u][i];
25         dfs(v);
26         int tmp[2] = {};
27         for (int a = 0; a < 2; ++ a) {
28             for (int b = 0; b < 2; ++ b) {
29                 add(tmp[a | b],dp[u][a] * 1ll * dp[v][b] % MOD);
30                 if (a == 0 && b == 1) {
31                     add(tmp[0],dp[u][a] * 1ll * dp[v][b] % MOD);
32                 }
33             }
34         }
35         dp[u][0] = tmp[0];
36         dp[u][1] = tmp[1];
37     }
38
39 }
40
41 int work() {
42     dfs(0);
43     return dp[0][1];
44 }
45
46 int main() {
47     scanf("%d",&n);
48     for (int i = 1; i < n; ++ i) {
49         int x;
50         scanf("%d",&x);
51         edges[x].push_back(i);
52     }
53     for (int i = 0; i < n; ++ i) {
54         scanf("%d",color + i);
55     }
56     printf("%d\n",work());
57 }

时间: 2024-10-22 21:38:18

所谓的日常 #10 - 勤王室馬騰舉義 報父仇曹操興師的相关文章

成功大數據團隊的「三駕馬車」

對於那些著手嘗試大數據應用的企業來說,成敗的關鍵是組建一個優秀的大數據團隊,但是不要指望一個「首席數據官(CDO)」或者數據科學家搞定所有的事情,成功的大數據團隊需要三駕馬車:一位業務分析師.一位機器學習專家和一位數據工程師.隨著報表軟體企業應用的火熱開展,數據科學家正在鬧人才荒,可謂一將難求,但是Lithium公司的首席科學家Michael Wu博士在接受IW採訪時表示:數據科學家的人才荒是因為人們對數據科學家的期望值過高,希望他即懂業務也懂最先進的大數據技術,這樣的人才自然是奇貨可居,而且不

[从头读历史] 第261节 左传 [BC657至BC598]

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月20日 08:02:15, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[左传 [BC657至BC598]]. 继续来看<左传> <span style=&quo

[从头读历史] 第262节 左传 [BC597至BC538]

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月20日 08:02:15, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[左传 [BC657至BC598]]. 继续来看<左传> 左傳 宣公十二年(-597) 十二年春

[从头读历史] 第263节 左传 [BC537至BC479]

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月21日 15:55:12, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[左传 [BC537至BC479]]. 继续读<左传> 这首<七月>,其实里面把冬月

动物-鱼:柳根鱼

ylbtech-动物-鱼:柳根鱼 柳根鱼为拉氏鱥.湖鱥和真鱥的统称,为江河野生的小型经济鱼类,价值很高.也有专家称之为最原始的鱼类之一.在鱼类分类学上隶属于鲤形目.鲤科.鱥属. 1.返回顶部 1. 中文学名:柳根鱼 拉丁学名:Phoxinus lagowskii Dybowski 界:动物界 门:脊索动物门 亚    门:脊椎动物亚门 纲:硬骨鱼 目:鲤形目 科:鲤科 亚    科:雅罗鱼亚科 属:鱥属 目录 1 形态特征 2 生活习性 3 分布情况 4 养殖技术 ? 鱼池 ? 鱼苗选择 ? 饲

【日更】NOIP2016考前记

写在前面 一直想写个类似的东西,然而因为懒一直没动笔_(:з」∠)_现在被cf支配着顺便码点东西,不光写备考的事,也写点有意思的日常 10.22 忙(jue)碌(wang)的一天,从两点考到两点,3场考试各种花式翻车让我开始有点怀疑存在的意义了.初赛数学题翻车,晚上模拟赛花了一个半小时推得数学公式WA30,半夜打CF花了整场考试60%的时间试图理解C题题意,还是以失败告终. 京东的物流卡了三天没更新了,淘宝上关注的几家店里flbd平均涨了100块,距离Lily出荷大概还有一个月,账户里余额却只剩

云上安全三字经

阿里云在安全上倡导的是责任共担模型, 简单说就是云平台的安全由阿里云负责, 但云上租户自己的网络.主机.业务.数据的安全,需要租户自己负责,那作为一个租户,具体该怎么做呢? 记得小时候的"三字经"郎朗上口,至今不忘. 因此我就想,云上的安全能否也用3字经的方式表达?即简单又清晰,因此整理了下面9个安全"三字经". 这第1句是:筑堡垒. 就是通过虚拟网络的技术,Virtual Private Cloud,简称VPC,把每个租户的业务系统放到一个私有网络中, 在不同VP

源码阅读的方法

小弟我入行不久,实打实的菜鸟,最近由于个人兴趣和工作需要,读了一些源码,感觉还不错,谨以此文做个小小的总结以达到抛砖引玉之效,如有错误和不足的地方希望各位补充. 感谢开源,让我这种并没有受过系统的软件开发训练的工程师也能学习到业界一流的代码,并通过源代码和一些顶尖的程序员零距离的对话.源码对于我这种经验算不上丰富的小白来说是恐怖的,但真正开始的时候却也是魅力无限的,当全身心地沉浸在代码中时,专注和兴奋度远大于听一次讲座或者看一本书,但如果方法不对则很有可能刚刚形成的勇气和兴趣会被无情地摧毁. 我

中国象棋规则01&lt;转&gt;

棋盘: 中国象棋的棋盘有九条平行的竖线和十条平行的横线相交而组成,其中共有九十个交叉点,棋子就摆在这些交叉点上.中间部分(棋盘的第五,第六两横线之间末画竖线的空白地带)称为 河界 .两端的中间(两端第四条到第六条竖线之间的正方形部位),以斜交叉线构成中文米字形方格的地方,叫作 九宫 (它恰好有九个交叉点). 2 界河: 这是一个和国际象棋不同的地方,及对垒双方的中间有一条河界,通常称其为楚河,也就是说棋子过河才能攻打对方的首领.这些规则都是和中国古战场的一些场景类似,并且逐渐演变而来成为中国象棋