半小时打完了\(A~D\),想要一发\(F\)冲进前\(100\),结果平衡树常数大\(T\)了。据说\(G\)是矩阵树定。

\(A\)

放代码吧。

A
// code by Dix_
#include<bits/stdc++.h>
#define ll long long inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
} ll x,y,z; int main(){
x = read(),y = read(),z = read();
if(y * z % x != 0)
std::cout<<(ll)y * z / x;
else
std::cout<<(ll)y * z / x - 1<<std::endl;
}

\(B\)

按题意模拟

B
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
#define M 1000000 inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
} ll num[M];
ll n,m; int main(){
n = read(),m = read();
for(int i = 1;i <= n;++i){
ll x = read();
if(num[x] == 0)
num[x] ++ ;
}
for(int i = 1;i <= m;++i){
ll x = read();
num[x] ++ ;
}
for(int i = 1;i <= M;++i)
if(num[i] == 1)
std::cout<<i<<" ";
}

\(C\)

考虑枚举这个最大的公约数,把这个公约数的倍数在小于\(m\)情况下求出第二大的,看是否大于\(n\)

C
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
#define M 1000000 inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
} ll num[M];
ll n,m; bool s(int a){
for(int i = 2;i < sqrt(a);++i)
if(a % i == 0)
return false;
return true;
} int main(){
n = read(),m = read();
for(int i = m;i >= 1;--i){
ll x = m / i * i - i;
ll y = m / i * i;
if(x >= n){
std::cout<<i;
return 0;
}
}
}

\(D\)

考虑第一位有\(p - 1\)种选择,以后每个位根据前面的和的膜,只有\(p-2\)种

D
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
#define mod 1000000007 inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
} ll n,p; ll power(ll a,ll b){
ll ans = 1;
while(b){
if(b & 1)ans = ans * a % mod;
a = a * a % mod;
b >>= 1;
}
return ans;
} int main(){
n = read();
p = read();
p -= 1;
std::cout<<(p * power(p - 1,n - 1)) % mod<<std::endl;
}

\(F\)

考虑改变一个数时,在另外一个序列里找到原数的贡献,和现在这个数的贡献。

并在这个序列中删掉原数,加入新数。

用平衡树操作,只要查询前缀,前缀和,还有删除插入操作

放一下考场代码,被卡常了,找时间再改吧。

F
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
#define M 200005 inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
} ll n,m,q; ll a[M],b[M],suma,sumb; ll ans = 0; struct P{
#define A 2000010 ll ch[A][2],val[A],cv[A],siz[A],cnt,sum[A];
#define l(x) ch[x][0]
#define r(x) ch[x][1]
#define v(x) val[x]
#define c(x) cv[x]
#define s(x) siz[x]
#define sa(x) sum[x] void up(ll x){s(x) = 1 + s(l(x)) + s(r(x)),sa(x) = v(x) + sa(l(x)) + sa(r(x));} ll randoom(){return rand() << 15 | rand();} ll newcode(ll x){s(++cnt) = 1,sa(cnt) = v(cnt) = x,c(cnt) = randoom();return cnt;} void split(ll now,ll k,ll &x,ll &y){
if(!now){x = y = 0;return;}
if(v(now) <= k) x = now,split(r(now),k,r(now),y);
else
y = now,split(l(now),k,x,l(now));
up(now);
} ll merge(ll x,ll y){
if(!x || !y)return x + y;
if(c(x) < c(y)){
r(x) = merge(r(x),y);
up(x);return x;
}
else{
l(y) = merge(x,l(y));
up(y);return y;
}
} ll root,x,y,z,cn; void insert(ll a){
cn ++ ;
split(root,a,x,y);
root = merge(merge(x,newcode(a)),y);
} void del(ll a){
cn -- ;
split(root,a,x,z);
split(x,a - 1,x,y);
y = merge(l(y),r(y));
root = merge(x,merge(y,z));
} ll find(ll a){
split(root,a - 1,x,y);
ll ans = s(x) + 1;
root = merge(x,y);
return ans;
} ll kth(ll now,ll k){
if(k <= s(l(now)))return kth(l(now),k);
else
if(k == s(l(now)) + 1)return now;
else
return kth(r(now),k - s(l(now)) - 1);
} ll pre(ll a){
split(root,a,x,y);
ll ans = s(x);
merge(x,y);
return ans;
} ll nex(ll a){
split(root,a,x,y);
ll ans = v(kth(y,1));
merge(x,y);
return ans;
} ll prev(ll a){
split(root,a,x,y);
ll ans = sa(kth(x,s(x)));
merge(x,y);
return ans;
} }Q,P;//A B ll tob(int x){
ll l = sumb - P.prev(x);
// std::cout<<l<<std::endl;
ll k = P.pre(x) * x;
// std::cout<<k<<std::endl;
return l + k;
}//在b里找贡献。 ll toa(int x){
ll l = suma - Q.prev(x);
ll k = Q.pre(x) * x;
return l + k;
}//在b里找贡献。 int main(){
n = read(),m = read(),q = read();
for(int i = 1;i <= n;++i)
Q.insert(0);
for(int i = 1;i <= m;++i)
P.insert(0);
while(q -- ){
ll t = read(),x = read(),y = read();
if(t == 1){
ans += tob(y) - tob(a[x]);
suma += y - a[x];
Q.del(a[x]),Q.insert(y);
a[x] = y;
}
if(t == 2){
ans += toa(y) - toa(b[x]);
sumb += y - b[x];
P.del(b[x]),P.insert(y);
b[x] = y;
}
std::cout<<ans<<std::endl;
}
}

\(rank 800\)果真还是逊啊。

[JSC2021 A~D + F]的更多相关文章

  1. Mysql_以案例为基准之查询

    查询数据操作

  2. 在 C# 里使用 F# 的 option 变量

    在使用 C# 与 F# 混合编程的时候(通常是使用 C# 实现 GUI,F#负责数据处理),经常会遇到要判断一个 option 是 None 还是 Some.虽然 Option module 里有 i ...

  3. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

  4. 如果你也会C#,那不妨了解下F#(2):数值运算和流程控制语法

    本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-2.html 一些废话 一门语言火不火,与语言本身并没太大关系,主要看语言的推广. 推广得好,用的 ...

  5. 使用F#开发ASP.NET Core应用程序

    .NET Core 里的F# 在.NET Core刚发布时,就已经添加了对F#的支持.但因为当时F#组件还不完整,而一些依赖包并没有放在Nuget上,而是社区自己放到MyGet上,所以在使用dotne ...

  6. 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”

    前言 面向对象的思想已经非常成熟,而使用C#的程序员对面向对象也是非常熟悉,所以我就不对面向对象进行介绍了,在这篇文章中将只会介绍面向对象在F#中的使用. F#是支持面向对象的函数式编程语言,所以你用 ...

  7. 如果你也会C#,那不妨了解下F#(5):模块、与C#互相调用

    F# 项目 在之前的几篇文章介绍的代码都在交互窗口(fsi.exe)里运行,但平常开发的软件程序可能含有大类类型和函数定义,代码不可能都在一个文件里.下面我们来看VS里提供的F#项目模板. F#项目模 ...

  8. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

    函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...

  9. 如果你也会C#,那不妨了解下F#(3):F#集合类型和其他核心类型

    本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-3.html 在第一篇中,我们介绍了一些基础数据类型,其实那篇标题中不应该含有"F#&q ...

随机推荐

  1. 个人记录:对于python学习的反思和总结(一)

    在写代码时,总是遇到写着写着不知道怎么写了的情况,或者无法把自己的想法用程序表达出来,所以有时候我们需要建立一个自己的编程思路,对一个具体程序的编程有一个比较清晰的想法:因此我把自己的思路总结了一下, ...

  2. Coursera Deep Learning笔记 序列模型(一)循环序列模型[RNN GRU LSTM]

    参考1 参考2 参考3 1. 为什么选择序列模型 序列模型能够应用在许多领域,例如: 语音识别 音乐发生器 情感分类 DNA序列分析 机器翻译 视频动作识别 命名实体识别 这些序列模型都可以称作使用标 ...

  3. Noip模拟79 2021.10.17(题目名字一样)

    T1 F 缩点缩成个$DAG$,然后根据每个点的度数计算期望值 1 #include<cstdio> 2 #include<cstring> 3 #include<vec ...

  4. python re:正向肯定预查(?=)和反向肯定预查(?<=)

    参考资料:https://tool.oschina.net/uploads/apidocs/jquery/regexp.html (?=pattern) 正向肯定预查,在任何匹配pattern的字符串 ...

  5. Python import urllib2 ImportError: No module named 'urllib2'

    python3 import urllib2 import urllib2 ImportError: No module named 'urllib2' python3.3里面,用urllib.req ...

  6. cf16C Monitor(额,,,,水数学,,)

    题意: 一块镜子长宽是a*b.现在要调整(切割)成x:y的比例. 问调整完的最大面积是多少. 思路: 先将x,y弄成最简比例,然后放大到不超过min(a,b)即可. 代码: ll a,b,x,y; l ...

  7. 第12课 OpenGL 显示列表

    显示列表: 想知道如何加速你的OpenGL程序么?这一课将告诉你如何使用OpenGL的显示列表,它通过预编译OpenGL命令来加速你的程序,并可以为你省去很多重复的代码. 这次我将教你如何使用显示列表 ...

  8. ICMP 协议仿真及ping命令用途

    1.实验目的 加深对 IPv4 协议首部各定义域的理解,掌握路由表的结构和基本配置命令,熟悉 ICMP 的调试操作. 2.实验原理 IPv4 协议定义,网络层协议的相关 RFC 定义和描述. 3.实验 ...

  9. redis开外网访问

    Redis: 注释掉bind 127.0.0.1可以使所有的ip访问redis 若是想指定多个ip访问,但并不是全部的ip访问,可以bind protected-mode no /etc/init.d ...

  10. 羽夏看Win系统内核——系统调用篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...