这题DP,想明白了就可以了。
这就像个坐标系一样(好像本来就是。。。)

而在其上面,有很多个点。

咳咳,有点丑。
然后呢,我们就按照x坐标排个序,y也顺便排一下(第二关键字)
这样子,在我们DP的时候,
或者说对于i,我们可以满足a[i].x<=a[i+1…n].x
所以,我们就可以不记录对于i点射向左边的了。
而我们要记录的,是它射向右边的最上面的点(j),射向右边的最下面的点(k),射向上面的最下面的点(l),射向下面的最上面的点(o)。

也就是f[i][j][k][l][o]!!!

要转移的话,我们便枚举当前点所射的方向。
我这里设向上为0,向左为1,向下为2,向右为3。
然后判断一下它是否合法即可,记得更新一下j,k,l,o。(详细见标)
上标:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define mo 998244353
using namespace std;
struct node{int x,y;}a[55];
int n,b[55],f[2][55][55][55][55],x=1,las=0,t,tt;
bool bz[55][4];
ll ans=0;inline int read()
{int x=0,f=0; char c=getchar();while (c<'0' || c>'9') f=(c=='-') ? 1:f,c=getchar();while (c>='0' && c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return f ? -x:x;
}int cmp(node x,node y) {return x.x==y.x ? x.y<y.y:x.x<y.x;}int main()
{freopen("C.in","r",stdin);freopen("C.out","w",stdout);n=read();for (int i=1;i<=n;i++)a[i].x=read(),a[i].y=read();sort(a+1,a+n+1,cmp);for (int i=1;i<=n;i++)for (int j=i+1;j<=n;j++)if (a[i].x==a[j].x){if (a[i].y<a[j].y) bz[i][0]=bz[j][2]=1;else bz[i][2]=bz[j][0]=1;}else if (a[i].y==a[j].y){if (a[i].x>a[j].x) bz[i][1]=bz[j][3]=1;else bz[i][3]=bz[j][1]=1;}f[0][0][0][0][0]=1;for (int i=1;i<=n;i++){for (int j=0;j<i;j++)for (int k=0;k<i;k++)for (int l=0;l<i;l++)for (int o=0;o<i;o++){if (!f[las][j][k][l][o]) continue;
//                      j:最上面的3,k:最下面的3,l:最下面的0,o:最上面的2
//                      i->0if (!bz[i][0] && (a[i].y>a[j].y || j==0)){t=(a[i].y<a[l].y || l==0) ? i:l;(f[x][j][k][t][o]+=f[las][j][k][l][o])%=mo;}
//                      i->1if (!bz[i][1] && (a[i].y<a[l].y || l==0) && (a[i].y>a[o].y || o==0)){(f[x][j][k][l][o]+=f[las][j][k][l][o])%=mo;}
//                      i->2if (!bz[i][2] && (a[i].y<a[k].y || k==0)){t=(a[i].y>a[o].y || o==0) ? i:o;(f[x][j][k][l][t]+=f[las][j][k][l][o])%=mo;}
//                      i->3if    (!bz[i][3]){t=(a[i].y>a[j].y || j==0) ? i:j;tt=(a[i].y<a[k].y || k==0) ? i:k;(f[x][t][tt][l][o]+=f[las][j][k][l][o])%=mo;}}las=x,x^=1;for (int j=0;j<i;j++)for (int k=0;k<i;k++)for (int l=0;l<i;l++)for (int o=0;o<i;o++)f[x][j][k][l][o]=0;}for (int j=0;j<=n;j++)for (int k=0;k<=n;k++)for (int l=0;l<=n;l++)for (int o=0;o<=n;o++)ans+=f[las][j][k][l][o];printf("%lld\n",ans%mo);return 0;
}

【五校联考3day2】C相关推荐

  1. 【五校联考3day2】B

    Description 小D是雅礼高一著名的神犇,在NOI同步赛中获得了满分的优异成绩,而全国没有任何其他人获得如此的成绩. 某天晚上,高一内部在讨论一道题目,然而包括小D之内的各种神犇都毫无头绪,这 ...

  2. 【五校联考3day2】A

    Description 帝国时代3是一款十分刺激的RTS游戏.你需要控制自己的一块殖民地,发展殖民地的经济和军事,最终打败其他殖民地.小L是这个游戏的狂热爱好者.一次小L打算打AI试试身手. 小L发展 ...

  3. 湖南长郡2021高考成绩查询时间,2021年湖南新高考六校、长郡十五校联考时间公布...

    2021年湖南新高考六校.长郡十五校联考时间公布 导读:距离2021年高考时间仅剩不到一百天,各个省份都的高三学子都进入紧张阶段.开始了各种模拟考试.2021届湖南省炎德英才大联考的考试时间也已经公布 ...

  4. 4246. 【五校联考6day2】san (Standard IO)

    4246. [五校联考6day2]san (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits D ...

  5. jzoj4230. 【五校联考4day1】淬炼神体(B组——Day3)

    jzoj4230. [五校联考4day1]淬炼神体 题目 Description 王仙女将你提供的答案填在<葵花宝典>上,突然,宝典发出耀眼的白光,一股强大的吸力瞬间将仙女吸入宝典中. 一 ...

  6. JZOJ 4238. 【五校联考5day2】纪念碑

    Description 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一个长为n,宽为m的矩形.它由n* m个1*1的 ...

  7. 【五校联考7day1】n染色

    Description WYF画了一个极为不规则的n边形,画面太美简直不看,没有任意两条边长度是相等的.因为形状太难看了,做他同桌的CWQ看不下去了,趁着WYF上厕所的时间准备用他书包里的m种颜色的彩 ...

  8. 【五校联考7day2】QYQ的图

    Description 给你一个n个点,m条边的无向图,每个点有一个非负的权值ci,现在你需要选择一些点,使得每一个点都满足: 如果这个点没有被选择,则与它有边相连的所有点都必须被选择. 问:满足上述 ...

  9. 【五校联考7day1】游戏

    Description WYF从小就爱乱顶,但是顶是会造成位移的.他之前水平有限,每次只能顶出k的位移,也就是从一个整点顶到另一个整点上.我们现在将之简化到数轴上,即从 一个整点可以顶到与自己相隔在k ...

  10. 【五校联考6day2】san

    Description 小明经常去N 个地点,其中有些地点之间有直接的无向道路(共M 条这样的道路),可以直接互相到达,这些道路的长短不一.由于小明对这些道路都很熟悉,无论起点和终点在哪里,总能走最短 ...

最新文章

  1. urbansound8k下载地址
  2. qq机器人自动回复带脚本可以实现吗_有人用Python写了个自动亏钱脚本,还能微信实时通知!
  3. python绘制好几个子图_python绘制多个子图的实例
  4. Python打断点(亲测)
  5. mysql锁机制(Innodb引擎)
  6. isight参数优化理论与实例详解_案例1(ISIGHT集成ADAMS CAR方法实现)
  7. Windows7下硬盘安装RHEL 6.1
  8. 【毕业设计】基于PHP的网上书店的设计(论文)
  9. 剑指offer——面试题63:二叉搜索树的第k个结点
  10. eigen与opencv矩阵转换,eigen与matlab函数比照
  11. IPEX: SMA/UFL/IPEX/IPX接头,各代区别
  12. 对达内想说的八句话!(也适合各种参加培训的人)
  13. 电路仿真软件用matlab,基于MATLAB的电路仿真软件设计.doc
  14. 苹果新版iOS疯狂致敬安卓和微信,新Mac搭载自研CPU!这届苹果开发者大会料足槽点密...
  15. Dynamics 365 配置IFD的向导界面下一步按钮禁用的解决办法
  16. 实验六(函数) 2.编写函数 int fac(int x)计算 x!的值。在主函数中输入 n 和 m 的值,通过调用函数 fac 计算Cnm 的值(要求分别用递归和非递归的方法编写函数 fac)。
  17. 考公 or 直接找工作,该怎么选?
  18. 5-Azidopentanoic acid methyl ester,5-叠氮基戊酸甲酯CAS号:127811-93-2的分子式是C6H11N3O2
  19. 戴维营第七天上课总结
  20. 350导热油 shell_导热油320与350的区别,克拉克给你详细解说

热门文章

  1. ligerui demo php,LigerUI——天外飞仙
  2. 史玉柱自述:我是如何做游戏策划
  3. absolute 与overflow:hidden常见bug
  4. php中alight是什么意思,进阶PHP需要注意的一些点
  5. grep exclude
  6. vivado联合modelsim报错:vsim-19 Failed to access library ‘unisims_ver‘ at ‘unisims_ver‘
  7. 关于虚拟机访问网页证书错误的问题?
  8. java后端getmonth_Java YearMonth getMonth()用法及代码示例
  9. FFmpeg —— ffplay源码 - 制作桌面动态壁纸
  10. 你知道Linux和Windows通用的复制和粘贴快捷键是什么嘛?