构造+贪心/数论


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

怎样提高智商

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

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

  唯一用到的是快速幂?

 //UOJ Round #5 A
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
const int MOD=; void read(int &v){
v=; int sign=; char ch=getchar();
while(ch<'' || ch>'') {if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
v*=sign;
}
typedef long long LL; LL pow_mod(int a,int b){
LL r=,base=a;
while(b){
if (b&) r=(r*base)%MOD;
base=base*base%MOD;
b>>=;
}
return r;
} int main(){
int n=;
read(n);
printf("%lld\n",pow_mod(,n-)*%MOD);
F(i,,n) printf("A 0 0 0 0\n");
return ;
}

怎样跑得更快

  Orz vfk&trz!

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

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

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

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

 //UOJ Round5 C
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=1e5+,P=;
/*******************template********************/ int n,c,d,q;
int b[N],f_r[N],f_z[N],hx[N],x[N],g[N];
inline void exgcd(LL a,LL b,LL &d,LL &x,LL &y){
if (!b){d=a;x=;y=;}
else {exgcd(b,a%b,d,y,x); y-=(a/b)*x;}
}
inline LL inv(int a){
LL d,x,y;
exgcd(a,P,d,x,y);
return d== ? (x+P)%P : -;
}
inline LL Pow(LL a,int b){
LL r=;
for(;b;b>>=,a=a*a%P) if (b&) r=r*a%P;
return r;
} void solve(){
F(i,,n) f_z[i]=(LL)b[i]*g[i]%P;
F(i,,n)
for(int j=i+i;j<=n;j+=i){
f_z[j]-=f_z[i];
if (f_z[j]<) f_z[j]+=P;
}
F(i,,n){
if (f_r[i]==- && f_z[i]!=){puts("-1");return;}
hx[i]=(LL)f_r[i]*f_z[i]%P;
}
D(i,n,)
for(int j=i+i;j<=n;j+=i){
hx[i]-=hx[j];
if (hx[i]<) hx[i]+=P;
}
F(i,,n) x[i]=(LL)hx[i]*g[i]%P;
F(i,,n) printf("%d%c",x[i],i==n?'\n':' ');
}
int main(){
#ifndef ONLINE_JUDGE
freopen("C.in","r",stdin);
freopen("C.out","w",stdout);
#endif
n=getint(); c=getint(); d=getint(); q=getint();
F(i,,n){
f_r[i]=Pow(i,abs(c-d));
if (c<d) f_r[i]=inv(f_r[i]);
}
F(i,,n) g[i]=Pow(Pow(i,d),P-);
F(i,,n)
for(int j=i+i;j<=n;j+=i){
f_r[j]-=f_r[i];
if (f_r[j]<) f_r[j]+=P;
}
F(i,,n) f_r[i]=inv(f_r[i]);
while(q--){
F(i,,n) b[i]=getint();
solve();
}
return ;
}

【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. chown 详解

    chown Linux/Unix 是多用户多任务操作系统,所有的文件皆有其拥有者(Owner).利用 chown命令 可以将文件的拥有者加以改变.一般来说,这个命令只能由系统管理者(root)使用,一 ...

  2. 数据库相关--mysql中的单表查询

    一.完整的单表查询语句 select [distinct] *|字段1,字段2, .... from 表名 [where 条件1] [group by 字段名 [having 条件2] ] [orde ...

  3. Ubuntu服务器的anaconda环境修复办法(自动进入base环境怎么办?)

    某天在服务器上更新了conda的版本,不知怎么回事我的python3.6就变成python2.7了,而且一进入服务器就会自动进入base环境(我的conda只装了base环境) 仔细研究了半天,才发现 ...

  4. MySQL Binlog 解析工具 Maxwell 详解

    maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...

  5. Java可视化编程---SendMail工具的开发

    介绍: SendMail是一款简便的163邮箱发件工具 利用了163的SMTP接口来发送邮件 版本号:SendMail v1.0 在编写发送邮件工具之前,还需要安装 JavaMail API 和Jav ...

  6. bzoj 1171 并查集优化顺序枚举 | 线段树套单调队列

    详见vfleaking在discuss里的题解. 收获: 当我们要顺序枚举一个序列,并且跳过某些元素,那么我们可以用并查集将要跳过的元素合并到一起,这样当一长串元素需要跳过时,可以O(1)跳过. 暴力 ...

  7. Codeforces Round #258 (Div. 2) A. Game With Sticks 水题

    A. Game With Sticks 题目连接: http://codeforces.com/contest/451/problem/A Description After winning gold ...

  8. UVALive 6906 Cluster Analysis 并查集

    Cluster Analysis 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemi ...

  9. 将Azure WebSite(应用)集成到虚拟网络

    用过Azure的同学都知道如何将虚拟机加入虚拟网络,也非常简单,但是对于将应用(WebSite)集成到虚拟网络中却很少听到.今天我要讲的就是如何直接将我们部署在WebSite中的应用加入到虚拟网络. ...

  10. bash编程之xargs实用技巧

    xargs结合管道操作符|,可以完成很多看似复杂的问题: 1.快速删除所有.log日志文件 机器运行久了,就会有各式各样的日志文件,散落在各个目录下,可以利用下面的方法: find ./ -name ...