【2016多校训练4】Multi-University Training Contest 4
1001 Another Meaning
题意:字符串A中包含的字符串B可以翻译或不翻译,总共有多少方案。
题解:动规,dp[i]表示A的第i位为止有多少方案。
转移方程:
dp[i]=dp[i-1](不翻译)
dp[i]+=dp[i-B.size()](翻译i结尾的子串B)
初始条件:dp[0]=1(代表不翻译的这种情况)
dp[B.size()]=2(若从A起点开始的子串是B,则有翻译和不翻译两种)
//http://acm.hdu.edu.cn/showproblem.php?pid=5763
#include<iostream>
#include<string>
using namespace std;
#define M 1000000007
#define N 100005
int t,dp[N];
string A,B;
int main(){
cin>>t;
for(int c=;c<=t;c++){
cin>>A>>B;
for(int i=;i<A.size();i++){
dp[i]=i?dp[i-]:;
if(i+>=B.size()&&A.substr(i-B.size()+,B.size())==B){
dp[i]=(dp[i]+dp[i-B.size()])%M;
if(i+==B.size())dp[i]=;
}
}
cout<<"Case #"<<c<<": "<<dp[A.size()-]<<endl;
}
return ;
}
1005 Lucky7
题意:x到y有多少个7的倍数,且满足≠ai mod pi。
题解:利用容斥定理奇加偶减,处理限制条件。
中国剩余定理求出满足ai=X%pi的最小正整数X。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
ll p[],a[];
ll p1[],a1[],num;
ll n,x,y;
ll ans;
ll exgcd(ll l,ll r,ll &x,ll &y)
{
if(r==){x=;y=;return l;}
else
{
ll d=exgcd(r,l%r,y,x);
y-=l/r*x;
return d;
}
}
ll qmul(ll a,ll b,ll m){//快速乘法
ll ans=;
ll k=a;
while(b){
if(b&)
ans=(ans+k)%m;
k=(k+k)%m;
b>>=;
}
return ans;
}
ll Remain(ll p[],ll a[],ll m){
ll ans=;
for(int i=;i<=num;i++)
{
ll x,y,Mk=m/p[i];
exgcd(Mk,p[i],x,y);
x=(x%p[i]+p[i])%p[i];
ans=(ans+qmul(qmul(Mk,x,m),a[i],m))%m;//ans+=Mk*x*a[i]
}
return (ans+m)%m;
}
ll work()
{
ll m=;
for(int i=;i<=num;i++)
m*=(ll)p1[i];
ll sum=Remain(p1,a1,m);
ll k1=(x-sum)/m;
if(k1*m+sum<x)k1++;
if(k1<)k1=;
if(y<sum)return ;
ll k2=(y-sum)/m;
return k2-k1+;
}
void solve()
{
ans=;
for(ll i=;i<=(<<n)-;i++)
{
num=;
memset(p1,,sizeof(p1));
memset(a1,,sizeof(a1));
for(int j=;j<n;j++)
if((i&(<<j)))
{
p1[++num]=p[j+];
a1[num]=a[j+];
}
p1[++num]=;a1[num]=;
if(num%==)ans+=work();
else ans-=work();
}
return;
}
int main()
{
int t;
cin>>t;
for(int l=;l<=t;l++)
{
cin>>n>>x>>y;
for(int i=;i<=n;i++)cin>>p[i]>>a[i];
solve();
cout<<"Case #"<<l<<": "<<ans<<endl;
}
return ;
}
1012 Bubble Sort
树状数组维护数字i前面有多少个比它小的数,即第几小。最左距离就是rank,最右距离就是max(原位置,终位置),求出距离极差即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 100005
using namespace std;
int t,n,p[N],sum[N],ans[N];
inline int lowbit(int x){return x&(-x);}
int getsum(int x){
int s=;
for(;x;x-=lowbit(x))s+=sum[x];
return s;
}
void update(int v,int x){
for(;x<=n;x+=lowbit(x))sum[x]+=v;
}
int main(){
cin>>t;
for(int c=;c<=t;c++){
memset(sum,,sizeof sum);
cout<<"Case #"<<c<<":";
cin>>n;
for(int i=;i<=n;i++)
{
cin>>p[i];
update(,p[i]);
int r=getsum(p[i]);
ans[p[i]]=max(i-r,p[i]-r);
}
for(int i=;i<=n;i++)
cout<<" "<<ans[i];
cout<<endl;
}
return ;
}
【2016多校训练4】Multi-University Training Contest 4的更多相关文章
- 2016多校训练3_1007(hdu5758 Explorer Bo)
#include <functional> #include <algorithm> #include <iostream> #include <iterat ...
- ACM多校联赛7 2018 Multi-University Training Contest 7 1009 Tree
[题意概述] 给一棵以1为根的树,树上的每个节点有一个ai值,代表它可以传送到自己的ai倍祖先,如果不存在则传送出这棵树.现在询问某个节点传送出这棵树需要多少步. [题解] 其实是把“弹飞绵羊”那道题 ...
- 2016 Multi-University Training Contest 1
8/11 2016 Multi-University Training Contest 1 官方题解 老年选手历险记 最小生成树+线性期望 A Abandoned country(BH) 题意: 1. ...
- 2016 Al-Baath University Training Camp Contest-1
2016 Al-Baath University Training Camp Contest-1 A题:http://codeforces.com/gym/101028/problem/A 题意:比赛 ...
- 2015多校联合训练赛 hdu 5308 I Wanna Become A 24-Point Master 2015 Multi-University Training Contest 2 构造题
I Wanna Become A 24-Point Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 ...
- 2015多校联合训练赛hdu 5301 Buildings 2015 Multi-University Training Contest 2 简单题
Buildings Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Tota ...
- 2016 Multi-University Training Contest 3
5/11 2016 Multi-University Training Contest 3官方题解 2016年多校训练第三场 老年选手历险记 暴力 A Sqrt Bo(CYD) 题意:问进行多少次开根 ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
随机推荐
- web端通信技术
1.web端通信技术:长连接.长轮询.websocket; 什么是长连接.长轮询? 就是客户端不停的向服务器发送请求以获取最新的数据信息.这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它 ...
- Nginx中防盗链(下载防盗链和图片防盗链)操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- ES6 WeakSet数据结构 与Set十分相似
它与Set十分相似,对象的值也不能是重复的,与Set不同点: .WeakSet成员只能够是对象. .作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说, ...
- PAT 1004. 成绩排名 (20)
读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...
- VS清除打开项目时的TFS版本控制提示
原文:http://blog.useasp.net/archive/2015/12/15/how-to-permanently-remove-vs-project-TFS-source-version ...
- 折腾了1周把程序从sqlserver迁移到oracle上了,每折腾一次需要耗费1周时间
主要花费时间的事情: 1:安装配套的服务器,安装操作系统,安装数据库,配置远程访问等等,一般会耗费1天时间,甚至2天时间,若手头安装盘不齐全,需要耗费更多时间. 2:远程传输安装文件.特别是开发环境等 ...
- 网络/运维工程师visio2013模具图标 绘制漂亮的网络拓扑图 狮子XL工程师美学思想
visio2013狮子XL自定义运维模具下载: 链接:http://pan.baidu.com/s/1bo779Kz 密码:xh3s 狮子XL 的美学思想: 1,一次痛苦,一生幸福. 之前,在绘制网络 ...
- I/O 流和对象序列化
一.I/O 流(java 如何实现与外界数据的交流) 流定义: 任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象.他屏蔽了实际的I/O设备处理数据的细节. 1.Input/Output:指 ...
- eclipse/intellij Idea集成jetty
jetty相对weblogic.jboss.tomcat而言,启动速度快,十分方便开发调试,以下是eclipse里的使用步骤: 一.eclipse->Marketplace里搜索 jetty 一 ...
- jQuery学习笔记(二):this相关问题及选择器
上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理解的,this就是指代当前操作的DOM对象. 在jQuery中,this可以用于单 ...