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. dede 忘记密码在数据库中修改方法

    如何找回或修改dedecms后台管理员登录密码呢? 一个客户把密码忘了,找了很长一会没几个靠谱的回答,dede是使用md5加密,但是,它是显示32位md5加密码从第6位开始的20位 方法是直接修改其m ...

  2. Object-c 语法 - NSObject常用方法和反射

    NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...

  3. 使用JSON的数据格式

      在说JSON之前,我们先来看一下在javascript中创建对象的方式,也就是创建对象的字面量表示法.我们知道js中有五种基本的数据类型,分别是: Undefined(变量可能没有声明或者赋值) ...

  4. My First Django Project (3) - Apache set up

    Holy moly!!!!因为漏了一下斜杠,害我反复调试了2,3天,无法读取static 文件,一直找不出原因,后来在apache的error.log中发现了原因. 1. 下载了apache 2.4, ...

  5. 66.为什么有时候在ISE软件中,顶层文件不能置顶?

    什么时候回出现顶层文件不能置顶呢?嘿嘿,肯定是工程中有错误啦. 如果你的顶层文件包含了include文件,这个时候就会出现这种情况了.但好像出现在刚新建工程的时候,因为当顶层文件不包括Include文 ...

  6. P3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三

    首先,我们先确定,最长的曼哈顿距离只可能为 x1+y2-(x2+y2) 和 x1-y1-(x2-y2) 所以我们只需要维护四个值, 分别代表 max(x+y) ; max(x-y) ; min(x+y ...

  7. 【收藏】Myeclipse优化

    1 .关闭MyEclipse的自动validation       windows > perferences > myeclipse > validation       将Bui ...

  8. JS多种方法实现随机颜色;

    JS随机颜色有很多地方要用到:比如大家看到很多标签连接都是五颜六色.实现随机颜色的方法有多种,下面来看看具体的实现代码: 方法一: var getRandomColor = function() { ...

  9. Java 字符编码归纳总结

    String newStr = new String(oldStr.getBytes(), "UTF-8");       java中的String类是按照unicode进行编码的 ...

  10. hibernate 注解写在哪?

    是写在get方法上还是 还是成员变量上? 一般 成员变量是私有的,如果写在成员变量上,那么hibernate就能过通过反射机制直接访问到私有变量,破坏了数据的封装性: 所以 :推荐写在方法上,虽然写的 ...