HZOI20190906模拟39 工业,卡常,玄学
题面:https://www.cnblogs.com/Juve/articles/11484209.html
工业:
推一个式子,AC
没有用组合数。。。。推了2个多小时
我sbsbsbsbsbsbsbsbsbsbsbsbsbsbsb
#include<iostream>
#include<cstdio>
#include<cstring>
#define int long long
using namespace std;
const int MAXN=3e5+5;
const int mod=998244353;
int n,m,a,b,inn[MAXN],inm[MAXN],fm[MAXN],fn[MAXN],ans=0;
int q_pow(int a,int b,int p){
int res=1;
while(b){
if(b&1) res=res%p*a%p;
a=a%p*a%p;
b>>=1;
}
return res%p;
}
signed main(){
//freopen("a_sample2.in","r",stdin);
//freopen("vio.out","w",stdout);
scanf("%lld%lld%lld%lld",&n,&m,&a,&b);
a%=mod,b%=mod;
for(int i=1;i<=n;++i) scanf("%lld",&inn[i]),inn[i]%=mod;
for(int i=1;i<=m;++i) scanf("%lld",&inm[i]),inm[i]%=mod;
fm[1]=1;
for(int i=2;i<=m;++i){
fm[i]=fm[i-1]*(n-2+i)%mod*q_pow(i-1,mod-2,mod)%mod;
//cout<<fm[i]<<endl;
}
fn[1]=1;
for(int i=2;i<=n;++i){
fn[i]=fn[i-1]*(m-2+i)%mod*q_pow(i-1,mod-2,mod)%mod;
//cout<<fn[i]<<endl;
}
for(int i=1;i<=n;++i){
//cout<<i<<' '<<0<<' '<<fn[n-i+1]<<' '<<m<<' '<<n-i<<endl;
(ans+=inn[i]%mod*fn[n-i+1]%mod*q_pow(a,m,mod)%mod*q_pow(b,n-i,mod)%mod)%=mod;
}
for(int i=1;i<=m;++i){
//cout<<0<<' '<<i<<' '<<fm[m-i+1]<<' '<<m-i<<' '<<n<<endl;
(ans+=inm[i]%mod*fm[m-i+1]%mod*q_pow(a,m-i,mod)%mod*q_pow(b,n,mod)%mod)%=mod;
}
printf("%lld\n",ans%mod);
return 0;
}
卡常:
基环树dp
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define re register
using namespace std;
const int MAXN=1e6+5;
int n,a,b,ans=0x7fffffff;
int to[MAXN<<1],nxt[MAXN<<1],pre[MAXN],val[MAXN],cnt=1;
inline void add(re int u,re int v){
cnt++,to[cnt]=v,nxt[cnt]=pre[u],pre[u]=cnt;
}
bool vis[MAXN];
int st,ed,edge,f[MAXN],g[MAXN];
inline void dfs(re int x,re int fa,re int id){
if(vis[x]){
edge=id;
st=fa,ed=x;
return ;
}
vis[x]=1;
for(re int i=pre[x];i;i=nxt[i]){
re int y=to[i];
if(y==fa) continue;
dfs(y,x,i);
}
}
inline void DFS(re int x,re int fa){
g[x]=0,f[x]=val[x];
for(re int i=pre[x];i;i=nxt[i]){
re int y=to[i];
if(y==fa) continue;
if(edge==i||edge==(i^1)) continue;
DFS(y,x);
f[x]+=min(g[y],f[y]);
g[x]+=f[y];
}
}
signed main(){
scanf("%d%d%d",&n,&a,&b);
for(re int i=1;i<=n;++i){
re int x,y;
scanf("%d%d",&x,&y);
add(x,y),add(y,x);
val[x]+=a,val[y]+=b;
}
dfs(1,0,0);
DFS(st,0);
ans=min(f[st],ans);
DFS(ed,0);
ans=min(f[ed],ans);
printf("%d\n",ans);
return 0;
}
玄学:
那个-1的幂是由d(i*j)的和的奇偶性决定的。
d(x)为偶数时并没有任何影响,我们只考虑d(x)为奇数的时候,
不难想到,x这个时候是完全平方数。
我们把i拆成$p*q^2$(p没有平方因子),那j必须有$p*r^2$的形式,
所以对于每个i,都有$\sqrt{\frac{m}{p}}$个j产生贡献。
至于p的求法,线性筛即可。
我们知道,质数的p就是它本身
然后筛就好了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN=1e7+2;
long long n,m,ans=0;
int prime[MAXN],vis[MAXN],p[MAXN],tot;
void get_p(long long n){
vis[1]=p[1]=1;
for(int i=2;i<=n;i++){
if(!vis[i]) prime[++tot]=i,p[i]=i;
for(int j=1;j<=tot&&i*prime[j]<=n;j++){
vis[i*prime[j]]=1;
if(!(p[i]%prime[j])){
p[i*prime[j]]=p[i]/prime[j];
break;
}
else p[i*prime[j]]=p[i]*p[prime[j]];
}
}
}
signed main(){
scanf("%lld%lld",&n,&m);
get_p(n);
for(int i=1;i<=n;++i){
int sum=sqrt(m/p[i]);
if(sum%2) --ans;
else ++ans;
}
printf("%lld\n",ans);
return 0;
}
HZOI20190906模拟39 工业,卡常,玄学的更多相关文章
- NOIP 模拟 $13\; \text{卡常题}$
题解 一道环套树的最小点覆盖题目,所谓环套树就是有在 \(n\) 个点 \(n\) 条边的无向联通图中存在一个环 我们可以发现其去掉一条环上的边后就是一棵树 那么对于此题,我们把所有 \(x\) 方点 ...
- NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」
工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...
- [luogu1972][bzoj1878][SDOI2009]HH的项链【莫队+玄学卡常】
题目大意 静态区间查询不同数的个数. 分析 好了,成功被这道题目拉低了AC率... 打了莫队T飞掉了,真的是飞掉了QwQ. 蒟蒻想不出主席树的做法,就换成了莫队... 很多人都不知道莫队是什么... ...
- 洛谷 P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I(分块+卡常)
洛谷题面传送门 zszz,lxl 出的 DS 都是卡常题( 首先由于此题强制在线,因此考虑分块,我们那么待查询区间 \([l,r]\) 可以很自然地被分为三个部分: 左散块 中间的整块 右散块 那么这 ...
- [CSP-S模拟测试]:卡常题/b(基环树+DP)
题目描述 $ρ$有一个二分连通无向图,$X$方点.$Y$方点均为$n$个(编号为$1\sim n$).这个二分图比较特殊,每一个$Y$方点的度为$2$,一条黑色边,一条白色边.所有黑色边权值均为$a$ ...
- 手机NFC模拟门禁卡
楼主所在的某电子科技类大学,从宿舍楼到实验楼到图书馆办公楼,全部都有门禁,前两天突然在某安软件市场看到一个可以模拟门禁卡的软件,然而可能是我的手机系统太6了,竟然模拟不了,无奈自己动手,从根本上解决问 ...
- BZOJ3286 Fibonacci矩阵 矩阵 快速幂 卡常
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3286 题意概括 n,m,a,b,c,d,e,f<=10^1000000 题解 神奇的卡常题目 ...
- [luogu T71973]卡常者π酱
[luogu T71973]卡常者π酱 题意 给定一个长度为 \(n\) 的字符串, 要求将字符串分割为若干段, 每一段要么是一个字符要么是前面几段的并的子串. 如果某一段是一个单独字符, 则产生 \ ...
- 【xsy1120】 支援(assist) dp+卡常
妙啊算错时间复杂度了 题目大意:给你一棵$n$个节点的二叉树,每个节点要么是叶子节点,要么拥有恰好两个儿子. 令$m$为叶子节点个数,你需要在这棵二叉树中选择$i$个叶子节点染色,叶节点染色需要一定的 ...
随机推荐
- 阿里云Aliplayer高级功能介绍(一):视频截图
基本介绍 H5 Video是不提供截图的API的, 视频截图需要借助Canvas,通过Canvas提供的drawImage方法,把Video的当前画面渲染到画布上, 最终通过toDataURL方法可以 ...
- duilib教程之duilib入门简明教程8.完整的自绘标题栏
看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~ 看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~ duilib实现以 ...
- memcpy函数实现中的优化
今天浏览Google面试题的时候,有看到一个memcpy的实现,以及如何去优化memcpy. 我对memcpy的实现的记忆就是,拷贝的时候需要从后往前拷贝,为何防止内存重叠. 但是如果去优化它我没有想 ...
- 使用JDK自带功能,实现一个简单的Web Service接口发布
万事开头难,本篇文章的目的就是使用JDK自带的功能,实现一个最简单的Web Service接口的发布. 下图是项目的组成,主要有三个部分,一个接口(WS),一个接口的实现类(WSImp),还有一个接口 ...
- docker企业级镜像仓库harbor
第一步:安装docker和docker-compose 第二步:下载harbor-offine-installer-v1.5.1.tgz 第三步:上传到/opt,并解压 第四步:修改harbor.cf ...
- 使用Excel表格导入数据到Oracle表
在工作中我们会遇到将通过数据手动录入到系统中的需求,如果数据量比较小,那么手动输入是可行的,倘若数据量很大,那么这些数据手动录入将会是一个很大的工作量,为了简化这个手动录入的操作流程,我们可以使用Ex ...
- [课后作业] 第002讲:用Python设计第一个游戏 | 课后测试题
试题: 0. 什么是BIF? 1. 用课堂上小甲鱼教的方法数一数 Python3 提供了多少个 BIF? 2. 在 Python 看来:'FishC' 和 'fishc' 一样吗? 3. 在小甲鱼看来 ...
- <Django> 高级(其他知识点)
1. 管理静态文件 什么是静态文件? 项目中的CSS.图片.js都是静态文件 配置静态文件(settings.py) # Static files (CSS, JavaScript, Images) ...
- while语句结构(for循环)
while语句结构(for循环) python for 循环可以遍历任何序列的项目,如一个列表或一个字符串 for循环的一般形式 for 条件判断 in 一个序列: 执行语句 else: 执行语句 可 ...
- webpack 简单笔记(三)vue-cli 使用 webpack-bundle-analyzer 分析
当我们使用CommonsChunkPlugin插件时可以使用webpack-bundle-analyzer插件来分析分块是否达到我们的目地 安装 npm install --save-dev webp ...