牛客练习赛 65 (待补E-网络流)

A.最值序列

排序后,前一半加后一半乘即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=500010;
const ll mod=998244353;
ll a[N];
int n;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);ll res=0;for(int i=1;i<=n;i++){if(i<=n/2) res=(res+a[i])%mod;elseres=res*a[i]%mod;}cout<<res<<'\n';}return 0;
}

B.多重序列

注意ai,j=kbj,(b≥0)a_{i,j}=k^{b_j},(b\ge 0)ai,j=kbj(b0)
那么容易发现∏j=1mai,j=k∑j=1mbj\prod_{j=1}^m{a_{i,j}}=k^{\sum_{j=1}^m b_j}j=1mai,j=kj=1mbj
由此我们只需要统计每组的∑j=1mbj\sum_{j=1}^m b_jj=1mbj的大小,取个最大的然后快速幂求一下结果即可。
注意精度问题乱搞精度瞎胡近位即可
当然也可以手写求logloglog

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2010;
//const ll mod=998244353;
int n,m,k;
ll mod;
ll qmi(ll a,ll b,ll p)
{ll res=1;a%=p;while(b) {if(b&1) res=res*a%p;b>>=1;a=a*a%p;}return res;
}
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>m>>k>>mod;if(k==1) cout<<1%mod<<'\n';else{ll cnt=0;for(int i=1;i<=n;i++){ll now=0;for(int i=1;i<=m;i++){ll a;cin>>a;now+=ll(log(double(a))/log(double(k))+0.5);//dt的精度问题}cnt=max(cnt,now);}cout<<qmi(k,cnt,mod)<<'\n';}}return 0;
}

C.二维动点

不难发现最终答案一定是{−1,0,1,2,3}\{-1,0,1,2,3\}{1,0,1,2,3}这几个值中的一个。
对于答案是{−1,0,1}\{-1,0,1\}{1,0,1}很容易判断,这里只简要说明答案是333的情况。
首先n=2n=2n=2,并且四个点(原点、给的两个点、所求点)构成一个平行四边形答案就是333否则答案就是222
如果输入或者所求点是(0,0)(0,0)(0,0)直接跳过即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<map>
#include<cmath>
#include<iostream>
#include<algorithm>
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=100010;
const ll mod=998244353;
int n,q;
map<pii,int> mp; 
pii a[N];
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
bool check(pii a,pii b,pii c,pii d)// a-b是否//c-d
{return 1ll*(a.x-b.x)*(c.y-d.y)==1ll*(c.x-d.x)*(a.y-b.y);
}
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>q;int cnt=0;for(int i=1;i<=n;i++){cin>>a[i].x>>a[i].y;if(a[i].x==0&&a[i].y==0){n--,i--;continue;}int d=gcd(a[i].x,a[i].y);mp[{a[i].x/d,a[i].y/d}]++;}while(q--){int x,y;cin>>x>>y;if(x==0&&y==0) {cout<<0<<'\n';continue;}int d=gcd(x,y);if(mp.count({x/d,y/d})) cout<<1<<'\n';else if(mp.size()<=1) cout<<-1<<'\n';else if(n==2){pii p1={0,0},p2=a[1],p3=a[2],p4={x,y};bool ok=0;if(check(p1,p2,p3,p4)){if(check(p2,p3,p1,p4)||check(p1,p3,p2,p4)) ok=1;}if(check(p1,p3,p2,p4)){if(check(p1,p2,p3,p4)||check(p2,p3,p1,p4)) ok=1;}if(ok) cout<<3<<'\n';else cout<<2<<'\n';}else cout<<2<<'\n';}}return 0;
}

D.最小公倍数

参考大佬题解
总结下这个题的几个性质
①拆出来的数不一样一定相对较优:相同的数说明这个数没用
②拆出来的数一定是质数或者一个质数的次幂:我们知道一个数可以分解质因数假设拆出来的数不满足前者条件,我们不妨假设一个数b=p1a1×p2a2b=p_1^{a_1}×p_2^{a_2}b=p1a1×p2a2,分析可知该数对答案的贡献和这两个数的效果相同p1a1,p2a2p_1^{a_1},p_2^{a_2}p1a1,p2a2,并且先然由于p1a1×p2a2<p1a1+p2a2p_1^{a_1}×p_2^{a_2}<p_1^{a_1}+p_2^{a_2}p1a1×p2a2<p1a1+p2a2,后者选择方案更优。
③不同质数的地位相同,我们优先选择小的质数。
④考虑一个质数我们选择{pa1,pa2,…,pai}\{p^{a_1},p^{a_2},\dots,p^{a_i}\}{pa1,pa2,,pai},如果设a1<a2<⋯<aia_1<a_2<\dots<a_ia1<a2<<ai一定有a1=1,a2=2,ai=ia_1=1,a_2=2,a_i=ia1=1,a2=2,ai=i,即连续选择,如果aj=k>ja_j=k>jaj=k>j那么让aj=ja_j=jaj=j结果一定更优。

根据上面几个性质,先线性筛素数,然后跑分组背包即可。
每个质数是一个物品,如果选择pi1,pi2,…,pikp_i^1,p_i^2,\dots,p_i^kpi1,pi2,,pik,那么体积vvvpi1+pi2+⋯+pikp_i^1 +p_i^2 +\dots+p_i^kpi1+pi2++pik,对答案的贡献是f[j−v]×(k+1)f[j-v]×(k+1)f[jv]×(k+1)
由于本题数据需要取模,而取模后大小会发生改变,这题最秒的是用logloglog代替乘积。那么价值www变为log(k+1)log(k+1)log(k+1)
f[j]f[j]f[j]是一个pairpairpair,第一个值记录logloglog,第二个值记录原答案(取模),由于pairpairpair比较按照一个数,直接比较即可
注意:以下代码dp体积从大到小枚举优化了空间。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<cmath>
#include<iostream>
#include<algorithm>
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair<double,ll> pdl;
const int N=100010;
const ll mod=1e9+7;;
int prime[N],cnt;
bool st[N];
pdl f[N];
int n;
void init(int n)
{for(int i=2;i<=n;i++){if(!st[i]) prime[++cnt]=i;for(int j=1;prime[j]<=n/i;j++){st[prime[j]*i]=1;if(i%prime[j]==0) break;}}
}
int main()
{IO;int T=1;//cin>>T;init(100000);while(T--){cin>>n;f[0]={0,1};ll now=0;for(int i=1;i<=cnt;i++){for(int j=n;j;j--){ll p=prime[i];ll s=prime[i];for(int k=1;s<=j;k++,p*=prime[i],s+=p)f[j]=max(f[j],{f[j-s].x+log2(k+1),f[j-s].y*(k+1)%mod});}now+=prime[i];if(now>n) break;}pdl res={0,0};for(int i=0;i<=n;i++) res=max(res,f[i]);cout<<res.y<<'\n';}return 0;
}

此题让我想到反素数这题。我是数论渣渣啊

E.游走配对

未学习待补~
要加油哦~

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

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

相关文章

持续集成配置之Nuget

Intro本文是基于微软的 VSTS(Visual Studio Team Service) 做实现公众类库的自动打包及发布。之前自己的项目有通过 Github 上的 Travis 和 Appveyor&#xff0c;这次主要是用 VSTS 来做的&#xff0c;对比 appveyor 和 vsts 上的持续集成&#xff0c;vsts 上微软把常用的工具和…

【每日一题】8月7日题目精讲—双栈排序

来源&#xff1a;牛客网 文章目录题目描述题意&#xff1a;题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 Tom最近在研究一个有趣的排序问…

【期望DP】概率充电器(luogu 4284)

正题 luogu 4284 题目大意 给你棵树&#xff0c;第i个点自己通电的概率是wiw_iwi​&#xff0c;第j条边连接的两个点之间通电的概率是pjp_jpj​&#xff0c;问你通电的点个数的期望值 题目大意 设fif_ifi​为第i个点通电的概率&#xff0c;那么&#xff1a; fisolvej∈link{…

P3760-[TJOI2017]异或和【树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P3760 题目大意 给出nnn个数字的一个序列aaa&#xff0c;求它所有区间和的异或和 n≤105,∑ai≤106n\leq 10^5,\sum a_i\leq 10^6n≤105,∑ai​≤106 解题思路 开始写了个前缀和FFTFFTFFT发现要卡常然后就换了个方法。 每一…

手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)

前言什么是APM?全称:Application Performance Management可以参考这里:现代APM体系&#xff0c;基本都是参考Google的Dapper&#xff08;大规模分布式系统的跟踪系统&#xff09;的体系来做的。通过跟踪请求的处理过程&#xff0c;来对应用系统在前后端处理、服务端调用的性能…

牛客练习赛 64——错排

A.怪盗-1412 111…1⏟⌊n2⌋444…4⏟m111…1⏟⌈n2⌉222…2⏟k\begin{matrix} \underbrace{ 111\dots\ 1} \\ \lfloor \frac{n}{2} \rfloor \end {matrix}\begin{matrix} \underbrace{ 444\dots\ 4} \\ m \end{matrix}\begin{matrix} \underbrace{ 111\dots\ 1} \\ \lceil \fra…

牛客网状压dp

状压dp 视频链接 &#xff08;如果想购买网课&#xff0c;可以用我的邀请码&#xff09; 用我的链接购买&#xff0c;我再反你10&#xff0c;一共花54多值 购买链接 不放心可以先加我好友2830872914 总试题链接 文章目录状压dp预备知识——位运算例题&#xff1a;引入&#x…

【线段树】海报(loj 3264)

正题 loj 3264 题目大意 有一个环&#xff0c;环上n个点&#xff0c;权值为a&#xff0c;有m次修改&#xff0c;每次修改一个aia_iai​&#xff0c;然后让你选取一些数&#xff0c;使环上不存在连续四个以上的数被选取&#xff0c;让你求所选数的最大权值和 解题思路 不难想…

P4338-[ZJOI2018]历史【LCT】

正题 题目链接:https://www.luogu.com.cn/problem/P4338 题目大意 给出nnn个点的一棵树&#xff0c;和每个点进行accessaccessaccess的次数aia_iai​&#xff0c;要求安排一个顺序使得虚实边转换最多。 mmm次修改一个点让aia_iai​加上www后求答案 n,m∈[1,4∗105],ai,w∈[1,…

小G有一个大树

来源&#xff1a;牛客网 &#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 小G想要把自己家院子里的橘子树搬到家门口&#xff08;QAQ。。就当小G是大力水手吧&…

.Net Core功能开关实战

为了快速发布开发完成的功能&#xff0c;企业通常会以比较快的迭代周期持续发布。但是由于某些 原因或场景&#xff0c;需要在发布的时候将某些功能隐藏起来或者小规模的开放&#xff08;例如只有某些特定用户可以使用、或者特定日期开放&#xff09;&#xff0c;通过使用功能开…

AtCoder Beginner Contest 179 总结

A - Plural Form 模拟签到题1 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<string> #include<iostream> #include<algorithm> using namespace std; const int N100010; int main() {IO;int T1;//cin…

纪中A组模拟赛总结(2021.7.19)

成绩 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3101010lyflyflyf175175175000757575100100100 前言&#xff1a;进前10啦&#xff01;&#xff01; 总结 T1看着推了一下&#xff0c;发现可以改变答案的解决顺序&#xff0c;然后在O(n)内求解&#xff0c;打完…

AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】

正题 题目链接:https://www.luogu.com.cn/problem/AT4505 题目大意 给出nnn个点和n−1n-1n−1个点集UiU_iUi​&#xff0c;每个点集中选择两个点连边使得该图是一棵树。求方案。 n∈[1,105],∑i1n−1∣Ui∣∈[1,2∗105]n\in[1,10^5],\sum_{i1}^{n-1} |U_i|\in[1,2*10^5]n∈[1…

学习究竟是为了什么?

今天无意中看到一句话&#xff0c;人如果停止了学习&#xff0c;就开始走向失败。这句话其实应该送给每一个面临30岁焦虑期的开发者&#xff0c;同时也应该成为每一个开发者内心的真实写照。 想问一下大家一个问题&#xff0c;多久没有学习新的知识呢&#xff1f;尤其…

Codeforces Round #671 (Div. 2)

当天晚上&#xff0c;本来想参加一下比赛&#xff0c;结果感觉静不下心来做题&#xff0c;而且最难受的是读个题都不明白&#xff0c;一直在理解题意。 A - Digit Game 分析不难发现&#xff1a; 如果nnn是奇数&#xff0c;那么最后留下的数字一定是奇数位上的数字&#xff0…

【网络流】人员雇佣(luogu 1791)

正题 luogu 1791 题目大意 有n个人&#xff0c;选择第i个人的代价是aia_iai​&#xff0c;如果i,j同时被选那么有贡献wi,jw_{i,j}wi,j​&#xff0c;如果i选了j没选那么有贡献−wi,j-w_{i,j}−wi,j​&#xff0c;问你最大贡献&#xff08;减去代价&#xff09; 解题思路 最大…

AT4144-[ARC098D]Donation【Kruskal重构树,dp】

正题 题目链接:https://www.luogu.com.cn/problem/AT4144 题目大意 nnn个点mmm条边的一张无向联通图&#xff0c;每个点有两个值ai,bia_i,b_iai​,bi​。表示经过该点时需要拥有aia_iai​元&#xff0c;该点需要捐献bib_ibi​元。 任意起点&#xff0c;询问开始时至少多少钱才…

Strategic game

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 10000K&#xff0c;其他语言20000K 64bit IO Format: %lld题目描述 Bob enjoys playing computer games, especially strategic games, but sometimes he c…

ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)

上个月15日&#xff0c;上海MVP做了一次线下的技术分享活动&#xff0c;我分享的主题是《快速构建容器化的ASP.NET Core应用程序》&#xff0c;有关这次活动的简报&#xff0c;可以参考这里。另外&#xff0c;我的主题分享的PPT也可以点击这里下载。由于线下活动时间紧迫&#…