10-14 考试

7点开始考试,第一题傻逼题啊,直接取模过程中加上商就可以了,切掉切掉。

1、光剑
(sword.pas/c/cpp)
【题目描述】
小林和亮亮各有一把光剑,长度分别为 a 和 b,他们拿光剑进行比试。每一
回合,长光剑会砍向短光剑,砍完后,短光剑完好无损,而长光剑则被截成两段,
被截去的长度恰好等于短光剑的长度。若两把光剑长度相等,则比试结束。请问
小林和亮亮将比试多少回合?
【输入格式】
第一行一个整数 T,表示数据组数。
接下来 T 行每行两个正整数 a,b,表示初始状态光剑的长度。
【输出格式】
每组数据输出一个整数,表示能进行几个回合的比试。
【样例输入】
3
1 8
3 7
6 6
【样例输出】
7
4
0
【数据规模】
对于 40%的数据,0 < a,b <= 1000, 1 <= T <= 20;
对于 100%的数据,0 < a,b <= 10^18,1 <= T <= 1000。

code:

#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
inline int read(){int sum=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0';ch=getchar();}return sum*f;
}
int t,a,b,ans;
long long work(long long x, long long y){if(x<y)swap(x, y);if(y==1)return x-1;if(x==y)return 0;if(y==0)return -1;else return work(y,x%y)+x/y;
}
signed main(){freopen("sword.in","r",stdin);freopen("sword.out","w",stdout);t=read();for (int i=1;i<=t;i++){long long x, y;x=read();y=read();printf("%lld\n",work(x, y));}fclose(stdin);fclose(stdout);return 0;
}

7点25开始看T2,第一眼感觉很恶心啊,先不管打一个\(n^5\)的暴搜再说。

打完暴搜立马就想起来昨天ZAGER出的T2,\(meeting  in  the  middle\) 啊,先搜前三层,再搜后两层,然后lower_bound找相反数就行了,这就完了。

2、化零
(zero.pas/c/cpp)
【题目描述】
小林拥有 2 个集合,亮亮拥有 3 个集合,这五个集合大小相等,且集合中包
含的都是整数。现在他们两个要进行心算比赛。比赛的规则是,将这五个集合放
在一起,谁能先从每个集合中各选一个数,使得选出的五个数之和为 0,谁就获
得胜利。由于这五个集合都不小,而小林和亮亮事先并不知道是否能存在这样的
五个数,因此他们决定先把五个集合都交给你,由你来编程判断是否存在符合条
件的五个数。
【输入格式】
第一行一个整数 N,表示集合的大小。
接下来五行每行 N 个整数,表示这五个集合内的元素。
【输出格式】
如果能找到符合条件的五个数,则输出“YES”,否则输出“NO”。
【样例输入】
3
1 -2 9
-1 2 1
-3 5 1
-1 7 6
-4 -1 -7
【样例输出】
YES
【数据规模】
对于 30%的数据,1 <= N <= 20;
对于 50%的数据,1 <= N <= 100;
对于 100%的数据,1 <= N <= 200,-10^8 <= a[i] <= 10^8,a[i]为集合中元素

code:

#include<iostream>
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
const int wx=8000017;
inline int read(){int sum=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0';ch=getchar();}return sum*f;
}
int a[wx],b[wx];
int s[70][4170];
int cnt,tot,num,n;
void dfs(int step,int num){if(step>=4){a[++cnt]=num;return;}for(int i=1;i<=n;i++){dfs(step+1,num+s[step][i]);}
}
void DFS(int step,int num){if(step>=3){b[++tot]=num;return;}for(int i=1;i<=n;i++){DFS(step+1,num+s[step+3][i]);}
}
signed main(){freopen("zero.in","r",stdin);freopen("zero.out","w",stdout);n=read();for(int i=1;i<=5;i++){for(int j=1;j<=n;j++){s[i][j]=read();}}dfs(1,0);DFS(1,0);sort(a+1,a+1+cnt);for(int i=1;i<=tot;i++){int tmp=lower_bound(a+1,a+1+cnt,-b[i])-a;if(a[tmp]==-b[i]&&tmp<=cnt&&tmp>=1){printf("YES\n");return 0;}}printf("NO\n");fclose(stdin);fclose(stdout);return 0;
}

八点开始肝T3,看起来好难啊,鬼特么2048,不会。

但肯定是DP啊,瞎鸡儿设状态吧,但是感觉复杂度不太对劲啊,,二进制拆位走起来,溜了溜了。

3、2048
(2048.pas/c/cpp)
【题目描述】
小林和亮亮最近正在重温 2048 这款游戏。由于他们的游戏水平高超,觉得
没有什么挑战性,于是决定自己设计一款类似的游戏。
他们设计的游戏中,数字排成了一个线性的序列,每次玩家可以将序列中任
意两个相同的数 a 合并,成为一个新的数 2*a,当合并出 2048 时游戏即获得胜
利。设计完后,他们发现这个游戏比原来的版本更加简单了,于是他们就开始计
算,对于一个给定的长度为 n 的序列,它共有多少子序列可以合并出 2048。请
给出这个数模 998244353 后的值。
【输入格式】
第一行有一个整数 n。
第二行 n 个整数 Ai,表示数列中的数。
【输出格式】
一个整数,即为所求的答案。
【样例输入】
2
2048 2048
【样例输出】
3
【数据规模】
对于 40%的数据,n <= 20;
对于 70%的数据,n <= 500;
对于 100%的数据,1 <= n <= 100000,1 <= Ai <= 2048。

code:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#define int long long
using namespace std;
const int wx=100017;
const int mod=998244353;
int n,cnt;
int a[20],flag[wx],WX[20];
int a1[wx],a2[wx],a3[wx];
int f[20][wx];
inline int read(){int sum=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0';ch=getchar();}return sum*f;
}
int ksm(int a,int b){int re=1;while(b){if(b&1)re=re*a%mod;a=a*a%mod;b>>=1;}return re;
}
void pre(){memset(flag,-1,sizeof(flag));for(int i=0;i<=11;i++){flag[1<<i]=i;WX[i]=2048/(1<<i);}a1[0]=1;for(int i=1;i<wx;i++)a1[i]=a1[i-1]*2%mod;a3[0]=a2[0]=1;for(int i=1;i<wx;i++){a3[i]=a3[i-1]*i%mod;a2[i]=ksm(a3[i],mod-2);}
}
void jia(int &a,int b){a+=b;if(a>=mod)a-=mod;
}
signed main()
{freopen("2048.in","r",stdin);freopen("2048.out","w",stdout);n=read();pre();for(int i=0;i<n;i++){int x;x=read();if(flag[x]==-1)cnt++;else a[flag[x]]++;}memset(f,0,sizeof f);int num=min(a[0],WX[0]);int sum=0,val;for(int i=0;i<=num;i++){val=a3[a[0]]*a2[i]%mod*a2[a[0]-i]%mod;f[0][i]=val;jia(sum,val);}if(WX[0]<a[0])f[0][WX[0]]=(f[0][WX[0]]+a1[a[0]]-sum+mod)%mod;for(int i=1;i<=11;i++){num=min(a[i],WX[i]);sum=0;for(int j=0;j<=num;j++){val=a3[a[i]]*a2[j]%mod*a2[a[i]-j]%mod;jia(sum,val);for(int k=0;k<=WX[i-1];k++)if(f[i-1][k]){int temp=min(j+k/2,WX[i]);jia(f[i][temp],val*f[i-1][k]%mod);}}if(a[i]>WX[i]){val=(a1[a[i]]-sum+mod)%mod;for(int j=0;j<=WX[i-1];j++)if(f[i-1][j])jia(f[i][WX[i]],f[i-1][j]*val%mod);}}printf("%lld\n",f[11][1]*a1[cnt]%mod);return 0;
}

后记总结:
这场考试本来是AK的,但是因为种种原因才考了160分,难受。。。

第二题在debug的时候把\(8*10^6\)改成了\(1*10^6\),后四个点全都RE了,也是够傻逼了。。

第三题没写cstdio,直接暴库了,这可爱的dev,真好。

首先自己的题做的不错,但是还是细节上除了致命的问题,所以要像他们说的一样,把心沉下来,继续加油吧。

转载于:https://www.cnblogs.com/wangxiaodai/p/9785666.html

模拟赛 10-14考试再次翻车记相关推荐

  1. 备战Noip2018模拟赛10(B组) T1 Max 和最大

    10月20日备战Noip2018模拟赛10 T1 Max和最大 题目描述 CYF的黑题,偏题,怪题,黑科技题,大码农题都做腻了,于是她想做一下签到水题,她希望从有一个长度为ň的整数序列(A1,A2,. ...

  2. NOIP模拟赛10 题解

    t3: 题意 给你一棵树,然后每次两种操作:1.给一个节点染色 : 2. 查询一个节点与任意已染色节点 lca 的权值的最大值 分析 考虑一个节点被染色后的影响:令它的所有祖先节点(包括自身)的所有除 ...

  3. [NOIP2018模拟赛10.19]只会暴力报告

    闲扯 今天又是暴力满满(并不)的一天呢 昨天老师说了分数要正态分布,今天看起来...不过暴力分很多,虽然我人太傻逼又没打满 T1 woc?不是说送分的吗,看起来又是个树形DP神题,暴力告辞,链上的搞一 ...

  4. 【NOIP2018 模拟赛04.14】 陪审团

    题解: –这道题其实是 贪心 吧,我们先来分析一波: 1.对于每个s和t,一定有(s-t)个人被甲选了,却没有被乙选上,而他们没有被选上的原因是:y值比那t个被选中的人的y的最小值还要小,或是y值相等 ...

  5. 2021年10月8日模拟赛(保龄奇遇记)

    本场考试考的很撇,值得反思,暴露出很多问题,望及时的拨乱反正,改掉操之过急,心态不稳定的缺点 2021年10月8日模拟赛(保龄奇遇记) 太菜了 T1 话中有话 有些词是多义词.这就导致同一句话可能有多 ...

  6. 10.30 NFLS-NOIP模拟赛 解题报告

    总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...

  7. 【模拟赛】10.15—10.17

    背景: 继国庆自闭四联考之后,确实,是很自闭,还做了些比较疯狂的事情,然后顿悟了很多,然后刚知道怎么去努力,刚知道努力的方法和方向就赶快滚回来写博客了,毕竟是在将近考试的时候出现了问题,还是赶快狗回来 ...

  8. 2020/10/31模拟赛

    CSP第二轮前模拟赛 我太菜了 T1 题目描述 奶牛们对围栏的高度非常敏感.奶牛希望围栏高度既不太矮以至于他们没有安全感,也不太高以至于她们看不见围栏外的天地.所以每头奶牛都有自己喜欢的高度.奶牛有N ...

  9. NOIP模拟赛 17.10.10

    初次见面(firstmeet) [题目背景] 雾之湖边,静得可怕. 露米娅出神凝望.黑白连衣裙,像极了绽放的墨黑和洁白的莲.身边的雾之 湖,倒映着血色天空.酒红的双眸,映照一切.低声浅笑,双臂伸直,她 ...

最新文章

  1. Java8-Lambda表达式
  2. strcpy与面试官
  3. C#温故而知新学习系列之XML编程—Xml写入器XmlWriter类(三)
  4. Android开发之Java和Calendar日期上一年,上一个月,前一天,前一周的方法
  5. 栈空间和堆空间的区别
  6. python优化网站_[练习] 用PYTHON来优化网站中的图片
  7. Nginx - 配置
  8. Opencv Mat CascadeClassifier cstdio
  9. PropertyGrid仿VS的属性事件窗口
  10. 如何成功安装旧版本火狐,成功安装firebug和firepath插件
  11. Python线程安全的单例模式
  12. python 分词器使用
  13. python如何设置清华镜像源
  14. python走迷宫_python-走迷宫
  15. 3D打印的来临,传统打印机就要玩完了?
  16. 团队作业第五次—项目系统设计与数据库设计
  17. Oracle语法 50道sql语句练习
  18. 成年后常用的资源都从哪里来的?原来是在几个网站里面搜索到的!
  19. 关于如何清除百度全家桶的一些经验
  20. Leetcode- 岛屿数量

热门文章

  1. 女程序员也会有35岁的危机焦虑吗?
  2. 编写一个Java程序,在程序中包含一个Employee类,Employee类包含name、age、salary三个成员变量
  3. Android的第一天
  4. opencv HOG SVM 二
  5. sscanf一小用法
  6. Jsoup获取动态js生成的内容
  7. 【Spark】Spark Class is not registered joins UnsafeHashedRelation kryo
  8. 【算法】剑指 Offer 42. 连续子数组的最大和 【重刷】
  9. 95-10-110-启动-AdminManager
  10. 【深入理解编译】深入理解编译