定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任何一条边 (u,v),都有 f(u)≠f(v)。

定义函数 g(n,k) 的值为所有包含 n 个点的无自环、无重边的 k 可染色无向图中的边数最大值。举例来说,g(3,1)=0,g(3,2)=2,g(3,3)=3。

现在给出三个整数 n,l,r,你需要求解:(\sum_{i=l}^rg(n,i))mod998244354

Solution

把 \(n\) 个点分成 \(m\) 份,尽可能均分,方案是显然的。每一份之间不连边,不同份之间都连上,边数相当于一个大完全图减去一堆小完全图,推出单个后考虑求和,整除分块即可。

#include <bits/stdc++.h>
using namespace std; #define int long long
const int mod = 998244353; int M(int x) {
return (x%mod+mod)%mod;
} int calc(int n,int m,int s) {
int l=s,r,ans=0;
while(l<=m) {
r=n/l?min(n/(n/l),m):m;
ans+=M(M(n*(n-1)/2)*(r-l+1));
ans-=M(M(n*(n/l))*(r-l+1));
ans+=M(M((n/l)*(n/l+1)/2)*M((r-l+1)*(l+r)/2));
ans=M(ans);
l=r+1;
}
return ans;
} signed main() {
ios::sync_with_stdio(false);
int T,n,l,r,ans;
cin>>T;
while(T--) {
cin>>n>>l>>r;
ans=0;
cout<<calc(n,r,l)<<endl;
}
}

最新文章

  1. lua随机数的问题
  2. Set接口
  3. 【C++】rand()函数,时间种子
  4. 十分钟搞懂什么是CGI
  5. NSTimer scheduledTimerWithTimeInterval与timerWithTimeInterval、initWithFireDate的区别
  6. 指示灯组与3个复位按钮的介绍Arduino Yun快速入门教程
  7. base64coder调用
  8. byte,bitmap,image互转
  9. python(19)编码问题
  10. Linux多线程——使用互斥量同步线程
  11. wpf Content数据绑定StringFormat起作用的原理和解决(转)
  12. java线程condition
  13. 2016大连网络赛 Function
  14. 高通HAL层之Sensor HAL
  15. Pygame常用方法
  16. JS正则表达式匹配域名 网址 URL
  17. 接口测试工具-tamper data
  18. 关于 web 页面 占满全屏
  19. 浅谈meta viewport设置移动端自适应
  20. Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

热门文章

  1. .NET Core MVC 静态文件应用
  2. 想学大学计算机课?这 37 门 CS 专业必修课,了解一下
  3. php利用七牛云的对象存储完成图片上传-高效管理图片
  4. 基于Jupyter Notebooks的C# .NET Interactive安装与使用
  5. B样条曲线方程和C++实现
  6. Java连载88-HashSet集合与hashCode方法重写
  7. 今天带来compass的使用方式
  8. Java 代码块详解
  9. checkbox 样式重写
  10. dsu on tree[树上启发式合并学习笔记]