这次模拟赛真的,,卡常赛。

The solution of T1:

std是打表,,考场上sb想自己改进匈牙利然后wei了(好像匈牙利是错的。

大力剪枝搜索。代码不放了。

  

  这是什么神仙D1T1,爆蛋T1,好像A了它或拿分的就几个人,,


The solution of T2:

题解是这么写的:和八皇后很像,八皇后是x+y和x-y来判重,这里就k1x+k2y来判重。

从各个点引出直线,带入原点检验方程即可。

注:

x/y = Δx/Δy

x*Δy = Δx*y

下面代码用了这个原理,省去了gcd(或除法)的时间复杂度或精度问题

Code:

#include <cstdio>
#include <map>
#include <algorithm>

using namespace std;

;
map <long long,int> M[N];
map <long long,int> T;
int n,m,i,j,k,q,tx,ty,s,num;
int x[N],y[N],dx[N],dy[N];
bool pd;

?a:gcd(b,a%b);}
int main()
{
    freopen("laser.in","r",stdin);
    freopen("laser.out","w",stdout);
    scanf("%d",&n);
    ;i<=n;i++)
    {
        scanf("%d%d",&tx,&ty);
        ) tx=-tx,ty=-ty;
        y[i]=-tx,x[i]=ty;
        tx=abs(y[i]),ty=abs(x[i]),k=gcd(tx,ty);
        y[i]=y[i]/k,x[i]=x[i]/k;
        ;j<i;j++)
            if ((x[i]==x[j]) && (y[i]==y[j]))
            {
                i--,n--;
                break;
            }
    }
    scanf("%d",&m);
    ;i<=m;i++)
    {
        scanf("%d%d",&tx,&ty);
        ;j<=n;j++)
            M[j][1LL*tx*x[j]+1LL*ty*y[j]]++;
        T[tx*()+ty]++;
    }
    scanf("%d",&q);
    ;i<=q;i++)
    {
        s=;
        scanf("%d%d",&tx,&ty);
        ;j<=n;j++)
            s=s+M[j][1LL*tx*x[j]+1LL*ty*y[j]];
        s=s-(n-)*T[tx*()+ty];
        printf("%d\n",s);
    }
    ;
}

T2

  所以,我只拿了60分。神tmD1T2


 The solution of T3:

    剪枝细节,,一堆的。不过和D1T3难度低一点吧。

    考虑用 SPFA 迭代计算到达每个点存活且残余的最大 HP。(请注意加粗字体,旁边的大佬ldl因此 100->90 )
    考虑到 SPFA 本 身是一个广搜的过程,自然也可以类似广搜地统计最少时间。因此,直接跑 SPFA 即可。时间复杂度 O(EAns)。
 
    Code:
    

#include <cstdio>
#include <algorithm>

using namespace std;

],next[],dist[],first[];
],d[],g[],h[],p[],r[];
int i,k,m,n,x,y,z,head,tail,sum_edge;

int main()
{
    freopen("game.in","r",stdin);
    freopen("game.out","w",stdout);
    scanf("%d%d%d",&n,&m,&k);
    ;i<=n;i++)
        scanf("%d",&r[i]);
    ;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        sum_edge++,edge[sum_edge]=y,next[sum_edge]=first[x],dist[sum_edge]=z,first[x]=sum_edge;
        sum_edge++,edge[sum_edge]=x,next[sum_edge]=first[y],dist[sum_edge]=z,first[y]=sum_edge;
    }
    d[]=p[]=k;
    tail++,g[tail]=,h[tail]=;
    ;head<=tail;head++)
    {
        if (g[head]==n)
        {
            printf("%d\n",h[head]);
            ;
        }
        ])
            for (i=head;i<=tail;i++)
                d[g[i]]=p[g[i]],b[g[i]]=;
        ;i=next[i])
            if ((d[g[head]]>dist[i]) && (min(d[g[head]]-dist[i]+r[edge[i]],k)>p[edge[i]]))
            {
                p[edge[i]]=min(d[g[head]]-dist[i]+r[edge[i]],k);
                if (! b[edge[i]])
                    tail++,g[tail]=edge[i],h[tail]=h[head]+,b[edge[i]]=;
            }
    }
    printf("-1\n");
    ;
}

代码是老师的

    

    这题我莫名从60/70 -> 30???

    

  神tmT1T2

2019.7.26 NOIP 模拟赛的更多相关文章

  1. 【2019.7.26 NOIP模拟赛 T3】化学反应(reaction)(线段树优化建图+Tarjan缩点+拓扑排序)

    题意转化 考虑我们对于每一对激活关系建一条有向边,则对于每一个点,其答案就是其所能到达的点数. 于是,这个问题就被我们搬到了图上,成了一个图论题. 优化建图 考虑我们每次需要将一个区间向一个区间连边. ...

  2. 【2019.7.26 NOIP模拟赛 T1】数字查找(figure)(数学)

    推式子 我们设\(n=kp+w\),则: \[(kp+w)a^{kp+w}\equiv b(mod\ p)\] 将系数中的\(kp+w\)向\(p\)取模,指数中的\(kp+w\)根据欧拉定理向\(p ...

  3. 【2019.8.20 NOIP模拟赛 T2】小B的树(tree)(树形DP)

    树形\(DP\) 考虑设\(f_{i,j,k}\)表示在\(i\)的子树内,从\(i\)向下的最长链长度为\(j\),\(i\)子树内直径长度为\(k\)的概率. 然后我们就能发现这个东西直接转移是几 ...

  4. 【2019.8.20 NOIP模拟赛 T3】小X的图(history)(可持久化并查集)

    可持久化并查集 显然是可持久化并查集裸题吧... 就是题面长得有点恶心,被闪指导狂喷. 对于\(K\)操作,直接\(O(1)\)赋值修改. 对于\(R\)操作,并查集上直接连边. 对于\(T\)操作, ...

  5. 【2019.7.20 NOIP模拟赛 T2】B(B)(数位DP)

    数位\(DP\) 首先考虑二进制数\(G(i)\)的一些性质: \(G(i)\)不可能有连续两位第\(x\)位和第\(x+1\)位都是\(1\).因为这样就可以进位到第\(x+2\)位.其余情况下,这 ...

  6. 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)

    打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...

  7. 【2019.7.22 NOIP模拟赛 T1】麦克斯韦妖(demon)(质因数分解+DP)

    暴力\(DP\) 先考虑暴力\(DP\)该怎么写. 因为每个序列之后是否能加上新的节点只与其结尾有关,因此我们设\(f_i\)为以\(i\)为结尾的最长序列长度. 每次枚举一个前置状态,判断是否合法之 ...

  8. 【2019.7.25 NOIP模拟赛 T3】树(tree)(dfs序列上开线段树)

    没有换根操作 考虑如果没有换根操作,我们该怎么做. 我们可以求出原树的\(dfs\)序列,然后开线段树维护. 对于修改操作,我们可以倍增求\(LCA\),然后在线段树上修改子树内的值. 对于询问操作, ...

  9. 【2019.7.24 NOIP模拟赛 T1】道路建设(road)(水题)

    原题与此题 原题是一道神仙不可做题,两者区别在于,原题不能有重边和自环. 然而,这题可以有重边... 于是这题就变成了一道大水题. 此题的解法 考虑如何构造. 对于\(n\le10^4\)的情况: 对 ...

随机推荐

  1. StatusStrip 分类: C# 2015-07-23 11:58 2人阅读 评论(0) 收藏

    通过StatusStrip显示窗体状态栏 同时将状态栏分成三部分 居左边显示相关文字信息 中间空白显示 居右边显示时间信息 1.创建窗体及添加StatusStrip   默认StatusStrip名称 ...

  2. k3 cloud库存管理中的直接调拨单权限分配出现问题

    k3 cloud中给直接调拨单分配了对应的权限,但是客户端无法查看到对应的单据 解决办法: 是应为没有发布到对应的客户端和浏览器端,打开bos,找到对应的单据并点击发布,找到对应的目录,如图所示: 把 ...

  3. kali Linux 入门(一)

    一.描述 1.基于Debian Linux 发行版 2013年3月13日 2.包含约600个安全工具 3.定制 安全稳定的内核 4.前身是BackTrack(2013年停止维护) 5.官方机构:Off ...

  4. redis还要做

    RedisTemplate对各种数据类型的操作记录. Redis深度历险:核心原理和应用实践 https://www.cnblogs.com/kismetv/p/8654978.html

  5. JDBC和驱动类Driver

    什么是JDBC? JDBC(Java DataBase Connectivity),是一套面向对象的应用程序接口(API),制定了统一的访问各类关系数据库的标准接口,为各个数据库厂商提供了标准的实现. ...

  6. Redis Key过期事件

    解决方案1: 可以利用redis天然的key自动过期机制,下单时将订单id写入redis,过期时间30分钟,30分钟后检查订单状态,如果未支付,则进行处理但是key过期了redis有通知吗?答案是肯定 ...

  7. CentOS7 安装xen(在虚拟机上成功,实体机测试死机!)

    此文章只做操作记录,其中有些地方可能漏了!!我只贴出自己的操作过程!其它有差别的地方请自己网上查找参考! 只有在全虚拟化下才能安装Windows,这就需要有硬件支持,并在BIOS中开启Virtuali ...

  8. instanceof是Java的一个二元操作符(运算符)

    instanceof是Java的一个二元操作符(运算符),也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实例,返回的是boolean类型的数据.用它来判断某个对象是否是某个Clas ...

  9. 理解Java构造器中的"this"

    Calling Another Constructor if the first statement of a constructor has the form this(...), then the ...

  10. C#-弄懂泛型和协变、逆变

    脑图概览 泛型声明和使用 协变和逆变 <C#权威指南>上在委托篇中这样定义: 协变:委托方法的返回值类型直接或者间接地继承自委托前面的返回值类型; 逆变:委托签名中的参数类型继承自委托方法 ...