[arc133e]Cyclic Medians
E - Cyclic Medians
看到中位数,就是经典套路:将\(\geq\)中位数的都赋值为\(1\),\(<\)的赋值为\(0\)
那么对于数\(A\),就等于\(\sum_{i=1}^{\infty}[A\geq i]\)
所以我们考虑枚举中位数,然后若其\(\leq A\),那么就对答案贡献\(1\)
对于当前枚举的中位数\(mid\),若当前正在操作的数对为\((0,0)\)或\((1,1)\),那么这次更新后答案就与\(a\)无关;若当前操作的是\((0,1)\)或\((1,0)\),那么这次更新后答案就还是与\(a\)有关
无关:更新后答案是\(\geq mid\)还是\(<mid\)与\(A\)和\(mid\)的大小无关
有关:更新后答案是\(\geq mid\)还是\(<mid\)由\(A\)和\(mid\)的大小决定
然后还有一点,就是当\(mid=p\)时最后答案取\(0\)的方案数与\(mid=v-p\)时最后答案取\(1\)的方案数相同,所以算这个答案时需要\(/2\)
考虑求出与\(a\)有关的方案数,然后用总方案数减去与\(a\)有关的方案数就是与\(a\)无关的方案数
因为每次取\(x_{i\%n}\)和\(y_{i\%m}\)作为一对,所以设\(a=i\%n\),\(b=i\%m\),\(g=\gcd(n,m)\),\(n=g\times p\),\(m=g\times q\),那么有:
a+k_1n=b+k_2m\\
a+k_1\times g\times p=b+k_2\times g\times q\\
a\equiv b\mod g
\]
所以对于所有的数对,就可以分为\(g\)组互不干涉的组
那么要想与\(a\)有关,就必须数对中其中一个为\(0\),另一个为\(1\),那么方案数就为:
(mid-1)^{\frac mg}\times(v-mid+1)^{\frac ng})^g
\]
#include<bits/stdc++.h>
using namespace std;
const int MOD=998244353,inv2=499122177;
int n,m,g,v,a,all,ans;
int power(int x,int y){
int ans=1;
for(;y;y>>=1,x=1ll*x*x%MOD) if(y&1) ans=1ll*ans*x%MOD;
return ans;
}
int gcd(int a,int b){
if(b) while((a%=b)&&(b%=a));
return a+b;
}
void add(int &a,int b){
a+=b;
if(a>=MOD) a-=MOD;
}
int main(){
scanf("%d%d%d%d",&n,&m,&v,&a);
g=gcd(n,m),ans=all=power(v,n+m);// mid=1
for(int i=2;i<=v;++i){
int now=power(1ll*power(i-1,n/g)*power(v-i+1,m/g)%MOD+1ll*power(i-1,m/g)*power(v-i+1,n/g)%MOD,g);
if(i<=a) add(ans,now);
int t=((1ll*all-now)%MOD+MOD)%MOD*inv2%MOD;
add(ans,t);
}
printf("%d",ans);
return 0;
}
[arc133e]Cyclic Medians的更多相关文章
- codeforces 85D D. Sum of Medians 线段树
D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Round #385 (Div. 2) A. Hongcow Learns the Cyclic Shift 水题
A. Hongcow Learns the Cyclic Shift 题目连接: http://codeforces.com/contest/745/problem/A Description Hon ...
- codeforces 709C C. Letters Cyclic Shift(贪心)
题目链接: C. Letters Cyclic Shift 题意: 现在一串小写的英文字符,每个字符可以变成它前边的字符即b-a,c-a,a-z这样,选一个字串变换,使得得到的字符串字典序最小; 思路 ...
- Codeforces 85D Sum of Medians
传送门 D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standa ...
- Cyclic Nacklace[HDU3746]
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 3746:Cyclic Nacklace
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)
When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...
- hdu-----(3746)Cyclic Nacklace(kmp)
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- Yandex.Algorithm 2011 Round 1 D. Sum of Medians 线段树
题目链接: Sum of Medians Time Limit:3000MSMemory Limit:262144KB 问题描述 In one well-known algorithm of find ...
- hdu 1853 Cyclic Tour 最小费用最大流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 There are N cities in our country, and M one-way ...
随机推荐
- DTMF从2833到inband的方案
概述 freeswitch是一款简单好用的VOIP开源软交换平台. 之前的文章中介绍过通过dialplan拨号计划配置的方法,实现2833到inband的转换,但是实际生产环境中的场景会更复杂,无法预 ...
- 【Java】关键字的使用
java中有很多的关键字,他们的使用让Java语言变得更加灵活.易用,下面将介绍Java中最常用的几个关键字并说明其用法. 一.关键字:return--跳出 使用在方法体中,用于:① 结束方法② 针对 ...
- 利用标准IO函数接口实现计算一个本地磁盘某个文件的大小,文件名通过命令行进行传递
利用标准IO函数接口实现计算一个本地磁盘某个文件的大小,文件名通过命令行进行传递 方法一:使用ftell函数直接获取光标偏移量 相关标准库函数 SYNOPSIS #include <stdio. ...
- shell处理字符串
概念 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号. 单引号声明字符串 单引号里的任何字符都会原样输出, ...
- zk源码—5.请求的处理过程
大纲 1.服务器的请求处理链 (1)Leader服务器的请求处理链 一.PrepRequestProcessor请求预处理器 二.ProposalRequestProcessor事务投票处理器 三.S ...
- Postman接口关联总结
1.新建集合 打开postman,点击Collections->New Collection,页面如下: 2.新建请求 下面以获取绑定信息接口为例 接口说明: C{获取绑定信息接口} 接口地址: ...
- 为什么 MySQL 选择使用 B+ 树作为索引结构?
为什么 MySQL 选择使用 B+ 树作为索引结构? MySQL 选择 B+ 树作为其索引结构的主要原因是它具有以下几个优势,这些优势使得 B+ 树非常适合用于数据库系统中的索引实现. 1. 高效的范 ...
- termux添加ll命令
cd ~ vim .bashrc 添加如下内容 alias ll="ls -l" 保存退出 :wq source .bashrc 参考:https://www.cnblogs.co ...
- 信息资源管理综合题之“SPD属于知识管理工具那一类 与 管理工具与知识库的区别 以及 使用知识地图是否可以用SynchroFLOW替代”
一.案例:1995年10月,微软开发了一项"技能规划与开发(SPD)"的计划,他们把每个系统开发人员的工作能力和这些特定工作需要的知识制作成地图,让那个员工与团队间的配合更加默契, ...
- 参考示例之“复制对象|拷贝对象|BeanUtils工具类学习”
// 设置需要拷贝的字段 Set<String> targetSet = new HashSet<>(); targetSet.addAll(Arrays .asList(&q ...