构造+贪心/数论


  为什么只有两个标题呢……因为第二题我不会……

怎样提高智商

  构造题……然而一开始半天我都yy不出来……

  后来我想:这题应该不会特别麻烦,而且既然样例只给了1,可能再给大一点就让人发现规律了……(心理战的可怕0.0?)然后yy了一下,发现全部都写0的答案是最多的,是$4*3^{n-1}$,然后就过了……

  唯一用到的是快速幂?

  1. //UOJ Round #5 A
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<iostream>
  6. #include<algorithm>
  7. #define rep(i,n) for(int i=0;i<n;++i)
  8. #define F(i,j,n) for(int i=j;i<=n;++i)
  9. #define D(i,j,n) for(int i=j;i>=n;--i)
  10. using namespace std;
  11. const int MOD=;
  12.  
  13. void read(int &v){
  14. v=; int sign=; char ch=getchar();
  15. while(ch<'' || ch>'') {if (ch=='-') sign=-; ch=getchar();}
  16. while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
  17. v*=sign;
  18. }
  19. typedef long long LL;
  20.  
  21. LL pow_mod(int a,int b){
  22. LL r=,base=a;
  23. while(b){
  24. if (b&) r=(r*base)%MOD;
  25. base=base*base%MOD;
  26. b>>=;
  27. }
  28. return r;
  29. }
  30.  
  31. int main(){
  32. int n=;
  33. read(n);
  34. printf("%lld\n",pow_mod(,n-)*%MOD);
  35. F(i,,n) printf("A 0 0 0 0\n");
  36. return ;
  37. }

怎样跑得更快

  Orz vfk&trz!

  这题真的是一道非常好的题!

  然而由于我实在太傻逼,直到现在才看懂vfk的题解……vfk的题解写的真的非常好,清晰易懂0.0

  感觉莫比乌斯反演真是好神奇>_<,不过做过这道题以后对莫比乌斯反演又有了些新的感悟?

  小范围枚举倍数or约数进行反演感觉更简单直观……易于理解……(然而大多数题目的数据范围都比较大?QwQ)

  1. //UOJ Round5 C
  2. #include<vector>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<cstdlib>
  6. #include<iostream>
  7. #include<algorithm>
  8. #define rep(i,n) for(int i=0;i<n;++i)
  9. #define F(i,j,n) for(int i=j;i<=n;++i)
  10. #define D(i,j,n) for(int i=j;i>=n;--i)
  11. using namespace std;
  12. typedef long long LL;
  13. inline int getint(){
  14. int r=,v=; char ch=getchar();
  15. for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
  16. for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
  17. return r*v;
  18. }
  19. const int N=1e5+,P=;
  20. /*******************template********************/
  21.  
  22. int n,c,d,q;
  23. int b[N],f_r[N],f_z[N],hx[N],x[N],g[N];
  24. inline void exgcd(LL a,LL b,LL &d,LL &x,LL &y){
  25. if (!b){d=a;x=;y=;}
  26. else {exgcd(b,a%b,d,y,x); y-=(a/b)*x;}
  27. }
  28. inline LL inv(int a){
  29. LL d,x,y;
  30. exgcd(a,P,d,x,y);
  31. return d== ? (x+P)%P : -;
  32. }
  33. inline LL Pow(LL a,int b){
  34. LL r=;
  35. for(;b;b>>=,a=a*a%P) if (b&) r=r*a%P;
  36. return r;
  37. }
  38.  
  39. void solve(){
  40. F(i,,n) f_z[i]=(LL)b[i]*g[i]%P;
  41. F(i,,n)
  42. for(int j=i+i;j<=n;j+=i){
  43. f_z[j]-=f_z[i];
  44. if (f_z[j]<) f_z[j]+=P;
  45. }
  46. F(i,,n){
  47. if (f_r[i]==- && f_z[i]!=){puts("-1");return;}
  48. hx[i]=(LL)f_r[i]*f_z[i]%P;
  49. }
  50. D(i,n,)
  51. for(int j=i+i;j<=n;j+=i){
  52. hx[i]-=hx[j];
  53. if (hx[i]<) hx[i]+=P;
  54. }
  55. F(i,,n) x[i]=(LL)hx[i]*g[i]%P;
  56. F(i,,n) printf("%d%c",x[i],i==n?'\n':' ');
  57. }
  58. int main(){
  59. #ifndef ONLINE_JUDGE
  60. freopen("C.in","r",stdin);
  61. freopen("C.out","w",stdout);
  62. #endif
  63. n=getint(); c=getint(); d=getint(); q=getint();
  64. F(i,,n){
  65. f_r[i]=Pow(i,abs(c-d));
  66. if (c<d) f_r[i]=inv(f_r[i]);
  67. }
  68. F(i,,n) g[i]=Pow(Pow(i,d),P-);
  69. F(i,,n)
  70. for(int j=i+i;j<=n;j+=i){
  71. f_r[j]-=f_r[i];
  72. if (f_r[j]<) f_r[j]+=P;
  73. }
  74. F(i,,n) f_r[i]=inv(f_r[i]);
  75. while(q--){
  76. F(i,,n) b[i]=getint();
  77. solve();
  78. }
  79. return ;
  80. }

【UOJ Round #5】的更多相关文章

  1. 【UOJ Round #1】

    枚举/DP+排列组合 缩进优化 QAQ我当时一直在想:$min\{ \sum_{i=1}^n (\lfloor\frac{a[i]}{x}\rfloor + a[i] \ mod\ x) \}$ 然而 ...

  2. 【UOJ Round #8】

    A 一道不错的题,虽然大家都觉得是水题,然而蒟蒻我想出来的好慢……Orz alpq 发现其实就是一个网格图,每一个大块都是同一颜色……横纵坐标互不干扰…… //UOJ Round #8 A #incl ...

  3. 【UOJ Round #3】

    枚举/二分 C题太神窝看不懂…… 核聚变反应强度 QwQ很容易发现次小的公约数一定是gcd的一个约数,然后……我就傻逼地去每次算出a[1],a[i]的gcd,然后枚举约数……这复杂度……哦呵呵... ...

  4. 【CS round 34】Minimize Max Diff

    [题目链接]:https://csacademy.com/contest/round-34/task/minimize-max-diff/ [题意] 给你n个数字; 数组按顺序不下降; 让你删掉k个数 ...

  5. 【CS Round 34】Max Or Subarray

    [题目链接]:https://csacademy.com/contest/round-34/summary/ [题意] 让你找一个最短的连续子串; 使得这个子串里面所有数字or起来最大; [题解] 对 ...

  6. UOJ #30【CF Round #278】Tourists

    求从$ x$走到$ y$的路径上可能经过的最小点权,带修改  UOJ #30 $ Solution:$ 如果两个点经过了某个连通分量,一定可以走到这个连通分量的最小值 直接构建圆方树,圆点存原点的点权 ...

  7. UOJ #30. 【CF Round #278】Tourists

    Description Cyberland 有 n 座城市,编号从 1 到 n,有 m 条双向道路连接这些城市.第 j 条路连接城市 aj 和 bj.每天,都有成千上万的游客来到 Cyberland ...

  8. 【57.97%】【codeforces Round #380A】Interview with Oleg

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. 【42.86%】【Codeforces Round #380D】Sea Battle

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

随机推荐

  1. 003.NFS配置实例

    一 NFS常见服务管理 1.1 启动NFS [root@imxhy ~]# systemctl start nfs #CentOS7.x系列启动 [root@imxhy ~]# service nfs ...

  2. Spring 中的事务操作、注解、以及 XML 配置

    事务 事务全称叫数据库事务,是数据库并发控制时的基本单位,它是一个操作集合,这些操作要么不执行,要么都执行,不可分割.例如我们的转账这个业务,就需要进行数据库事务的处理. 转账中至少会涉及到两条 SQ ...

  3. 使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!

    ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工具 . 下 ...

  4. 常见的网络攻击(XSS,SQL注入,CSRF)

    一.XSS 二.SQL注入 三.CSRF

  5. jquery 下拉列表选择值

    选择下拉列表值样例方式 $("#updateAppName").get(0).selectedIndex = 0; $("#updateAppName").ge ...

  6. android listview 优化

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha android convertview作用 ======= 1,convertView复 ...

  7. 表达式括号匹配(stack.cpp)

    [问题描述]        假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回 ...

  8. [Java]Get与Post,客户端跳转与服务器端跳转

    http://www.thinksaas.cn/group/topic/133101/ 虽然说get 与post 问题很老套了,但是作为web 开发人员来说对于这个的理解确实很有必要,其实说到get  ...

  9. MikroTik RouterOS虚拟机/实体机安装方法

    一.设置光驱 二.安装RouerOS 按a全选,按i安装,q退出,空格可以选取或取消选取.这里是选择你要安装的组件. 是否要保存原有配置:是否要提交.一路y. 安装好之后按回车重启:之后为这个界面,安 ...

  10. HDU 4815 Little Tiger vs. Deep Monkey(2013长春现场赛C题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4815 简单的DP题. #include <stdio.h> #include <st ...