博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
所谓的日常 #10 - 勤王室馬騰舉義 報父仇曹操興師
阅读量:6531 次
发布时间:2019-06-24

本文共 2160 字,大约阅读时间需要 7 分钟。

div.2

给定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 
2 #include
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 }
View Code

 

div.1

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

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

然后就是一个树dp啦。

1 #include 
2 3 const int MOD = (int)1e9 + 7; 4 const int N = 100000 + 5; 5 std::vector
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 }
View Code

 

转载于:https://www.cnblogs.com/zstuACM/p/5111269.html

你可能感兴趣的文章
微软企业级加解密解决方案MBAM架构
查看>>
没有苦劳,只有功劳!
查看>>
基于ThinkPHP写的一个简单的CMS系统
查看>>
笔记——搭建简易NFS服务
查看>>
Exchange 2010 DAG local and Site DR/Failover and Fail back
查看>>
LigerUI - 树表格的数据来自Server
查看>>
认证技术概述
查看>>
制作Windows Server 2003/08 image详细步骤与OpenStack介绍
查看>>
2016国赛小结
查看>>
Android Studio 第六十四期 - Android业务组件化之URL Scheme使用
查看>>
Hyper-V 2016 系列教程41 Windows 10 Hyper-V 系统要求
查看>>
EC2 WordPress 移动目录
查看>>
Windows Server 2008 启用公共文件夹共享
查看>>
【运维故事】职场如何领先一步?
查看>>
如何提高SEO优化团队效率
查看>>
做业务与技术之间的桥梁
查看>>
SFB 项目经验-17-Windows 2012 R2-补丁打到最新-问题-KB2982006
查看>>
用hadoop中的libhdfs和fuse-dfs构建快速云存储
查看>>
不知道自己不知道(Unknown Unknowns)的知识决定了你的发展
查看>>
Apple Watch的非“智能手表”卖点
查看>>