题面: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. Mac OS X终端的常用操作命令(UNIX指令)

    用了十多年windows,终于换了个高配Mac,俗话说 无论前端还是后端最终还是走向了linux,无论是换了多少台PC最终都会走向Mac.不学习命令行用什么Mac? 干就完了~ pwd 显示现在的文件 ...

  2. 2019-7-15-WPF-测试触摸设备发送触摸按下和抬起不成对

    title author date CreateTime categories WPF 测试触摸设备发送触摸按下和抬起不成对 lindexi 2019-7-15 9:3:51 +0800 2019-0 ...

  3. 笔记:TCP/IP基础知识

    TCP/IP是指利用IP进行通信时必须用到的协议群的统称. 互联网层(网络层) IP IP是跨越网络传送数据包,使整个网络都能收到数据的协议.IP地址在发送数据的时候作为主机的标识. ICMP 用来诊 ...

  4. [转]Netty入门(最简单的Netty客户端/服务器程序)

    Java中的NIO是一种解决阻塞式IO问题的基本技术,但是NIO的编写对java程序员是有比较高的要求的.那么Netty就是一种简化操作的一个成熟的网络IO编程框架.这里简单介绍一个程序,代码是< ...

  5. No parser no filepath given问题解决

    关于 vue 项目 run dev 的时候,控制台警告: No parser and no filepath given, using 'babylon' the parser now but thi ...

  6. Spring使用Redis

    1.引入依赖 <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...

  7. docker快速安装kibana

    一.拉取镜像 docker pull kibana:5.6.9 二.启动容器 docker run --name kibana -e ELASTICSEARCH_URL=http://10.0.0.1 ...

  8. (转)RSA加密解密及数字签名Java实现

    转:http://my.oschina.net/jiangli0502/blog/171263?fromerr=hc4izFe2  RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rives ...

  9. struts漏洞处理--老项目struts版本升级遇到的问题

    struts漏洞S2-016被扫描出,要求升级struts版本,查看生产struts版本2.0.12,该漏洞影响版本2.3.15以下,上网搜索,struts2.5以上的要求jdk1.7,由于项目过老, ...

  10. CSS3:CSS3 圆角

    ylbtech-CSS3:CSS3 圆角 1.返回顶部 1. CSS3 圆角 CSS3 圆角 使用 CSS3 border-radius 属性,你可以给任何元素制作 "圆角". C ...