http://www.hzxjhs.com:83/contest/55

说实话这次比赛真的很水。。然而我只拿了140分,面壁反思。

第一题:

发现数位和sum最大就是9*18,k最大1000,那么sum*k最大不过2*10^5,若能被x整除,则x也不超过200000,暴力即可。

不知道学军OIlonglong用%I64d还是%lld输入,用了%I64d爆零。。改成lld就AC了。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std; typedef long long LL; int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
LL l,r;
int k,ans=;
scanf("%lld%lld%d",&l,&r,&k);
for(int i=;i<=;i++)
{
if(i>r || i<l) continue;
int sum=,x=i;
while(x)
{
sum+=x%;
x/=;
}
if((sum*k%i)==) ans++;
}
printf("%d\n",ans);
}
return ;
}

第二题

原本用了矩阵乘法来表示i到j走2^k步有多少种方案,方案数>=1就建一条边,最后跑最短路。。超时,50分。

然后发现自己真的好傻逼。。

直接看代码吧。就是一个简单DP,c[i][j][k]表示i到j走2^k步是否可以,d[i][j]表示i到j最少时间。

if d[i][l][k-1]==1 && d[l][j][k-1]==1   -->  d[i][j][k]=1

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std; typedef long long LL;
const int N=,M=;
int n,m,d[N][N];
bool c[N][N][]; int minn(int x,int y){return x<y ? x:y;} int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
scanf("%d%d",&n,&m);
memset(c,,sizeof(c));
memset(d,,sizeof(d));
for(int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
d[x][y]=;
c[x][y][]=;
}
for(int k=;k<=;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int l=;l<=n;l++)
{
if(c[i][l][k-] && c[l][j][k-])
{
d[i][j]=;
c[i][j][k]=;
}
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int l=;l<=n;l++)
{
d[i][j]=minn(d[i][j],d[i][l]+d[l][j]);
}
printf("%d\n",d[][n]);
return ;
}

第三题

直接递归。

作死用了树状数组维护前缀和,用个数组就好了吧。。

用树状数组超时90分,改成数组就A了。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std; const int N=;
char s[N];
int n,c[N],d[N][N][]; int lowbit(int x){return x&(-x);}
void add(int x,int d){
for(int i=x;i<=n;i+=lowbit(i)) c[i]+=d;
}
int getsum(int x){
int ans=;
for(int i=x;i>=;i-=lowbit(i)) ans+=c[i];
return ans;
} bool check(int l,int r,int tmp)
{
if(d[l][r][tmp]!=-) return d[l][r][tmp];
if(l>r) return ;
if((getsum(r)-getsum(l-))&) return d[l][r][tmp]=;
if(tmp==)
{
if(l==r && s[l]=='') return d[l][r][tmp]=;
if(s[l]=='' && s[r]=='' && check(l+,r-,)) return d[l][r][tmp]=;
return d[l][r][tmp]=;
}
else
{
int t=getsum(l-);
for(int i=l;i<r;i++)
{
if((getsum(i)-t)&) {d[l][i][]=d[i+][r][]=;continue;}
if(check(l,i,) && check(i+,r,)) return d[l][r][tmp]=;
}
return d[l][r][tmp]=;
}
} int main()
{
freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
scanf("%s",s+);
memset(c,,sizeof(c));
memset(d,-,sizeof(d));
for(int i=;i<=n;i++)
if(s[i]=='') add(i,);
if(check(,n,)) printf("YES\n");
else printf("NO\n");
}
return ;
}

【XJOI-NOIP16提高模拟训练9】题解。的更多相关文章

  1. 【题解】NOIP2017 提高组 简要题解

    [题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...

  2. 【题解】NOIP2016 提高组 简要题解

    [题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...

  3. [NOIP2012提高]借教室 题解(二分答案+差分)

    [NOIP2012提高&洛谷P1083]借教室 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室 ...

  4. 信息学竞赛一本通提高版AC题解—例题1.1活动安排

    书中代码有误.书中为sort(a+1,a+n+1,Cmp). // // Created by yuxi on 19-1-13. // /* * * <信息学竞赛一本通-提高版>全部AC解 ...

  5. XJOI——NOIP2015提高组模拟题19-day1——观光旅行

    http://www.hzxjhs.com:83/contest/493/problem/3 [题目大意] 给定一个有n(n<=500000)个点,m(1<=500000)条边的无向图.给 ...

  6. nowcoder提高组2题解

    T1 化一下试子就ok code #include<cstdio> #include<algorithm> inline long long read() { long lon ...

  7. NOIP2017提高组day2T1题解(奶酪)

    题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...

  8. 牛客NOIP提高组(三)题解

    心路历程 预计得分:$30 + 0 + 0 = 30$ 实际得分:$0+0+0= 0$ T1算概率的时候没模爆long long了... A 我敢打赌这不是noip难度... 考虑算一个位置的概率,若 ...

  9. 牛客NOIP提高组(二)题解

    心路历程 预计得分:100 + 40 + 30 = 170 实际得分:100 + 30 + 0 = 130 T2有一个部分分的数组没开够RE了. T3好像是思路有点小问题.. 思路没问题,实现的时候一 ...

随机推荐

  1. virtualbox下 ubuntu 14.04设置外网独立IP

    安装时记得选择sshserver vim /etc/network/interfaces iface eth0 inet static address YOUR IP netmask 子网掩码 get ...

  2. IOS中GPS定位偏移纠正(适用于Google地图)

    在这个神奇的国度里,我们总得学习一些有中国特色的东东,例如“火星坐标”.也许有人还不知道这是什么玩意,我就简要介绍一下吧.      如果你有带GPS模块的智能手机,打开定位功能,然后访问Google ...

  3. ExtJs桌面组件(DeskTop)

    在desktop\js目录中包含了5个js文件,这5个js文件如下: 还有css样式表:desktop.css,图片素材 在这5个js文件中封装了用于模拟桌面的类,这些类如下: Ext.ux.Star ...

  4. qt QSS文件伪状态

    表 1. 伪状态列表伪状态    描述:checked    button部件被选中:disabled    部件被禁用:enabled    部件被启用:focus    部件获得焦点:hover  ...

  5. c语言中static 用法总结(转)

    惨痛教训: 假设在test.h中定义了一个static bool g_test=false; 若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_tes ...

  6. 网络攻防工具介绍——Wireshark

    网络攻防工具介绍 Wireshark 简介 Wireshark(前称Ethereal)是一个网络封包分析软件.它是一个理想的开源多平台网络协议分析工具.网络封包分析软件的功能是撷取网络封包,并尽可能显 ...

  7. Daily Scrum6

    今天我们小组开会内容分为以下部分: part 1: Anti-spam and anti-abuse module模块总结: part 2: 部分优化代码的展示于交流: part 3:针对用户积分模块 ...

  8. iptables端口转发

    iptables -t nat -A PREROUTING -d {外网ip}/32 -p tcp -m tcp --dport 4956 -j DNAT --to-destination 10.1. ...

  9. Careercup - Google面试题 - 5085331422445568

    2014-05-08 23:45 题目链接 原题: How would you use Dijkstra's algorithm to solve travel salesman problem, w ...

  10. VC6.0装了visual assist x回车键不能补全代码的解决方法

    问题:VC6.0装了visual assist x补全代码具体怎么用?         输入字母后会像输入法那样出现一个菜单        但是怎么选择菜单里面的内容呢?        什么 回车  ...