题面:https://www.cnblogs.com/Juve/articles/11733280.html

最大异或和:

简单博弈,小Q一定不会输,如果异或和为0,则平局,因为无论小Q如何拿,小T都会拿到和小Q一样

如果异或和不为0,则小Q只要取走二进制下最高位的那个数即可

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN=1e5+;
int t,n,w[MAXN],tot=;
signed main(){
scanf("%lld",&t);
while(t--){
tot=;
scanf("%lld",&n);
for(int i=;i<=n;++i) scanf("%lld",&w[i]),tot^=w[i];
for(int i=,u,v;i<n;++i) scanf("%lld%lld",&u,&v);
if(tot!=) puts("Q");
else puts("D");
}
return ;
}

简单的括号序列:

组合数学,记住不要重复

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define re register
using namespace std;
const int MAXN=,mod=1e9+;
int len,ans=,f[MAXN],g[MAXN];
char s[MAXN];
int fac[MAXN],inv[MAXN];
int q_pow(int a,int b,int p){
int res=;
while(b){
if(b&) res=res*a%p;
a=a*a%p;
b>>=;
}
return res;
}
void get_c(int N){
fac[]=fac[]=inv[]=;
for(int i=;i<=N;++i) fac[i]=fac[i-]*i%mod;
inv[N]=q_pow(fac[N],mod-,mod);
for(int i=N-;i>=;--i) inv[i]=inv[i+]*(i+)%mod;
}
int C(int n,int m){
if(m>n) return ;
if(m==n) return ;
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
signed main(){
scanf("%s",s+);
len=strlen(s+);
get_c(len+);
for(re int i=;i<=len;++i){
f[i]=f[i-];
if(s[i]=='(') ++f[i];
}
for(re int i=len;i>;--i){
g[i]=g[i+];
if(s[i]==')') ++g[i];
}
for(int i=;i<=len;++i){
if(s[i]=='(') ans=(ans+C(f[i]+g[i]-,g[i]-))%mod;
}
printf("%lld\n",ans);
return ;
}

旅行计划:

floyed终于用上了。。。

设f[i][j][k]表示从i到j走k步的最短距离,这很好转移

然后设g[i][j][k]表示从i到j走k×100步的最短距离,用f数组转移

然后把f数组按照k从大到小更新,把f数组转化为i到j走至少k步的最短距离

然后询问时的答案就是min(g[s][i][k/100]+f[i][t][k%100]),$i\in[1,n]$

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define re register
using namespace std;
const int inf=0x3f3f3f3f;
int n,m,mp[][],q,ans,s,t,k,f[][][],g[][][];
void floyed(){
for(int i=;i<=n;++i) f[i][i][]=g[i][i][]=;
for(int k=;k<=;++k){
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
for(int p=;p<=n;++p)
f[i][j][k]=min(f[i][j][k],f[i][p][k-]+mp[p][j]);
}
for(int k=;k<=;++k){
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
for(int p=;p<=n;++p)
g[i][j][k]=min(g[i][j][k],g[i][p][k-]+f[p][j][]);
}
for(int i=;i<=n;++i){
for(int j=;j<=n;++j)
for(int k=;k>=;--k)
f[i][j][k]=min(f[i][j][k+],f[i][j][k]);
}
}
signed main(){
scanf("%d%d",&n,&m);
memset(mp,0x3f,sizeof(mp));
memset(f,0x3f,sizeof(f));
memset(g,0x3f,sizeof(g));
for(re int i=,u,v,w;i<=m;++i){
scanf("%d%d%d",&u,&v,&w);
mp[u][v]=min(mp[u][v],w);
}
floyed();
scanf("%d",&q);
while(q--){
ans=inf;
scanf("%d%d%d",&s,&t,&k);
for(int i=;i<=n;++i)
ans=min(ans,g[s][i][k/]+f[i][t][k%]);
if(ans>=inf) ans=-;
printf("%d\n",ans);
}
return ;
}

csps模拟83最大异或和简单的括号序列旅行计划题解的更多相关文章

  1. CSPS模拟 83

    紧张起来,集训已过半! 稍微有点惆怅.. T1 什么玩意,神仙树形dp? 没思路,先去T2. (遇到难题就绕过去是真的爽啊) T2 $n^2$暴力很好打 组合数是不是有规律? 找一下规律,发现十分眼熟 ...

  2. [CSP-S模拟测试]:简单的括号序列(组合数)

    题目传送门(内部题82) 输入格式 一行一个字符串$ss$,保证$ss$中只包含$'('$和$')'$. 输出格式 一行一个整数,表示满足要求的子序列数对$10^9+7$的结果. 样例 样例输入1: ...

  3. [CSP-S模拟测试]:最大异或和(数学)

    题目传送门(内部题81) 输入格式 第一行一个整数$T(T\leqslant 20)$,表示测试数据组数 接下来$T$组,对于每一组,第一行一个整数$n$ 第二行有$n$个整数,为$w_1,w_2.. ...

  4. csps模拟85表达式密码,电压机制,括号密码题解

    题面:https://www.cnblogs.com/Juve/articles/11733280.html 表达式密码: 是个水题... #include<iostream> #incl ...

  5. csps模拟67神炎皇,降雷皇,幻魔皇题解

    题面:https://www.cnblogs.com/Juve/articles/11648975.html 神炎皇: 打表找规律?和$\phi$有关? 答案就是$\sum\limits_{i=2}^ ...

  6. csp-s模拟测试83(集训过半)

    csp-s模拟测试83(集训过半) 一场信心赛.起初$OJ$爆了我就看见全场$A$了$T1$并且夹杂着$A$掉$T2$我就很难受. 这场比赛没有深入思考,很失败,一个多小时后就结束了我罪恶的一生. 0 ...

  7. csp-s模拟测试98

    csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...

  8. csp-s模拟测试86

    csp-s模拟测试86 分屋前的最后一次考试,我早就放弃了自己. 02:02:46 70 02:02:57 03:16:08 100 03:16:08 $T1$忘了按位计算,达哥按位计算的$T1$当时 ...

  9. csp-s模拟测试95

    csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...

随机推荐

  1. ArcGis面要素空间连接,取相交面积最大者 C#

    核心代码: #region JoinWork_IntersectMax private void CreateNewFields_IntersectMax(IFeatureClass destFeat ...

  2. python接口自动化(响应对象方法)

    python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding ...

  3. python--面向对象:类和对象命名空间

    一.一个类可以定义两种属性:静态属性和动态属性 (一)对于不可变数据类型来说,类变量最好用类名操作,也可以用对象操作,但是只能查,不能改,对象改的都只是相当于在自己的命名空间里重新建立了一个 clas ...

  4. css3 鼠标悬停图片动画

    <div class="grid"> <figure class="effect-milo"> <img src="im ...

  5. arguments的使用

    当我们不确定有多少参数传递的时候,可以使用 arguments 来获取,在 JavaScript 中, arguments 实际上它是当前函数的一个内置对象. 所有的函数都内置了一个 argument ...

  6. Linux 进程间通信 有名管道(fifo)

    有名管道特点: 1)无名管道只能用于具有亲缘关系的进程之间,这就限制了无名管道的使用范围 2)有名管道可以使互不相关的两个进程互相通信. 3)有名管道可以通过路径名来指出,并且在文件系统中可见,但内容 ...

  7. 解决 Onenote 默认全角输入的一种解决办法(输入法已经设置为默认半角)

    环境说明:Windows 7 x64 Ultimate SP1, QQ 拼音输入法 6.1(5306),Onenote 2016 x64 问题描述:每次打开Onenote,在输入法已经设置为默认半角的 ...

  8. python 2 学习历程(一)

    在用户输入字符串的时候,有时会带有一些其他的字符,例如常见的空格 除非在网页或者某个位置声明了空格也算字符,或者一些账号等安全程度较高的环节,多了一个空格很少有人会注意到,并且愿意即时改正它们,那么这 ...

  9. 关于使用AWS的centos

    AWS的centos在版本上有些许不同. 当使用6代的时候,默认的登录用户是root 使用7代的系统,默认的登录用户是centos 否则登录不上去

  10. rest framework之APIView

    一.rest framework配置 1.安装rest framework 在django环境中安装rest-framework框架: (automatic) C:\Users\Administrat ...