Codeforces Round 774 (Div. 2) (D树形dp上司的舞会 C二进制枚举+快速幂? E打表求每个底数不同贡献)

A - Square Counting

直接能填就填n*n就填,不然全0啥的即可

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;const long long inf=1e17;
using node=tuple<int,int,int,int>;
int n,m,k;
int a[N],s[N];
int f[N];
vector<int> g[N];
void solve()
{cin>>n>>m;cout<<m/(n*n)<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

B - Quality vs Quantity

贪心嘛,拿最小的数和最大的数总和比就行,个数只多1即可枚举最大的数拿了几个就好

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;const long long inf=1e17;
using node=tuple<int,int,int,int>;
int n,m,k;
int a[N],s[N];
int f[N];
vector<int> g[N];
void solve()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);vector<int> s(n+10);for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i];for(int i=n;i>=1;i--){int r=s[n]-s[i-1];if((n-i+1)+1>=i) break;int l=s[(n-i+1)+1];if(r>l){cout<<"YES\n";return ;}}cout<<"NO\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

C:

就是1e12里面的阶乘就15个,然后二进制枚举选哪些数,然后总和减去

然后就用二进制填就好了(一个数能拆解成不同的二进制数)

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;const long long inf=1e17;
using node=tuple<int,int,int,int>;
int n,m,k;
vector<int> fact;
void init()
{int res=1;for(int i=1;i<N;i++){res*=i;fact.push_back(res);if(res>=1e12) break;}// res=1;// for(int i=1;i<N;i++){//     res=res*2;//     a.push_back(res);//     if(res>=1e12) break;// }// sort(a.begin(),a.end());// a.erase(unique(a.begin(),a.end()),a.end());
}
void solve()
{cin>>n;auto get=[&](int x,int v){int cnt=0;for(int i=0;i<=50;i++){if(x>>i&1){cnt++;if((1ll<<i)==v) return 100000ll;}}return cnt;};int res=get(n,0);int m=fact.size();for(int i=0;i<1<<m;i++){int s=0,c=0;for(int j=0;j<m;j++){if(i>>j&1){c++;s+=fact[j];}}if(s<=n){res=min(res,c+get(n-s,0));}}cout<<res<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;init();// cout<<fact.size()<<"\n";cin>>t;while(t--) solve();
}

D:

比较裸的树形dp吧

有个结论是如果当前点选了,相邻的点不能选,不然 w[u]=w[x],但是又由于这是一棵树,他至少还有父节点,所以w[u]至少还要加上父亲节点所以不可能相等

特判n=2

dp方程,

f[u][0]:以u为子树,选u为好节点的最大个数,且这个最大个数的代价总和最小

那么他的儿子节点只能不是好节点

f[u][1]:以u为子树,不选u为好节点的最大个数,且这个最大个数的代价总和最小

那么他的儿子节点可以为好节点也可以不为好节点

如果为好节点的话,由于他的相邻的点都不能为好节点,那么他相邻的点全填1即可

当前点代价就是出度

方案数直接dfs递归回去每一步决策儿子选哪一步即可

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;const long long inf=1e17;
using node=tuple<int,int,int,int>;
int n,m,k;
vector<int> g[N];
PII f[N][2];
int sz[N];
PII lst[N][2];
PII Mx(PII a,PII b)
{if(a.first>b.first) return a;if(b.first>a.first) return b;if(a.second<=b.second)return a;else return b;
}
void dfs(int u,int fa)
{f[u][1]={1,(int)(g[u].size())};f[u][0]={0,1};for(auto v:g[u]){if(v==fa) continue;dfs(v,u);f[u][0].first+=Mx(f[v][1],f[v][0]).first;f[u][0].second+=Mx(f[v][1],f[v][0]).second;f[u][1].first+=f[v][0].first;f[u][1].second+=f[v][0].second;}
}
int ans[N];
void dfs1(int u,int fa,int now)
{if(now==1){ans[u]=g[u].size();}else ans[u]=1;for(auto v:g[u]){if(v==fa) continue;if(now==1){dfs1(v,u,0);}else{if(f[v][0]==Mx(f[v][0],f[v][1])){dfs1(v,u,0);}else dfs1(v,u,1);}}
}
void solve()
{cin>>n;if(n==2){cout<<"2 2\n";cout<<"1 1\n";return ;}for(int i=1;i<n;i++){int a,b;cin>>a>>b;g[a].push_back(b);g[b].push_back(a);}dfs(1,0);auto res=Mx(f[1][0],f[1][1]);cout<<res.first<<" "<<res.second<<"\n";if(res==f[1][0]){dfs1(1,0,0);}else dfs1(1,0,1);for(int i=1;i<=n;i++) cout<<ans[i]<<" ";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;//cin>>t;while(t--) solve();
}

E:

这题比较绕以2为例

2^1 2^2 2^3 2的行

2^2 2^3 2^4 4的行

2^3 2^4 2^5 8的行

然后对于2的幂次方的数来说,不同数的个数就是幂次方的不同数

这对于其他底数的幂次方来说也同理

比如如果

1 2 3 4 5

1*2 1*3 1*4 1*5

2*2 2*3 2*4  2*5 

即对于每个不同底数的幂次方来说都适用于这个表,

最多有20行这样的表,

可能我不太会表达这个

Codeforces Round #774 (Div. 2) 简训_codeforces 子树点权下放-CSDN博客

可以看看这个E的题解

求出来这个表后,找不同底数的贡献即可

复杂度是调和级数的1e7也可以过

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
typedef unsigned long long ULL;const long long inf=1e17;
using node=tuple<int,int,int,int>;
int n,m,k;
bool st[N*21];
LL ans[35];
void solve()
{cin>>n>>m;LL cnt=0;for(int i=1;i<20;i++){for(int j=1;j<=m;j++){if(!st[i*j]) cnt++;st[i*j]=1;}ans[i]=cnt;;}LL res=1;memset(st,0,sizeof(st));for(int i=2;i<=n;i++){if(st[i]) continue;int c=0;for(int j=i;j<=n;j*=i) st[j]=true,c++;res+=ans[c];}cout<<res;}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;//cin>>t;while(t--) solve();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全维度构建核心竞争优势,极智嘉(Geek+)连获六项大奖

近日&#xff0c;全球仓储机器人引领者极智嘉(Geek)一举斩获国内外六大重磅奖项&#xff0c;在技术实力、出海成绩到人才战略等多个维度&#xff0c;再度向大众展示了行业标杆的强劲实力。 首先在技术实力上&#xff0c;此前极智嘉与罗马尼亚医药电商Dr.MAX达成合作&#xff0…

测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵

1 引言 前面几篇文章为我们讲述了因果图、判定表、正交试验等几种方法&#xff0c;主要是针对于不同条件输入输出的组合进行测试&#xff0c;但在实际需求中&#xff0c;我们也常会遇到需要对被测对象的状态流转进行验证的情况&#xff0c;此时前面几种方法将不再适用&#xf…

美国访问学者陪读签证怎么申请?

美国访问学者陪读签证是许多前往美国深造的学者及其家属关注的重要问题。如何申请这一签证&#xff0c;一直以来都是备受关注的话题。下面知识人网小编将为您介绍一下美国访问学者陪读签证的申请流程。 首先&#xff0c;申请人需要了解访问学者陪读签证的基本要求。通常情况下&…

马尔科夫预测模型(超详细,案例代码)

概述 马尔科夫预测模型是一种基于马尔科夫过程的预测方法。马尔科夫过程是一类具有马尔科夫性质的随机过程&#xff0c;即未来的状态只依赖于当前状态&#xff0c;而与过去状态无关。这种过程通常用状态空间和状态转移概率矩阵来描述。 在马尔科夫预测模型中&#xff0c;系统被…

Java打印堆栈信息

1、简要介绍 jmap&#xff1a;可以输出所有内存中对象的工具&#xff0c;甚至可以将VM 中的heap&#xff0c;以二进制输出成文本。 2、命令格式 jmap [ option ] pidjmap [ option ] executable corejmap [ option ] [server-id]remote-hostname-or-IP3、参数说明 1)、optio…

Windows句柄与内核对象

内核对象 基本概念 例如&#xff0c;访问令牌&#xff0c;事件对象&#xff0c;文件对象&#xff0c;文件映射对象&#xff0c;I/O完成端口对象&#xff0c;作业对象&#xff0c;邮件槽对象&#xff0c;互斥量对象&#xff0c;管道&#xff0c;进程对象&#xff0c;信号量对象…

Disruptor详解,Java高性能内存队列最优解

文章目录 一、Disruptor介绍1、为什么要有Disruptor2、Disruptor介绍3、Disruptor的高性能设计4、RingBuffer数据结构5、等待策略6、Disruptor在日志框架中的应用7、术语 二、Disruptor实战1、引入依赖2、Disruptor构造器3、入门实例&#xff08;1&#xff09;Hello World&…

浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

SpringBoot的Starter自动化配置,自己编写配置maven依赖且使用及短信发送案例

目录 一、Starter机制 1. 是什么 2. 有什么用 3. 应用场景 二、短信发送案例 1. 创建 2. 配置 3. 编写 4. 形成依赖 6. 其他项目的使用 每篇一获 一、Starter机制 1. 是什么 SpringBoot中的starter是一种非常重要的机制(自动化配置)&#xff0c;能够抛弃以前繁杂…

SD-WAN解决外贸企业网络问题

为了获取全球客户&#xff0c;占领更多的市场&#xff0c;越来越多的外贸企业出现。外贸企业在发展业务的过程中会遇到很多困难&#xff0c;海外网络访问问题就是其中之一。目前该问题主要有三种解决方案&#xff1a;VPN、MPLS专线以及SD-WAN专线。 VPN通过在公网上面建立专用网…

什么是LAMP和LNMP?它们有何区别?

LAMP 和 LNMP 是两种常见的 Web 服务器架构&#xff0c;它们分别代表了 Linux、Apache/Nginx、MySQL、PHP/Python/Perl 或类似技术的首字母。它们是构建 Web 应用程序和托管动态网站的标准架构。以下是它们的定义和主要区别&#xff1a; LAMP 架构&#xff1a; Linux&#xff…

WPF-UI HandyControl 简单介绍

文章目录 前言我的网易云专栏和Gitee仓库HandyControlHandyControl示例相关资源地址 我的运行环境快速开始和Material Design功能对比手风琴右键菜单自动补充滚动条轮播图消息通知步骤条托盘按钮 结尾 前言 最近我在研究如何使用WPF做一个比较完整的项目&#xff0c;然后我就先…

python的time模块中几个关于时间的方法

1、time.time():time.time()的返回值是一个跨平台的、标准化的时间格式&#xff0c;可以直接用于时间戳的计算和比较。返回值是一个带有小数的浮点数&#xff0c;表示1970年1月1日以来的秒数。 import timeprint(time.time()) time.sleep(1) print(time.time())# 1702557555.…

javaweb搭配ajax和json

ajax一般用来前端界面与后端界面交互使用。数据格式一般使用json&#xff0c;优点是便于对象与字符串的转化。 1.不适用json对象封装。 jsp: <script>$.ajax({url: "/LoginServlet",data: {"name":name, "pwd":password},dataType: &qu…

SLAM学习——相机模型(针孔+鱼眼)

针孔相机模型 针孔相机模型是很常用&#xff0c;而且有效的模型&#xff0c;它描述了一束光线通过针孔之后&#xff0c;在针孔背面投影成像的关系&#xff0c;基于针孔的投影过程可以通过针孔和畸变两个模型来描述。 模型中有四个坐标系&#xff0c;分别为world&#xff0c;c…

MySQL和Minio数据备份

文章目录 一、MySQL数据备份1. MySQL客户端2. 数据增量备份3. 数据增量还原4. 数据全量备份5. 数据全量还原 二、Minio数据备份1. Minio客户端2. 数据备份3. 数据还原 三、其他参考1. 设置定时备份2. 数据拷贝到其他服务器3. MySQL其他语句 一、MySQL数据备份 Linux环境&#…

初识GroovyShell

文章目录 前言一、GroovyShell二、maven三、解决方案四、关键代码4.1 数据库配置表(pg)4.2 入参4.3 分页查询 总结 前言 项目背景&#xff1a;查询多个表的数据列表和详情&#xff0c;但不想创建过多的po、dao、resp等项目文件。 一、GroovyShell Apache Groovy是一种强大的…

Windows下使用CMake编译lua

Lua 是一个功能强大、高效、轻量级、可嵌入的脚本语言。它支持程序编程、面向对象程序设计、函数式编程、数据驱动编程和数据描述。 Lua的官方网站上只提供了源码&#xff0c;需要使用Make进行编译&#xff0c;具体的编译方法为 curl -R -O http://www.lua.org/ftp/lua-5.4.6.…

中兴 H108NS 路由器 tools_admin.asp权限绕过漏洞复现

0x01 产品简介 中兴H108NS路由器是一款集WiFi管理、路由分配、动态获取上网连接等功能于一体的路由器产品。 0x02 漏洞概述 中兴H108NS路由器tools_admin.asp接口处存在身份认证绕过漏洞,攻击者可利用该漏洞绕过身份认证允许访问路由器的管理面板修改管理员密码,获取用户的…

虾皮选品网:如何使用虾皮选品数据软件提升您的选品策略

在虾皮&#xff08;Shopee&#xff09;平台上进行选品时&#xff0c;了解市场趋势、竞争程度和产品潜力是非常重要的。为了帮助卖家更好地分析虾皮市场&#xff0c;并为选品和运营策略提供有力支持&#xff0c;有一些数据软件和工具可以派上用场。本文将介绍一些建议使用的虾皮…