1.前言

  = =

  感觉自己其实没发过关于考试的博客过...

  今天是一个平安的夜晚,漆黑的夜被霓虹划分成网络,很适合发题。

2.num9九数码问题

  传统8数码改一下...只询问一个状态,所以很容易搞,正向广搜即可。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>using namespace std;const int maxn=362880+10;int ans[9];
int level[9];
int a[maxn][9];
int que[maxn],rec[maxn],pre[maxn];
int Hash[maxn];int get_h(int a[]){int sum=0,cnt;for(int i=0;i<9;i++){cnt=0;for(int j=i+1;j<9;j++)if(a[j]<a[i]) cnt++;sum+=cnt*level[8-i];}return sum;
}void change1(int L[],int N[]){N[0]=L[3],N[1]=L[0],N[2]=L[1];N[3]=L[6],N[4]=L[4],N[5]=L[2];N[6]=L[7],N[7]=L[8],N[8]=L[5];
}void change2(int L[],int N[]){N[0]=L[0],N[1]=L[1],N[2]=L[2];N[3]=L[5],N[4]=L[3],N[5]=L[4];N[6]=L[6],N[7]=L[7],N[8]=L[8];
}void print(int a[]){printf("%d %d %d\n%d %d %d\n%d %d %d\n\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
}void dfs(int p){if(!p) return;dfs(pre[p]);print(a[p]);
}void BFS(){int H=0,T=2,key;pre[1]=0;key=get_h(a[1]);Hash[key]=1;que[1]=key;while(H+1<T){H++;change1(a[H],a[T]);key=get_h(a[T]);if(!Hash[key]){Hash[key]=Hash[que[H]]+1,que[T]=key,rec[key]=T,pre[T]=H,T++;if(!key){int p=T-1;printf("%d\n",Hash[0]-1);dfs(p);return ;}}change2(a[H],a[T]);key=get_h(a[T]);if(!Hash[key]){Hash[key]=Hash[que[H]]+1,que[T]=key,rec[key]=T,pre[T]=H,T++;if(!key){int p=T-1;printf("%d\n",Hash[0]-1);dfs(p);return ;}}}printf("UNSOLVABLE");
}int main(){freopen("num9.in","r",stdin);freopen("num9.out","w",stdout);level[0]=1;for(int i=1;i<=9;i++) level[i]=level[i-1]*i;for(int i=0;i<9;i++)scanf("%d",&a[1][i]);BFS();return 0;
}

View Code

3.lunch午餐问题

  这种题看上去是贪心的样子,于是考场上先推一推式子,找找关系。

  

  感觉这一步还是比较好弄的,但是因为有两个队列,究竟放那一个去呢?

  当时想,要不贪心放在等候时间较短的那边?

  后来觉得不靠谱,因为要是下一个等待时间太长,导致后面的全部放了都没他慢,这时候放在更长的那边可能好些。

  就想要不然增加几个选择,枚举一下每一列放几个?...可是枚举的时候出现问题了——没有考虑时间的影响,而是将时间作为结果放在的数组里。

  事实上,只有两个都确定时,这个状态才算完全固定,而若是像我将前i个放j个在第一个队列这种其实不具有转移的性质的。

  因为如果在f[i][j]取到最优值的时候,不一定时间上就是最优。所以说这样的转移不一定就是最优值,因为转移的时候调用了一个由转移得到的值!

  事后终于醒悟了。感觉自己定这个状态就是为了转移方程好转移啊!

  设计的时候一定要注意需要什么信息,什么信息可以用来转移,什么信息只是做一个结果。[果然这个叫信息竞赛啊...]感觉今天终于醒悟还是蛮好的。

  上最后AC代码。

  

#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;const int maxn=210;
const int INF=0x7fffffff;int n;
int ans;struct Node{int a,b;
}s[maxn];bool cmp(const Node &A,const Node &B){return A.b>B.b;
}int sum[maxn];
int f[maxn][maxn*maxn];int main(){freopen("lunch.in","r",stdin);freopen("lunch.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&s[i].a,&s[i].b);sort(s+1,s+n+1,cmp);for(int i=1;i<=n;i++)sum[i]=sum[i-1]+s[i].a;memset(f,0x7f,sizeof(f));f[0][0]=0;for(int i=1;i<=n;i++)for(int j=0;j<=sum[i-1];j++){f[i][j]=min(f[i][j],max(f[i-1][j],sum[i-1]-j+s[i].a+s[i].b));f[i][j+s[i].a]=min(f[i][j+s[i].a],max(f[i-1][j],j+s[i].a+s[i].b));}ans=INF;for(int i=0;i<=sum[n];i++)ans=min(ans,f[n][i]);printf("%d",ans);return 0;
}

View Code

4.沼泽鳄鱼

5.梦幻折纸

  

Problem

  给一个N*M的格子,每个格子都写有一个1~N*M的数字。判断是否能将这张格子折叠成1*1,使得第1层标号为1,使得第2层标号为2...,第i层标号为i...。
  1 7
  3 1 7 6 5 4 2
  AllRight

  2 2
  1 2
  3 4
  Cheat

  2 3
  2 1 6
  3 4 5
  Allright

  4 4
  11 12 15 14
  10  9 16 13
   5  8  1  2
   6  7  4  3
  Allright

  对于四个样例,怎么才能折出来呢?

  

  好了...上面究竟怎么折只是娱乐而已。

  分析本质啊,分析本质啊,剥茧抽丝寻找规律啊!

  其实规律很简单...发现在最初网格中相邻的...它们最后一定因为纸的限制在一起咯 [所以单身狗才做不出...]

  但是不同的情侣狗之间却有不同的人生方向

  例如:

  11 12 15 14
  10  9 16 13
   5  8  1  2
   6  7  4  3

  11-12是横向发展的,但是因为要折成一列,所以12-15和它虽然也是横向发展,却要和11-12不同的方向去折。

  11-10是纵向发展的,同理,也有10-5和它方向不同。

  所以总共有四个方向。

  

  我们再分析一下,对于一个中间的节点,就需要折向四个不同的方向。【泄水置平地,各自东西南北流】

  但是两个相同方向的折纸,就不能有相交的元素,例如

  1  3

  2  4

  1-3,2-4是方向完全相同的,但是因为两个相同的折纸一定不能相交。

  

  所以这种状态需要被排除,而如果没有这种状态,是不是就一定可行呢?

  是的,因为除了这种情况外,其他的比如不同向的显然可以,同向包含的也不会出现穿越纸张这种事情了。

  可是有人还是纠结于这个写在纸上,由一个矩形来翻折总觉得不顺手。

  那现在就将你的大脑勾回变成一张矩形白纸,将每一列开始折叠,方向相同的之间不是包含就是相离,感觉还是很好的吧...

  但是列上的,很多可能需要像样例4一样出现塞入这种操作。需要和行操作同时进行,有点难以想象,但是感觉只要符合了条件,进行折叠总是对的。

  感受完毕,代码呈上。

#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;const int maxn=510;typedef int array[maxn][maxn];
array map, pam;int t,n,m;
int link[maxn*maxn];void newarc(int x,int y){if(x<y)link[x]=y,link[y]=-1;elselink[y]=x,link[x]=-1;
}bool check(int n,int m,array &map,int x){int i,j,top,stack[maxn*maxn];memset(link,0,sizeof(link));for(int i=1;i<n;i++)if((i&1) == x)for(int j=1;j<=m;j++)newarc(map[i][j],map[i+1][j]);top=0;for(int i=1;i<=t;i++){if(link[i]>0)stack[++top]=link[i];else if(link[i]<0){if(stack[top]!=i) return false;top--;};}return true;
}int main(){freopen("foldgirl.in","r",stdin);freopen("foldgirl.out","w",stdout);int kase;scanf("%d",&kase);while(kase--){scanf("%d%d",&n,&m);t=n*m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&map[i][j]),pam[j][i]=map[i][j];if(check(n,m,map,0) && check(n,m,map,1) && check(m,n,pam,0) && check(m,n,pam,1))puts("AllRight");elseputs("Cheat");}return 0;
}

View Code

转载于:https://www.cnblogs.com/Robert-Yuan/p/5074578.html

TEST ON 平安夜相关推荐

  1. 不是我散漫了,是病了——书于平安夜

    平安夜,不太了解节日的意义.在周边,就是看到很多圣诞树,以及圣诞树上闪烁的灯. 平安夜,对于我,是第一次恋爱,第一次确定恋爱关系的夜晚.恋人,就是现在的老婆. 昨晚,去看病.不得不看了,喉咙痛,本来想 ...

  2. 关于不过洋节的通知_蟠桃宫小学关于平安夜、圣诞节安全教育告家长通知书

    贵阳市南明区蟠桃宫小学 关于平安夜.圣诞节安全教育 告家长通知书 尊敬的家长朋友: 2020年圣诞节即将来临,根据省.市.区关于岁末年初安全稳定相关要求,确保节日期间安全稳定,希望家长配合做好以下工作 ...

  3. 二倍图三倍图什么意思_搞笑GIF图:搞笑GIF图:平安夜为什么见不到“圣诞老人”...

    搞笑GIF图:搞笑GIF图:平安夜为什么见不到"圣诞老人",答案就在这-- 1.来,我给大家表演个抓知了,看好了.. 2.功夫大爷再次现身闹市街区,这次他表演的是一字马. 大爷:小 ...

  4. 关于不过洋节的通知_平安夜、圣诞节安全教育告家长通知书

    平安夜.圣诞节安全教育告家长通知书 尊敬的家长.亲爱的同学: 2020年圣诞节即将来临,根据省.市.区关于岁末年初安全稳定相关要求,确保节日期间安全稳定,希望各位同学及家长配合做好以下工作: 一.认识 ...

  5. 苹果员工号召罢工 呼吁顾客平安夜不购买苹果产品

    近日,据国外媒体报道,苹果今年历经一系列员工维权问题,继此前"#AppleToo"运动之后,苹果员工组织最近又在网络上呼吁进行平安夜罢工行动. 据悉,一个名叫"Apple ...

  6. 平安夜海报PNG免扣素材来了,全都在这|搜图114

    平安夜是指12月24日的晚上 是圣诞夜,也是圣诞前夕 大部分基督教国家是圣诞节的一部分 但现在,由于中西文化的融合 已成为世界性的一个节日 也是品牌借势的重点节日 要做海报缺少素材? 平安夜海报PNG ...

  7. 平安夜、圣诞节设计素材和灵感|撒糖(PNG免扣素材)

    平安夜.圣诞节这么大个节日,在工作面前算啥,海报搞起来.简单来说,由搜图114带来适合配合节日海报设计素材,有圣诞老人麋鹿等圣诞元素,格式上PNG免扣矢量源文件,方便在软件中使用. 更多 到 搜图11 ...

  8. 平安夜福利,送3本《从0到1搭建自动化测试框架》

    VOL 338 24 2021-12 今天距2022年8天 这是ITester软件测试小栈第338次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 09 ...

  9. 圣诞祝福网页_平安夜圣诞节适合发朋友圈的文案,快快收藏起来!

    汇 琦 关注汇琦传媒更多精彩内容 传 媒 铃铃铃,铃儿响叮当...... 今天晚上就是平安夜啦 每逢节日,少不了要发朋友圈 小琦编辑了一波超级适合发朋友圈的文案 快快收藏起来,复制粘贴发朋友圈去 在平 ...

  10. 四二拍用音符怎么表示_2020圣诞平安夜怎么发朋友圈?朋友圈关于平安夜经典语录精选...

    每一年的12月24日是圣诞节前夕平安夜,平安夜传统上是摆设圣诞树的日子,是送出祝福的日子.那么2020圣诞平安夜怎么发朋友圈?下面来看看2020朋友圈关于平安夜经典语录精选吧! 1.圣诞平安夜,有雪花 ...

最新文章

  1. CentOS的Gearman安装与使用无错版
  2. mysql8.0.28忘记密码
  3. WordPress开发之WP Custom Register Login插件试用
  4. 九度-1463-招聘会
  5. php验证码--图片
  6. layui导出html到pdf,layui打印html页面转成pdf
  7. wan口有流量但电脑上不了网_wan口有ip地址但是上不了网怎么办?
  8. 转 Grand Central Dispatch 基础教程:Part 1/2 -swift
  9. java中来获取UUID
  10. 16.对极几何——极线约束,收敛相机,平行图像平面,两个立体对 测验_2
  11. 用后端接口调试工具Insomnia发送请求
  12. [论文翻译]Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
  13. idea中java导包快捷键_JAVA入门:IntelliJ Idea 常用快捷键
  14. 软件测试实例:登录功能怎么设计测试用例
  15. 洛谷分支结构题单前一半 深基例2到例9 P5710 数的性质 P5711 闰年判断 P5712 Apples P5713 洛谷团队系统 P5714 肥胖问题 P5715 三位数排序 P5716月份天数
  16. 【PyTorch】切记:GeForce RTX 3090 显卡仅支持 CUDA 11 以上的版本!
  17. NiFi 的使用心得
  18. Python使用正则表达式爬取网站图片信息
  19. SQL面试题 (一)
  20. 进制转换器的c代码实现

热门文章

  1. 快递员凌晨送件,将下班程序员误认成小偷
  2. UC大裁员:全体带薪休假至3月31日,补偿措施羡煞网友!
  3. 一致性hash算法_一致性 Hash 算法的实际应用
  4. RDS数据库全量恢复方案
  5. ASP.NET-第八天-加强课程
  6. Mysql数据库分库和分表方式(常用)
  7. 安卓ListView行详细内容展示页编写和下拉刷新实现
  8. systemd和sysv服务管理和配置
  9. 关于时间格式的解析问题
  10. Android自定义View的构造函数