牛客周赛 Round 60 A-F题解

news/2025/1/15 13:22:09/文章来源:https://www.cnblogs.com/stability/p/18415859

A

偶数个相同的数异或为0,奇数个相同的数异或为这个数本身

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
#define int long long
typedef tuple<int,int,int> tp;
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
constexpr int N=1000010,mod=998244353,inf=1e18;
constexpr double pi=3.1415926535897932384626,eps=1e-5;
const ll  P=rnd()%mod;
#define all(a) a.begin(),a.end()
#define get_count(x) __builtin_popcount(x)
#define fors(i,a,b) for(int i=a;i<=b;i++)
#define forr(i,a,b) for(int i=b;i>=a;i--)
#define pb(x) push_back(x)
int dx[]={0,1,0,-1,1,1,-1,-1,0};
int dy[]={1,0,-1,1,1,-1,-1,1,0};
int random(int l,int r){return rand()%r+l;
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);int __=1;
//    cin >> __;while(__--){int x;cin >> x;cout << 0 << '\n';}system("color 04");return 0;
}

B

正数P和负数Q交叉来填,如果\(P==Q\)则为\(2*P\),否则为\(min(P,Q)*2+1\)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
#define int long long
typedef tuple<int,int,int> tp;
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
constexpr int N=1000010,mod=998244353,inf=1e18;
constexpr double pi=3.1415926535897932384626,eps=1e-5;
const ll  P=rnd()%mod;
#define all(a) a.begin(),a.end()
#define get_count(x) __builtin_popcount(x)
#define fors(i,a,b) for(int i=a;i<=b;i++)
#define forr(i,a,b) for(int i=b;i>=a;i--)
#define pb(x) push_back(x)
int dx[]={0,1,0,-1,1,1,-1,-1,0};
int dy[]={1,0,-1,1,1,-1,-1,1,0};
int random(int l,int r){return rand()%r+l;
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);int __=1;
//    cin >> __;while(__--){int n,m;cin >> n >> m;if(n==m) cout << 2*n << '\n';else  cout << 2*min(n,m)+1 << '\n';}system("color 04");return 0;
}

C

把相同行的列数存在一起,把相同列的行数存在一起,最后查询

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
#define int long long
typedef tuple<int,int,int> tp;
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
constexpr int N=1000010,mod=998244353,inf=1e18;
constexpr double pi=3.1415926535897932384626,eps=1e-5;
const ll  P=rnd()%mod;
#define all(a) a.begin(),a.end()
#define get_count(x) __builtin_popcount(x)
#define fors(i,a,b) for(int i=a;i<=b;i++)
#define forr(i,a,b) for(int i=b;i>=a;i--)
#define pb(x) push_back(x)
int dx[]={0,1,0,-1,1,1,-1,-1,0};
int dy[]={1,0,-1,1,1,-1,-1,1,0};
int random(int l,int r){return rand()%r+l;
}
vector<int> e[N],b[N];
signed main(){cin.tie(nullptr)->sync_with_stdio(false);int __=1;
//    cin >> __;while(__--){int n,m;cin >> n >> m;for(int i=1;i<=m;i++){int x,y;cin >> x >> y;e[x].push_back(y);b[y].push_back(x);}int ans=0;for(int i=1;i<=n;i++){sort(all(e[i])),sort(all(b[i]));if(e[i].size()){ans=max(ans,e[i].back()-e[i][0]);}if(b[i].size()){ans=max(ans,b[i].back()-b[i][0]);}}cout << ans << '\n';}system("color 04");return 0;
}

D

将数组从小到大排序,sum记为前缀和,如果\(sum>=a_i-1\)说明可以凑出1-ai的所有数,否则不可以,最后判断sum是否大于等于n即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
#define int long long
typedef tuple<int,int,int> tp;
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
constexpr int N=1000010,mod=998244353,inf=1e18;
constexpr double pi=3.1415926535897932384626,eps=1e-5;
const ll  P=rnd()%mod;
#define all(a) a.begin(),a.end()
#define get_count(x) __builtin_popcount(x)
#define fors(i,a,b) for(int i=a;i<=b;i++)
#define forr(i,a,b) for(int i=b;i>=a;i--)
#define pb(x) push_back(x)
int dx[]={0,1,0,-1,1,1,-1,-1,0};
int dy[]={1,0,-1,1,1,-1,-1,1,0};
int random(int l,int r){return rand()%r+l;
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);int __=1;cin >> __;while(__--){int n;cin >> n;vector<int> a(n+1);for(int i=1;i<=n;i++) cin >> a[i];sort(all(a));int sum=0;for(int i=1;i<=n;i++){if(sum>=a[i]-1){sum+=a[i];}}if(sum>=n) cout << "Cool!" << '\n';else cout << sum+1 << '\n';}system("color 04");return 0;
}

E

盒子模型 n-2小球,放m-1个盒子里有多少种方案

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
#define int long long
typedef tuple<int,int,int> tp;
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
constexpr int N=1000010,mod=1e9+7,inf=1e18;
constexpr double pi=3.1415926535897932384626,eps=1e-5;
const ll  P=rnd()%mod;
#define all(a) a.begin(),a.end()
#define get_count(x) __builtin_popcount(x)
#define fors(i,a,b) for(int i=a;i<=b;i++)
#define forr(i,a,b) for(int i=b;i>=a;i--)
#define pb(x) push_back(x)
int dx[]={0,1,0,-1,1,1,-1,-1,0};
int dy[]={1,0,-1,1,1,-1,-1,1,0};
int random(int l,int r){return rand()%r+l;
}
class Com{
public:vector<int> f,uf;void init(int n){f.resize(n+1),uf.resize(n+1);}int qpow(int a,int b,int mod){int res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;}void get_f(int n,int mod){f[0]=uf[0]=1;for(int i=1;i<=n;i++){f[i]=f[i-1]*i%mod;uf[i]=uf[i-1]*qpow(i,mod-2,mod)%mod;}}int get_C(int n,int m,int mod){if(n<m) return 0;return f[n]*uf[n-m]%mod*uf[m]%mod;}
};
signed main(){cin.tie(nullptr)->sync_with_stdio(false);int __=1;cin >> __;Com C;C.init(N);C.get_f(N,mod);while(__--){int n,m;cin >> n >> m;cout << C.get_C(n-2,m-1,mod) << '\n';}system("color 04");return 0;
}

F

期望DP,推式子,首先,令f(i):从第i个字开始讲完这句话的期望。\(f_1=a_1/(a_1+b_1)*f_2+b_1/(a_1+b_1)*f_1+1\),移项求得\(f_1=1*f_2+(a_1+b_1)/a_1\),令\(P_1=1,Q_1=(a_1+b_1)/(a_1)\),\(f_2=a_2^2/(a_2+b_2)^2*f_3+2*a_2*b_2/(a_2+b_2)^2*f_2+b_2^2/(a_2+b_2)^2*f1\),同理整理得\(f2=a_2^2/(a_2^2+b_2^2-b_2^2*P_1)*f_3+Q_1*b_2^2+(a_2+b_2)^2/(a_2^2+b_2^2-b_2^2*P_1)\),化成一般式,\(f_i=P_i*f_(i+1)+Q_i\)\(P_i=a^2/(a^2+b^2-b^2*P_(i-1))\),\(Q_i=Q_(i-1)*b^2+(a+b)^2/(a^2+b^2-b^2*P_(i-1))\)。从而可以预处理掉P和Q,那么\(f_i=p_i*f_(i+1)+q_i\),初始化\(f_n=1\),则倒序枚举最后输出\(f_1\)即为答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
#define int long long
typedef tuple<int,int,int> tp;
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
constexpr int N=1000010,mod=1e9+7,inf=1e18;
constexpr double pi=3.1415926535897932384626,eps=1e-5;
const ll  P=rnd()%mod;
#define all(a) a.begin(),a.end()
#define get_count(x) __builtin_popcount(x)
#define fors(i,a,b) for(int i=a;i<=b;i++)
#define forr(i,a,b) for(int i=b;i>=a;i--)
#define pb(x) push_back(x)
int dx[]={0,1,0,-1,1,1,-1,-1,0};
int dy[]={1,0,-1,1,1,-1,-1,1,0};
int random(int l,int r){return rand()%r+l;
}
int qpow(int a,int b,int mod){int res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);int __=1;
//     cin >> __;while(__--){int n;cin >> n;vector<int> a(n),b(n),f(n+1),p(n),q(n);for(int i=1;i<n;i++) cin >> a[i];for(int i=1;i<n;i++) cin >> b[i];p[1]=1,q[1]=(a[1]+b[1])%mod*qpow(a[1],mod-2,mod)%mod;for(int i=2;i<n;i++){int x=a[i],y=b[i];int A=x*x%mod,B=y*y%mod,C=(x+y)%mod*(x+y)%mod;int t=((A+B)%mod-B*p[i-1]%mod+mod)%mod;p[i]=A*qpow(t,mod-2,mod)%mod;q[i]=(q[i-1]*B%mod+C)%mod*qpow(t,mod-2,mod)%mod;}f[n]=1;for(int i=n-1;i>=1;i--){f[i]=(f[i+1]*p[i]%mod+q[i])%mod;}cout << f[1] << '\n';}system("color 04");return 0;
}

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

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

相关文章

usb协议

1 USB 信号编码 USB 传输的编码就是 NRZI 格式,在 USB 中,电平翻转代表逻辑 0,电平不变代表逻辑1:翻转的信号本身可以作为一种通知机制,可以看到,即使把 NRZI 的波形完全翻转,所代表的数据序列还是一样的,对于像 USB 这种通过差分线来传输的信号方便。

引入语义标签过滤:利用标签相似度增强检索

引入语义标签过滤:利用标签相似度 增强检索 传统的标签搜索缺乏灵活性。如果我们要过滤恰好包含给定标签的样本,可能会出现这样的情况,特别是对于只包含几千个样本的数据库, 可能没有任何(或只有少数)与我们的查询匹配的样本。两种搜索的不同之处在于搜索结果的稀缺性 传统的…

娄涵格第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 介绍自己。自我评估,期待在课程收获什么,担当什么样的角色姓名-学号 娄涵格-2022329301112自我介绍 1、基本信息 大家好,我的名字是娄涵格,来自浙江台州,目前是浙江理工大学22电气工程及其自…

踩坑日志3:每一个epoch都会重新随机采样,固定batch容易使模型陷入局部解

前几天师弟在机器学习领域看到了一个对样本选择的方法,目的是从特征的角度均匀选择样本。如下图所示,首先初始化将样本的特征进行加和并归一化,迭代取出样本(取值最大的那个样本,再令样本的值乘以1-样本的值更新所有样本)。这般便可以从理论上均匀的取到不同分布的样本,…

动态规划——数学模型精解

动态规划是运筹学的一个分支,主要用于求解多阶段决策过程的优化问题。1950年代初,R.E. Bellman提出了最优性原理,将复杂的多阶段问题分解为一系列单阶段问题逐步求解,开创了动态规划这一方法。1957年,他出版了《Dynamic Programming》,成为该领域的经典著作。动态规划自问…

C#实现系统登录

1, 新建窗口frm_Loginusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace WindowsFormsA…

深度学习(FCN)

FCN是全卷积网络,用于做图像语义分割。通常将一般卷积网络最后的全连接层换成上采样或者反卷积网络,对图像的每个像素做分类,从而完成图像分割任务。 网络结构如下:这里并没有完全按照原始网络结构实现,而是尝试upsample和convTranspose2d结合的方式,看看有什么效果。 下…

多线程五-线程通信之wait与notify

wait与notify用于syncronized的线程间通信的一种,wait用来阻塞线程并释放锁,notify用来唤醒线程。他们与condition作用基本一致,但是由于syncronized为jdk实现,阅读源码有难度,所以通过了解其原理,用来帮助我们后续理解condition的源码。 可以通过下面一张图来理解:下面…

帝国cms忘记了后台密码怎么办

如果你忘记了帝国CMS(EmpireCMS)的后台管理员密码,可以通过以下步骤来重置密码: 方法 1: 通过数据库重置密码登录数据库:使用数据库管理工具(如phpMyAdmin)连接到你的数据库。 登录数据库管理界面。找到用户表:通常表名为 phome_enewsuser(具体表名可能有所不同)。 打…

如何恢复对帝国CMS的访问,忘记账号密码的解决方案

如果你忘记了帝国CMS的后台管理员账号和密码,可以通过以下步骤来恢复对系统的访问: 方法 1: 通过数据库重置密码登录数据库:使用数据库管理工具(如phpMyAdmin)连接到你的数据库。 登录数据库管理界面。找到用户表:通常表名为 phome_enewsuser(具体表名可能有所不同)。 …

编程日记 后端tags过滤器

编程日记 后端tags过滤器这样查出来了所有的信息,不对 检查是这个地方有问题改掉 @Overridepublic List<User> searchUsersByTags(List<String> tagNameList) {//1.先查询所有用户QueryWrapper<User> queryWrapper = new QueryWrapper<>();List<Us…

PbootCms忘记后台管理员密码这样找回

如果你忘记了PbootCMS后台管理员的密码,可以通过以下步骤来重置密码: 方法 1: 使用官方提供的密码重置工具下载密码重置工具:下载官方提供的密码重置工具 resetpw.php。 将 resetpw.php 文件上传到网站根目录。访问重置工具:在浏览器中访问 http://[您的域名]/resetpw.php。…