上午考了一套sb题,但是没有人AK。李巨290虐场。

下午又考了一套sb题,李巨AK虐场。%%%

T1 %

中国剩余定理好像做不了啊,我一直在想如何用CRT做,然后就GG了。

然而正解是bike当初说的“CRT根本没用啊你每次合并两个数就可以了”然而这玩意似乎就叫做EXCRT。

洛谷模板传送门

考虑合并

x=y mod P

x=bi mod ai

k1*P+y=k2*ai+bi

k1*P+k3*ai=bi-y

exgcd解同余方程,得到一个解,从而得到k1的最小整数解。

x=x+k1*P

P=lcm(P,ai)

洛谷这道题要写快速乘

这道t1相当于是k1是暴力从小到大枚举的,lcm(p1~pi)=p1*p2*……pi,与p(i+1)互质,k最多枚举到i。P和x都很大不需要记下来,只需要记录它们模每个a和每个b的结果即可。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int up=,N=;
typedef unsigned long long LL;
typedef double db;
using namespace std;
int n,m;
int a[N],b[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int bo[up+],p[up+];
void get_prime() {
for(int i=;i<=up;i++) {
if(!bo[i]) p[++p[]]=i;
for(int j=;j<=p[]&&p[j]*i<=up;j++) {
bo[i*p[j]]=;
if(i%p[j]==) break;
}
}
} struct ct {
int ma[N],mb[N];
friend ct operator +(const ct &A,const ct &B) {
ct rs;
For(i,,n) rs.ma[i]=(A.ma[i]+B.ma[i])%p[i];
For(i,,m) rs.mb[i]=((LL)A.mb[i]+B.mb[i])%b[i];
return rs;
}
friend ct operator *(const ct &A,const int &B) {
ct rs;
For(i,,n) rs.ma[i]=A.ma[i]*B%p[i];
For(i,,m) rs.mb[i]=(LL)A.mb[i]*B%b[i];
return rs;
}
}bs,rs; #define ANS
int main() {
#ifdef ANS
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
#endif
get_prime();
read(n); read(m);
For(i,,n) read(a[i]);
For(i,,m) read(b[i]);
For(i,,n) bs.ma[i]=,rs.ma[i]=; // rs=0 bs=1
For(i,,m) bs.mb[i]=,rs.mb[i]=;
For(i,,n) {
while(rs.ma[i]!=a[i]) rs=rs+bs;
bs=bs*p[i];
}
int tp=;
For(i,,n) if(rs.ma[i]==) tp++;
For(i,,m) {
if(tp==n) cout<<bs.mb[i]<<endl;
else cout<<rs.mb[i]<<endl;
}
Formylove;
}

T2 净化

最短路裸题。。

把水厂的dis设为0跑最短路,对于单向边u->v,答案和dis[u]+val(u,v)取max,对于双向边u<->v,ans-dis[u]+ans-dis[v]>=val(u,v)。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,inf=1e9;
typedef long long LL;
typedef double db;
using namespace std;
int n,m,is[N],ec[N][]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int ecnt,fir[N],nxt[N],to[N],val[N];
void add(int u,int v,int w,int i) {
nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v; val[ecnt]=w;
} struct node {
int x,dis;
node(int x,int dis):x(x),dis(dis){}
friend bool operator <(const node&A,const node&B) {
return A.dis>B.dis;
}
};
priority_queue<node>que; int dis[N];
int solve() {
For(i,,n) {
if(is[i]==) {
dis[i]=;
que.push(node(i,));
}
else dis[i]=inf;
}
while(!que.empty()) {
node t=que.top();
que.pop();
if(t.dis!=dis[t.x]) continue;
for(int i=fir[t.x];i;i=nxt[i]) {
if(dis[to[i]]>t.dis+val[i]) {
dis[to[i]]=t.dis+val[i];
que.push(node(to[i],dis[to[i]]));
}
}
}
int rs=;
For(i,,m) {
int x=ec[i][],y=ec[i][];
int t=ec[i][],len=ec[i][];
if(t==) rs=max(rs,dis[x]+len);
else {
int tp=(dis[x]+dis[y]+len)/;
if((dis[x]+dis[y]+len)%) tp++;
if(tp>rs) rs=tp;
}
}
return rs;
} #define ANS
int main() {
#ifdef ANS
freopen("purify.in","r",stdin);
freopen("purify.out","w",stdout);
#endif
read(n); read(m);
For(i,,n) read(is[i]);
For(i,,m) {
int x,y,t,len;
read(x); read(y); read(t); read(len);
ec[i][]=x; ec[i][]=y;
ec[i][]=t; ec[i][]=len;
add(x,y,len,i);
if(t==) add(y,x,len,i);
}
printf("%d\n",solve());
Formylove;
}

T3 三点通信

lca裸题。。

树上的答案等于d[x]+d[y]+d[z]-d[lca(x,y)]-d[lca(x,z)]-d[lca(y,z)]

有环的话,记下多出的一条边,要么只在树上走,同上,要么考虑多出的一条边(u,v)要被经过,枚举x,y,z中某些点到u,某些点到v,再加上u,v的权值。

求树上k个点之间的路径长度的话,怕是要建虚树哦,不知道有没有更简单的方法。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,m,q;
LL HC,HD[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int ecnt,fir[N],nxt[N],to[N];
LL val[N];
void add(int u,int v,LL w) {
nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v; val[ecnt]=w;
nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u; val[ecnt]=w;
} int vis[N],R[N],ok,ex,ey,f[N][];
LL dis[N],el;
void dfs(int x,int fa) {
vis[x]=;
f[x][]=fa;
R[x]=R[fa]+;
For(i,,) f[x][i]=f[f[x][i-]][i-];
for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) {
if(vis[to[i]]) {
ok=;
ex=x; ey=to[i]; el=val[i];
}
else {
dis[to[i]]=dis[x]+val[i];
dfs(to[i],x);
}
}
} int lca(int x,int y) {
if(R[x]<R[y]) swap(x,y);
Rep(i,,) if(R[f[x][i]]>=R[y])
x=f[x][i];
if(x==y) return x;
Rep(i,,) if(f[x][i]!=f[y][i])
x=f[x][i],y=f[y][i];
return f[x][];
} LL calc(int a,int b) { return dis[a]+dis[b]-2LL*dis[lca(a,b)]; }
LL calc(int a,int b,int c) { return dis[a]+dis[b]+dis[c]-dis[lca(a,b)]-dis[lca(a,c)]-dis[lca(b,c)]; } LL solve(int a,int b,int c) {
LL rs=calc(a,b,c);
if(ok) {
rs=min(rs,calc(a,ex)+calc(b,c,ey)+el);
rs=min(rs,calc(b,ex)+calc(a,c,ey)+el);
rs=min(rs,calc(c,ex)+calc(a,b,ey)+el);
rs=min(rs,calc(a,ey)+calc(b,c,ex)+el);
rs=min(rs,calc(b,ey)+calc(a,c,ex)+el);
rs=min(rs,calc(c,ey)+calc(a,b,ex)+el);
}
return rs;
} #define ANS
int main() {
#ifdef ANS
freopen("three.in","r",stdin);
freopen("three.out","w",stdout);
#endif
read(n); read(m); read(q);
For(i,,m) {
int x,y; LL z;
read(x); read(y); read(z);
add(x,y,z);
}
dfs(,);
For(cs,,q) {
int x,y,z;
read(x); read(y); read(z);
printf("%lld\n",solve(x,y,z));
}
Formylove;
}

NOIp2018集训test-10-23的更多相关文章

  1. [NOIP2018模拟赛10.23]发呆报告

    闲扯 考场看了眼题目感觉很难,一个小时敲完了所有暴力...嗯然后就在那里发呆什么事也没做 T3考场上把数据结构想了个遍都不会完成1操作,现在看这种思路其实之前也接触过... 比较玄学的一件事情就是T1 ...

  2. 背水一战 Windows 10 (23) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令

    [源码下载] 背水一战 Windows 10 (23) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令 作者:webabcd ...

  3. 10.23 正睿停课训练 Day7

    目录 2018.10.23 正睿停课训练 Day7 A 矩形(组合) B 翻转(思路) C 求和(思路 三元环计数) 考试代码 B1 B2 C 2018.10.23 正睿停课训练 Day7 期望得分: ...

  4. Daily Scrum 10.23

    (写于10.22周四) 说下现在的人员情况: 康家华请假至下周一,刘彦熙至周五18:00,张启东至周六中午. 其他人正常工作. 然后是现在的进度情况: 已经完成服务器数据库搭建,以及基础的注册登陆功能 ...

  5. [NOIP2018模拟赛10.16]手残报告

    [NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...

  6. [jzoj NOIP2018模拟10.23]

    丢分主要是下面几个方面: 1.T2代码交错了,有个特判没写丢了10分 2.T1线段树加等差数列写错了(其实二维差分就可以,但我当时不会) 3.T3思考再三还是为了10分写上了主席树,还是写错了 总体评 ...

  7. [NOIP2018模拟赛10.20A]挂分报告

    闲扯 先看看了B组,T1 ZROI刚好讲过一个性质原根一般很小的,直接枚举;T2一眼二分然后似乎状压 T3没看 然后上来A组题,T1 flow这名字...网络流?! T1题面非常的社会主义核心价值观, ...

  8. Notes of the scrum meeting(2013/10/23)

    ps:本来是10月23号周三下午开的会,这几天由于各种事情忙,忘记写博客了,现在补上. 软工项目组buaa_smile开始项目第一次scrum meeting meeting time:4:00~5: ...

  9. 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等

    今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...

  10. NOIP2018 集训(二)

    A题 神炎皇 问题描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对 \((a,b)\) ,若满足 \(a+b\leq n\) 且 \(a+b\) 是 \(ab\) 的因子,则称 为神 ...

随机推荐

  1. 双11大考 POLARDB分钟级弹性让企业轻松扩展

    无处不在的脉冲计算 阿里有双11,中国有春运,高考后有分数出来的那天,歌迷心中有周杰伦演唱会门票在线开售之时....有人的地方就有江湖,有人的地方也有脉冲计算,这些热点事件背后都需要大量的计算资源给予 ...

  2. 高级运维(七):Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包

    一.Subversion基本操作 目标: 本案例要求先快速搭建好一台Subversion服务器,并测试该版本控制软件: 1> 创建版本库    2> 导入初始化数据    3> 检出 ...

  3. 工程师技术(四):配置SMB文件夹共享、多用户Samba挂载、普通NFS共享的实现、安全NFS共享的实现

    一.配置SMB文件夹共享 目标: 本例要求在虚拟机 server0 上发布两个共享文件夹,具体要求如下: 1> 此服务器必须是 STAFF 工作组的一个成员   2> 发布目录 /comm ...

  4. vue中setTimeout切换浏览器页签时怎么清除解决方案

    大家都知道,vue中有完整的生命周期,this.$router.push('')可以跳到相应的页面中,在beforeDestroy中可以监听到,将定时器清空,又或是通过this._isDestroye ...

  5. 转:Linux设备树(Device Tree)机制

    目录 1. 设备树(Device  Tree)基本概念及作用 2. 设备树的组成和使用 2.1. DTS和DTSI 2.2. DTC 2.3. DTB 2.4. Bootloader 3. 设备树中d ...

  6. python requests方法post请求json格式处理

    方法如下: import requestsimport json data = {    'a': 123,    'b': 456} ## headers中添加上content-type这个参数,指 ...

  7. java获取字符串编码和转换字符串编码

    public class EncodingUtil { // 这里可以提供更多地编码格式,另外由于部分编码格式是一致的所以会返回 第一个匹配的编码格式 GBK 和 GB2312 public stat ...

  8. 28. Python编写自动化测试用例

    接口文档已经提供了,requests库.unittest单元测试框架也已经介绍过,笔者相信读者朋友已经可以独立编写接口自动化测试用例了.但是有一些细节,我们需要聊一下.比如我们写登录接口测试用例,用户 ...

  9. Linux折腾

    安装了一圈发行版,最后发现还是Fedora最稳定 debian安装后无法启动 openSUSE源不完善 manjaro重启就进不去

  10. java swing 中JTable实现指定单元格为下拉框

    利用自定义的CellEditor实现第四列第二行为下拉框,本列其余行为文本框 利用默认的DefaultCellEditor设置第五列整列为下拉框   package mypackage; import ...