日常训练(1)
时间:2020-06-10
本文章向大家介绍日常训练(1),主要包括日常训练(1)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
6月9日:牛客算法周练10 https://ac.nowcoder.com/acm/contest/5986#question
B题:
思路:采用二进制贪心,如果当前位置贡献为连续1的则记录答案。和线性基的想法类似,选择对于当前位存在贡献的一位。
关于线性基:https://oi-wiki.org/math/basis/
代码如下:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=1e5+10; 6 typedef long long ll; 7 int main() 8 { 9 int a[maxn],n; 10 cin>>n; 11 for(int i=1;i<=n;i++) 12 { 13 scanf("%d",&a[i]); 14 } 15 ll ans=0; 16 for(int i=0;i<20;i++) 17 { 18 ll tmp=a[1],sum=0; 19 for(int j=1;j<=n;j++) 20 { 21 if(a[j]>>i&1) 22 { 23 tmp&=a[j]; 24 sum+=a[j]; 25 ans=max(ans,tmp*sum); 26 } 27 else 28 { 29 tmp=a[j+1]; 30 sum=0; 31 } 32 } 33 } 34 printf("%lld",ans); 35 return 0; 36 }
F题:
思路:每条边被计算的数目等于这条边两边的节点的个数之积。然后按照积这个权值进行排序,依次赋值1,2 ......n-1
所以我们只要统计每个边的左侧和右侧有多少顶点就可以。
这里的DFS很不一样...
代码如下:
1 #include<iostream> 2 #include<cstdio> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 typedef long long ll; 7 const int maxn=1e5+10; 8 9 vector<ll> q[maxn]; 10 vector<ll> p; 11 ll n; 12 13 ll dfs(ll u,ll v) 14 { 15 ll sum=1; 16 for(int i=0;i<q[u].size();i++) 17 { 18 if(q[u][i]!=v) 19 { 20 sum+=dfs(q[u][i],u); 21 } 22 } 23 p.push_back(sum*(n-sum)); 24 return sum; 25 } 26 int main() 27 { 28 ll a,b; 29 cin>>n; 30 for(int i=1;i<n;i++) 31 { 32 scanf("%d%d",&a,&b); 33 q[a].push_back(b); 34 q[b].push_back(a); 35 } 36 dfs(1,-1); 37 sort(p.begin(),p.end()); 38 ll s=0,l=n-1; 39 for(int i=1;i<p.size();i++) 40 { 41 s+=p[i]*l; 42 l--; 43 } 44 printf("%lld",s); 45 return 0; 46 }
原文地址:https://www.cnblogs.com/theshorekind/p/13087525.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- spring-boot-route(七)整合jdbcTemplate操作数据库
- Pytorch 卷积中的 Input Shape用法
- 解决TensorFlow程序无限制占用GPU的方法
- 基于Python的自媒体小助手—登录页面的实现代码
- PHP addAttribute()函数讲解
- PHP PDOStatement::setAttribute讲解
- PHP中的访问修饰符简单比较
- PHP asXML()函数讲解
- PhpStorm配置Xdebug调试的方法步骤
- python字典的值可以修改吗
- 使用Keras构造简单的CNN网络实例
- Python接口测试环境搭建过程详解
- 使用已经得到的keras模型识别自己手写的数字方式
- 解决keras使用cov1D函数的输入问题
- PHP PDOStatement::getColumnMeta讲解