c++|2021-10-05集训


文章目录

  • 一、寻找到路(P2296)
  • 二、国王游戏(P1080)
    • 1.重载运算符 ~~(现学现用)~~
    • 2.主要数论
    • 3.华丽的主函数
  • 三、书柜的尺寸(P2160)
  • 四、海底珍珠串
    • PS:样例输入中忘了写给出n,测试点中有输入n

一、寻找到路(P2296) 题目传送门
尝试过用dp去写,1小时后心态炸了…
思路:queue&bfs
估分:60分
核心代码:
while(!q.empty()){int x1=q.front(); q.pop(); no3[x1]=1; int dian=x1; if(x1==ex){cout<

实际得分:60分 (真不戳)
二、国王游戏(P1080) 题目传送门
原本只打算water40 ~ 60分的 暴力着暴力着就发现了其中规律,一个大臣的左右手乘积越大,就越要放到队伍后面,前面的大臣不管如何排都不会影响后面大臣(乘法交换律)。
PS:1.贪心得不到最优解 2.答案数值很大,需要高精 (Python党狂笑)
思路:数论 (狂推10分钟,调试两小时) 高精 (写完2分钟,调试两小时)
估分:70 (像我这种手残党,肯定还有玄学错误)
代码:
1.重载运算符 (现学现用)
struct moneyy{ long long left,right; bool operator<(const moneyy x)const{ return left*right

2.主要数论
void I_do_not_know_how_to_do(long long x){ int useful=0; for(re int i=1; i<=ls; ++i) deal[i]*=x; for(re int i=1; i<=ls; ++i){useful+=deal[i]; deal[i]=useful%10; useful/=10; } while(useful!=0) ++ls,deal[ls]=useful%10,useful/=10; } void Maybe_it_is_useful(long long x){ int useful=0; for(re int i=1; i<=10001; ++i) ans[i]=1; la=ls; for(re int i=la; i>=1; --i){useful*=10; useful+=deal[i]; if(useful>=x) ans[i]=useful/x,useful=useful%x; } while(ans[la]==0){ if(la==1)break; --la; } }

PS:改了半天,代码 混乱 “整齐”
3.华丽的主函数
sort(money+1,money+n+1); for(re int i=1; i<=n; ++i){I_do_not_know_how_to_do(money[i-1].left); Maybe_it_is_useful(money[i].right); What_should_I_do____GaoJin(); } for(re int i=lm; i>=1; --i) printf("%d",maxn[i]);

实际得分:20 (玄学错误,真不戳)
感想:玄学错误出现了,有问题吗,问题不大。//TMD再也不用数论了!!!!
PS:高精写了20分,直接暴力60分。。。
三、书柜的尺寸(P2160) 题目折跃门
别问,问就是MC党
可能思路:动态规划+数论
题目太难了!!也没有部分分!!人家就是个小蒟蒻。。。 很显然我没写出来。。。
四、海底珍珠串 c++|2021-10-05集训
文章图片

c++|2021-10-05集训
文章图片

c++|2021-10-05集训
文章图片

c++|2021-10-05集训
文章图片

c++|2021-10-05集训
文章图片

c++|2021-10-05集训
文章图片

c++|2021-10-05集训
文章图片

PS:样例输入中忘了写给出n,测试点中有输入n 【c++|2021-10-05集训】想法:谁爱写谁写!! 判断字母数量奇偶,动态规划求解。

    推荐阅读