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. 嵌入式web服务

    :boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生于1991年,作者Paul Philips. ...

  2. 通过Roslyn构建自己的C#脚本

    通过Roslyn构建自己的C#脚本 在下一代的C#中,一个重要的特性就是"Compiler as a Service",简单的讲,就是就是将编译器开放为一种可在代码中调用的服务.最 ...

  3. start apache2 failed in Ubuntu

    Invalid command 'WSGIReloadMechanism', perhaps misspelled or defined by a module not included in the ...

  4. ABAP字符串按长度拆分

    REPORT ytest_012 MESSAGE-ID oo. ) TYPE c. ) TYPE c. ) TYPE c. DATA: l_pos TYPE i. DATA: BEGIN OF ls_ ...

  5. 怎样把php数组转换成字符串,php implode()

    实例代码 一维数组转换成字符串代码! <?php $arr1=array("shu","zhu","1"); $c=implode(& ...

  6. 【上传AppStore】iOS项目上传到AppStore步骤流程(第三章) - 基本信息总汇

    一.App ID(bundle identifier) App ID即Product ID,用于标识一个或者一组App. App ID应该和Xcode中的Bundle Identifier是一致(Ex ...

  7. iTween基础之Shake(摆动)

    一.基础介绍:二.基础属性 原文地址 :http://blog.csdn.net/dingkun520wy/article/details/50836780 一.基础介绍 ShakePosition: ...

  8. linux查看端口是否已开启和查看文件数

    查看端口是否开启 lsof -i:80 查看文件数 ls | wc -w

  9. 巧用 .NET 中的「合并运算符」获得 URL 中的参数

    获取 URL 中的 GET 参数,无论用什么语言开发网站,几乎是必须会用到的代码.但获取 URL 参数经常需要注意一点就是要先判断是否有这个参数存在,如果存在则取出,如果不存在则用另一个值.这个运算称 ...

  10. 11.3Daily Scrum

    人员 任务分配完成情况 明天任务分配 王皓南 实现网页上视频上传的功能,研究相关的代码782 数据库测试 申开亮 实现网页上视频浏览的功能.研究相关的代码和功能.783 实现视频浏览的功能 王宇杰 负 ...