t1 jzoj3762 过河

路径分段,计算出向上移对答案贡献最大的一段路,再使用堆来维护即可

代码:

#include<bits/stdc++.h>
using namespace std;
double dis(double x,double y){
    return sqrt(x*x+y*y);
}
struct no{
    int x,y,v;
    double w;
    bool operator <(const no &rhs)const{
        return w>rhs.w;
    }
};
int v[100010],w[100010];
double ans;
int n,y,u;
priority_queue<no>q;
int main(){
    scanf("%d%d%d",&n,&y,&u);
    for(int i=1;i<=n;i++)
        scanf("%d",&w[i]);
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
    no p;
    for(int i=1;i<=n;i++){
        ans+=w[i]/(double)v[i];
        p.w=(dis(w[i],1)-w[i])/(double)v[i];
        p.x=w[i];p.y=0;p.v=v[i];
        q.push(p);
    }
    p.w=1/(double)u;
    p.x=p.y=0;p.v=u;
    q.push(p);
    for(int i=1;i<=y;i++){
        no x=q.top();q.pop();
        ans+=x.w;
        x.y++;
        x.w=(dis(x.x,x.y+1)-dis(x.x,x.y))/(double)x.v;
        q.push(x);
    }
    printf("%.4f",ans);
}

t2:jzoj3763 逃离迷宫

题解:状压dp+搜索,首先求出每一个结点到其他结点的距离,然后状压dp,f[i][j]表示上一次取的药水编号为i,选过的药水集合为j所能耗费体力的最小值,上一次选的药水和这次选的药水都要枚举

代码:

#include<bits/stdc++.h>
using namespace std;
int o[4]={0,1,0,-1},p[4]={1,0,-1,0};
long long n,m,k,sx,sy,tx,ty,h[101][101],g[17][101][101],f[17][(1<<17)+2],d[17][17],a[17],b[17],c[17],ans;
struct node{int x,y;};
void bfs(){
    memset(g,127,sizeof(g));
    for(int i=0;i<=k;i++){
        queue<node>q;q.push((node){a[i],b[i]});
        g[i][a[i]][b[i]]=0;
        while(!q.empty()){
            node x=q.front();q.pop();
            for(int j=0;j<4;j++){
                int nx=o[j]+x.x,ny=p[j]+x.y;
                if(nx>0&&nx<=n&&ny>0&&ny<=m)
                    if(g[i][nx][ny]>g[i][x.x][x.y]+(h[x.x][x.y]-h[nx][ny])*(h[x.x][x.y]-h[nx][ny])){
                        g[i][nx][ny]=g[i][x.x][x.y]+(h[x.x][x.y]-h[nx][ny])*(h[x.x][x.y]-h[nx][ny]);
                        q.push((node){nx,ny});
                    }
            }
        }for(int j=0;j<=k+1;j++)if(i!=j)d[i][j]=g[i][a[j]][b[j]];
    }
}void dp(){
    memset(f,127,sizeof(f));
    f[0][1]=0;ans=2139062143;
    for(int s=1;s<=(1<<(k+1))-1;s++)
        for(int i=0;i<=k;i++)
            if((1<<i)&s){
                for(int j=0;j<=k;j++)
                    if(!(s&(1<<j)))f[j][s|(1<<j)]=min(f[j][s|(1<<j)],f[i][s]+d[i][j]-c[j]);
                ans=min(ans,f[i][s]+d[i][k+1]);
            }
}
int main(){
    scanf("%d%d%d%d%d%d%d",&n,&m,&k,&sx,&sy,&tx,&ty);a[0]=sx;b[0]=sy;a[k+1]=tx;b[k+1]=ty;
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%lld",&h[i][j]);
    for(int i=1;i<=k;i++)scanf("%lld%lld%lld",&a[i],&b[i],&c[i]);
    bfs();dp();printf("%lld",ans);return 0;
}

t3:jzoj3764 幸运数

奇怪的枚举,使用深搜枚举,当sum(当前选的数的乘积)乘p乘p(即现在选的数)(乘两次)大于n的时候应该二分范围,这是唯一能过的终极剪枝

代码:


#include<bits/stdc++.h>
using namespace std;
int n,m,vis[1000005],p[1000005],ct,cc;
void shai(){
    for(int i=2;i<=m;i++){
        if(!vis[i])p[++ct]=i;
        for(int j=1;j<=ct&&(long long)i*p[j]<=m;j++){
            vis[i*p[j]]=1;
            if(i%p[j]==0)break;
        }
    }
}
void ef(int k,int s){
    int l=k,r=ct,ans=-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(s*(long long)p[mid]<=n)
            l=mid+1,ans=mid;
        else r=mid-1;
    }
    if(~ans)cc+=ans-k+1;
    cc++;
}
void dfs(int x,int s){
    if(x>ct){
        cc++;
        return;
    }
    if(s*(long long)p[x]*p[x]>n){
        ef(x,s);
        return;
    }
    dfs(x+1,s);
    long long tp=p[x];
    for(int i=1;i<=50;i++){
        if(s*tp>n)break;
        dfs(x+1,s*tp);
        tp=tp*p[x]*p[x];
    }
}
int main(){
    scanf("%d%d",&n,&m);
    m=min(n,m);
    shai();
    dfs(1,1);
    printf("%d",cc);
}

2017.06.04【NOIP提高组】模拟赛B组:的更多相关文章

  1. 2017.1.16【初中部 】普及组模拟赛C组总结

    2017.1.16[初中部 ]普及组模拟赛C组 这次总结我赶时间,不写这么详细了. 话说这次比赛,我虽然翻了个大车,但一天之内AK,我感到很高兴 比赛 0+15+0+100=115 改题 AK 一.c ...

  2. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  3. ZROI提高组模拟赛05总结

    ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ...

  4. NOIP2017提高组 模拟赛15(总结)

    NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...

  5. NOIP2017提高组 模拟赛13(总结)

    NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 ...

  6. NOIP2017提高组模拟赛 10 (总结)

    NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...

  7. NOIP2017提高组模拟赛 8(总结)

    NOIP2017提高组模拟赛 8(总结) 第一题 路径 在二维坐标平面里有N个整数点,Bessie要访问这N个点.刚开始Bessie在点(0,0)处. 每一步,Bessie可以走到上.下.左.右四个点 ...

  8. NOIP2017提高组模拟赛 9 (总结)

    NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面 ...

  9. NOIP2017提高组模拟赛 7(总结)

    NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...

  10. NOIP2017提高组模拟赛5 (总结)

    NOIP2017提高组模拟赛5 (总结) 第一题 最远 奶牛们想建立一个新的城市.它们想建立一条长度为N (1 <= N <= 1,000,000)的 主线大街,然后建立K条 (2 < ...

随机推荐

  1. LevelDB 读取记录

    [LevelDB 读取记录] LevelDb是针对大规模Key/Value数据的单机存储库,从应用的角度来看,LevelDb就是一个存储工具.而作为称职的存储工具,常见的调用接口无非是新增KV,删除K ...

  2. python's object model

    [python's object model] 1.object.__init__(self[, ...])        如果subclass没有实现__init__,那么python类在实例化的时 ...

  3. onItemLongClick+onCreateContextMenu实现长按ListItem弹出不同菜单

    个ListActivity,长按不同的item弹出的菜单不一样 参照

  4. 73. Set Matrix Zeroes (Array)

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Follow ...

  5. leetcode 13 Roman to Integer 罗马数组转整型

    描述: 将一个字符串表示的罗马数字转为整数,范围0~3999 解决: 如果后一个比前一个大,则表示减,没什么技巧. map<}, {}, {}, {}, {}, {}, {}}; int rom ...

  6. 部署MVC项目ManagedPipelineHandler报错

    "处理程序ExtensionlessUrlHandler-Integrated-4.0在其模块列表中有一个错误模块ManagedPipelineHandler": 解决方法:以管理 ...

  7. Zookeeper 源码(四)Zookeeper 服务端源码

    Zookeeper 源码(四)Zookeeper 服务端源码 Zookeeper 服务端的启动入口为 QuorumPeerMain public static void main(String[] a ...

  8. 签名Android应用程序

    Android要求对作为产品发布的应用进行签名(包名相同的化,后安装的应用会覆盖前面安装的应用) 签名作用:1.确定发布者的身份.2.确保应用的完整性. 注意:在应用的开发.调试阶段,Eclipse的 ...

  9. word生成包含echarts图形使用phantomjs,支持word2003,2007

    代码具体地址在我的github上 :https://github.com/HaoTwoDonkey/QuickOutPutWord 写得不好,欢迎提出问题 下面说几个phantomjs使用过程中遇到的 ...

  10. Devexpress VCL Build v2013 vol 13.2.2 发布

    devexpress 2013 的第二个大版本出来了,一如既往, 基本上还是一个大补丁包.各位看官,自己看. What's New in 13.2.2 (VCL Product Line)   New ...