zoukankan      html  css  js  c++  java
  • loli的搜索测试-5

      今天早上听说不放假感觉很sad,又听说要考试感觉更sad了,早读的时候Juan_feng表示即使考也不会考虫食算,结果上午并没有考试,就自己做了几道题。不得不说做题的决定实在是太明智了,做NOIP历年真题,发现蓝题及以下的搜索题所剩不多,就做了一道引水入城(更巧的是今天洛谷的智推给我推了这个题),感觉思路很妙,唯一有一点不足就是90改到100的过程中只是机械的搬了题解的思路,并没有明白两种写法的区别。

      下午听说要放假,感觉非常开心,结果loli过来找我们说要考试...这就很sad了。点开题目文件一看,感到非常震惊。T1是英文题面,T2是...虫食算!T3是...引水入城!于是就开始做T2,T3,水完之后就开始看T1,首先看的是题目中给出的翻译,可是翻译的质量比较差以至于看不懂,就花了10分钟去看英文的题面,感觉非常不可做呢...后来觉得即使是暴力也得打打才行,所以写了挺长时间弄完了这道题,愉快的跑回了学长学姐们的机房。过了一会loli看到我们在这里,就说不要好高骛远,要脚踏实地的学习,不过我说我会做的题都做完了,于是就被批准留在这里。晚饭后并没有回我们的机房看成绩,然而老师把我们叫回去看。一点开测评包$180$,感觉布星,点开详细信息发现T1爆零,T2超时一个点,T3错了一个点,关键是和上午错的一样,所以说上午的题我果然还是没有理解呢。后来仔细想了一下,又写了总结,突然明白为什么会错了。

      在引水入城这道题中,一个比较重要的性质是每个点覆盖的区间是连续的,这个问题以前我是感性认识的,后来画了图才明白这个结论有一个前提是有解,所以在无解的情况下覆盖的区间不一定连续。在错误的写法中,我是这样判断无解时不能被覆盖的点的个数的:两重循环,外层循环沙漠点,内层循环河岸,用河岸覆盖区间的左右端点来卡沙漠点,如果所有的区间都无法覆盖证明这是一个无法被浇灌的点,但是现在我明白了,在无解的情况下用区间的左右端点去卡是不正确的,所以正确的方法是查看$vis$数组,看看每个沙漠点是否曾被访问过。

      后来发现T1的数据和题目描述不符,改了数据之后我惊奇的发现这题我竟然A了,总分达到了惊人的$280$,果然是暴力出奇迹,比较开心。

      T1 Painting A Board:http://bailian.openjudge.cn/practice/1691/

      
     1 # include <cstdio>
     2 # include <iostream>
     3 # include <cstring>
     4 # define R register int
     5 
     6 using namespace std;
     7 
     8 int m,n,ans;
     9 int a[20],b[20],c[20],d[20],co[20],g[105][105];
    10 int fir[20][20],pai[20];
    11 bool visc[21];
    12 
    13 void dfs(int x,int s,int colo)
    14 {
    15     if(x==n+1)
    16     {
    17         ans=min(ans,s);
    18         return ;
    19     }
    20     if(s>=ans) return ;
    21     bool f;
    22     for (R i=1;i<=n;++i)
    23     {
    24         f=true;
    25         if(pai[i]) continue;
    26         for (R j=1;j<=n;++j)
    27         {
    28             if(fir[i][j]&&pai[j]==false) 
    29             {
    30                 f=false;
    31                 break;
    32             }
    33         }
    34         if(f==false) continue;
    35         pai[i]=true;
    36         if(co[i]==colo)
    37             dfs(x+1,s,colo);
    38         else
    39             dfs(x+1,s+1,co[i]);
    40         pai[i]=false;
    41     }
    42 }
    43 
    44 int main()
    45 {
    46     scanf("%d",&m);
    47     while(m--)
    48     {
    49         ans=1000;
    50         memset(co,0,sizeof(co));
    51         memset(fir,0,sizeof(fir));
    52         memset(g,0,sizeof(g));
    53         scanf("%d",&n);
    54         for (R i=1;i<=n;++i)
    55         {
    56             scanf("%d%d%d%d%d",&a[i],&b[i],&c[i],&d[i],&co[i]);
    57             visc[co[i]]=true;    
    58             for (R j=a[i]+1;j<=c[i];++j)
    59                 for (R k=b[i]+1;k<=d[i];++k)
    60                     g[j][k]=i;
    61         }
    62         for (R i=1;i<=n;++i)
    63         {
    64             if(a[i]==0) continue;
    65             for (R j=b[i]+1;j<=d[i];j++)
    66                 fir[i][g[a[i]][j]]=1;
    67         }
    68         for (R i=1;i<=20;++i)
    69             if(visc[i]) dfs(1,1,i);
    70         printf("%d
    ",ans);
    71     }
    72     return 0;
    73 }
    Paintint A Board

      T2 虫食算:https://www.luogu.org/problemnew/show/P1092

      T3 引水入城:https://www.luogu.org/problemnew/show/P1514

      然后这里再加一个wzx dalao的测试总结作为结束:(他还没写 (他还是没写

      ---shzr

  • 相关阅读:
    求欧拉回路的算法学习
    2020牛客暑期多校训练营(第六场 )C Combination of Physics and Maths(思维)
    2020牛客暑期多校训练营(第六场)E.Easy Construction(思维构造,附图解)
    CF1038D Slime(思维+枚举+贪心)(来自洛谷)
    CF1250B The Feast and the Bus(贪心+枚举)(来自洛谷)
    Codeforces Round #659 (Div. 2) A.Common Prefixes
    IDEA本人亲测可用的破解方法
    Codeforces Round #658 (Div. 2)(A,B博弈,C1,C2)
    2020牛客暑期多校训练营(第四场)B.Basic Gcd Problem(数学)
    2020牛客暑期多校训练营(第三场)B.Classical String Problem(思维)
  • 原文地址:https://www.cnblogs.com/shzr/p/9245206.html
Copyright © 2011-2022 走看看