10.1 csp-s模拟测试(b) X国的军队+排列组合+回文
T1 X国的军队
贪心,按$b-a$的大小降序排序,然后就贪心吧
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
struct node
{
ll a,b,las;
}h[];
ll T,n,ans;
ll read()
{
ll aa=,bb=;char cc=getchar();
while(cc>''||cc<''){if(cc=='-') bb=-;cc=getchar();}
while(cc<=''&&cc>=''){aa=aa*+cc-'';cc=getchar();}
return aa*bb;
}
bool cmp(node x,node y)
{
return x.b-x.a>y.b-y.a;
}
int main()
{
T=read();
while(T--){
n=read();ans=;
for(int i=;i<=n;i++) h[i].a=read(),h[i].b=read();
sort(h+,h+n+,cmp);
for(int i=;i<=n;i++){
if(h[i-].las<=h[i].b) ans+=h[i].b-h[i-].las,h[i].las=h[i].b-h[i].a;
else h[i].las=h[i-].las-h[i].b+h[i].b-h[i].a;
}
printf("%lld\n",ans);
}
return ;
}
X国的军队
T2 排列组合
结论:$\sum{C_n^i*C_n^i}=C_{2*n}^n$
$\sum{C_n^i*C_n^i}=\sum{C_n^i*C_n^{n-i}}$
考虑他的意义,在n个物品中选$i$个,再从$n$个物品中选$n-i$个
也就是$2*n$个物品,从前$n$个中选$i$个,从后$n$个中选$n-i$个
因为$i\in(0,n)$,取遍了所有的数,所以就是$C_{2*n}^n$
就是在$2*n$的序列中,任选$n$个,有i个在左半边,那么就一定有$n-i$个在右半边,两者是一一对应的
#include<iostream>
#include<cstdio>
#define ll long long
#define mod 1000000007
using namespace std;
ll T,n,ans,fac[],facinv[],inv[];
ll read()
{
ll aa=,bb=;char cc=getchar();
while(cc>''||cc<''){if(cc=='-') bb=-;cc=getchar();}
while(cc<=''&&cc>=''){aa=aa*+cc-'';cc=getchar();}
return aa*bb;
}
void init()
{
fac[]=;inv[]=;facinv[]=;
for(ll i=;i<=;i++){
if(i!=) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
fac[i]=fac[i-]*i%mod;
facinv[i]=facinv[i-]*inv[i]%mod;
}
}
ll C(ll x,ll y)
{
return fac[x]*facinv[y]%mod*facinv[x-y]%mod;
}
int main()
{
T=read();init();
while(T--) n=read(),printf("%lld\n",C(n+n,n));
return ;
}
排列组合
T3 回文
我只会暴力,我不会马拉车的部分分
$g[i][j]$表示从$i$到$j$是否是回文串,转移很简单,$g[i][j]=1$ $(s[i]==s[j]$&&$g[i+1][j-1]==1)$,边界要特判一下,一个奇数边界,一个偶数边界
$f[i][j]$表示$i$到$j$中一共有多少个回文串,转移稍用容斥,$f[i][j]=f[i+1][j]+f[i][j-1]-f[i+1][j-1]+g[i][j]$,这个边界其实没有判的必要
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,f[][];
char s[];
bool g[][];
int read()
{
int aa=,bb=;char cc=getchar();
while(cc>''||cc<''){if(cc=='-') bb=-;cc=getchar();}
while(cc<=''&&cc>=''){aa=(aa<<)+(aa<<)+(cc^'');cc=getchar();}
return aa*bb;
}
int main()
{
scanf("%s",s+);n=strlen(s+);
for(int i=n;i>=;i--){
g[i][i]=;
if(s[i]==s[i+]) g[i][i+]=;
for(int j=i+;j<=n;j++) if(s[i]==s[j]&&g[i+][j-]) g[i][j]=;
}
for(int i=n;i>=;i--)
for(int j=i;j<=n;j++)
f[i][j]=f[i+][j]+f[i][j-]-f[i+][j-]+g[i][j];
m=read();int l,r;
for(int i=;i<=m;i++) l=read(),r=read(),printf("%d\n",f[l][r]);
return ;
}
回文
不想退役就静下来
10.1 csp-s模拟测试(b) X国的军队+排列组合+回文的更多相关文章
- csp-s模拟测试10.1(b)X 国的军队,排列组合, 回文题解
题面:https://www.cnblogs.com/Juve/articles/11615883.html X 国的军队: 好像有O(T*N)的直接贪心做法 其实多带一个log的二分也可以过 先对所 ...
- 安装nginx python uwsgi环境 以及模拟测试
uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- Mock 模拟测试简介及 Mockito 使用入门
Mock 是什么mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.这个虚拟的对象就是mock对象.mock对象就是真实对象在调试期间的代 ...
- Mac下Jmeter快速安装与入门-模拟测试Post请求及设置Http头
[1]去Apache官网下载 Binaries系列的最新Jmeter.gz包 [2]下载到本地之后解压缩,进入到解压之后的目录然后,找到apache-jmeter-4.0/bin/jmeter.sh ...
- [2018冬令营模拟测试赛(二十一)]Problem A: Decalcomania
[2018冬令营模拟测试赛(二十一)]Problem A: Decalcomania 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见&quo ...
- 【转】利用Python中的mock库对Python代码进行模拟测试
出处 https://www.toptal.com/python/an-introduction-to-mocking-in-python http://www.oschina.net/transla ...
- noi2019模拟测试赛(四十七)
noi2019模拟测试赛(四十七) T1与运算(and) 题意: 给你一个序列\(a_i\),定义\(f_i=a_1\&a_2\&\cdots\&a_i\),求这个序列的所 ...
随机推荐
- oracle--共享磁盘挂载
01,查看挂载的磁盘 [root@SHLPDBWX01 ~]# fdisk -l Disk /dev/sda: bytes heads, sectors/track, cylinders Units ...
- Ubuntu 修改默认编辑器
sudo update-alternatives --config editor
- 用OC实现双向链表:构造链表、插入节点、删除节点、遍历节点
一.介绍 双向链表:每一个节点前后指针域都和它的上一个节点互相指向,尾节点的next指向空,首节点的pre指向空. 二.使用 注:跟单链表差不多,简单写常用的.循环链表无法形象化打印,后面也暂不实现了 ...
- 利用OD破解一个简单的C语言程序
最近在学习汇编(看的是王爽老师的<汇编语言(第三版)>),然后想尝试使用OD(Ollydbg)软件破解一个简单的C语言程序练练手. 环境: C语言编译环境:VC++6.0 系统:在Wind ...
- 知识图谱辅助金融领域NLP任务
从人工智能学科诞生之初起,自然语言处理(NLP)就是人工智能核心的研究问题之一.NLP的重要性是毋庸置疑的,它能够实现以自然语言交流为特征的高级人机交互,使机器能“阅读”所有以文字形式记录的人类知识, ...
- 实现拖拽列表-微信小程序
之前在网上搜索拖拽列表的实现时,发现了有好多的方法都是基于像素位置的计算实现的,这种方法要求列表元素的大小以及列表的位置有着非常严格的要求,修改和拓展起来非常的麻烦.于是我自己动手实现了一个基于页面元 ...
- SpringBoot(16)—@ConditionalOnBean与@ConditionalOnClass
@ConditionalOnBean与@ConditionalOnClass 上一篇讲的@Conditional可以通过条件控制是否注入Bean,这篇讲下有关Bean其它几个常用的注解使用方式 @Co ...
- 动态SQL屏幕条件选择(里面还有赋值的新语法)
有时候屏幕条件中使用PARAMETERS时候,如果你为空的话,会查不出数据,但是可能你的想法是不想限制而已,但是系统默认理解为了空值,这个时候,如果取判断一下条件是不是空,在SQL里决定写不写的话,会 ...
- 面试官常问的Nginx的那几个问题?
什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代 ...
- 盲法介绍及python盲打练习系统
目录 一:盲打简介与优点 二:如何练习 三:键盘字母排列顺序的口诀 四:python打字练习系统 一:盲打简介与优点 简介:盲打是指打字的时候不用看键盘或看稿打字时的视线不用来回于文稿和键盘之间的 ...