当前位置: 首页 > news >正文

迎面走来的是邪恶构造题

记录一些构造题,也许不会太频繁更新(谁没事做这种神秘题)

#8233. Operator Precedence

题目让你构造一个类似和的积等于积的和,然后和不能为 \(0\)\(a_i\) 也不能为 \(0\)

考虑和的积肯定不能太大,也就是相差大于 \(1\) 的肯定没几个。

考虑一组最小的组合是 \(2,-1\)

嗯,然后你惊人的发现一组合法的形如 \(-n,2,-1,...,2,-1,4\),嗯,就这么简单。

还有一些构造方式我也没去看了,这里再给一组:\(2,-1,2,-1...,2,-1,2n,-1\)

G. Secret Message

有意义一点的构造,我先睡了不管了(

code

#include<bits/stdc++.h>
using namespace std;
namespace IO
{template<typename T>void read(T &_x){_x=0;int _f=1;char ch=getchar();while(!isdigit(ch)) _f=(ch=='-'?-1:_f),ch=getchar();while(isdigit(ch)) _x=_x*10+(ch^48),ch=getchar();_x*=_f;}template<typename T,typename... Args>void read(T &_x,Args&...others){Read(_x);Read(others...);}const int BUF=20000000;char buf[BUF],to,stk[32];int plen;#define pc(x) buf[plen++]=x#define flush(); fwrite(buf,1,plen,stdout),plen=0;template<typename T>inline void print(T x){if(!x){pc(48);return;}if(x<0) x=-x,pc('-');for(;x;x/=10) stk[++to]=48+x%10;while(to) pc(stk[to--]);}
}
using namespace IO;
const int N = 2e6+10,M = 6e6;
int t,n,m,mx,x,y,cnt;
bool v[M],v2[M],v3[M];
vector<int>id[N];
char c;
signed main()
{
//	freopen("indian.in","r",stdin);
//	freopen("indian.out","w",stdout);read(t);while(t--){cnt = 0;for(int i = 0;i <= n+1;i++) id[i].clear();read(n),read(m);for(int i = 0;i <= n+1;i++)for(int j = 0;j <= m+1;j++)id[i].push_back(++cnt);for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++){cin >> c;if(c == '#') v[id[i][j]] = 1;else v[id[i][j]] = 0;}} mx = 1e14;for(int i = 0;i <= 4;i++){x = 0;for(int j = 0;j <= n+1;j++)for(int z = 0;z <= m+1;z++) v3[id[j][z]] = 0;for(int j = 1;j <= n;j++)for(int z = 1;z <= m;z++){//手玩可以发现(2*j+z)%5是同类点  if(v[id[j][z]] == 1 && (2*j+z)%5==i && v3[id[j-1][z]] != 1 && v3[id[j+1][z]] != 1 && v3[id[j][z-1]] != 1 && v3[id[j][z+1]] != 1)v3[id[j][z]] = 1,x++; }for(int j = 1;j <= n;j++)for(int z = 1;z <= m;z++)if(v3[id[j][z]] == 0 && v[id[j][z]] == 1 && v3[id[j-1][z]] != 1 && v3[id[j+1][z]] != 1 && v3[id[j][z-1]] != 1 && v3[id[j][z+1]] != 1)v3[id[j][z]] = 1,x++;if(x < mx){mx = x;for(int j = 1;j <= n;j++)for(int z = 1;z <= m;z++)v2[id[j][z]] = v3[id[j][z]];}} for(int j = 1;j <= n;j++,pc('\n'))for(int z = 1;z <= m;z++)if(v[id[j][z]] == 0) pc('.');else if(v2[id[j][z]]) pc('S');else pc('#');flush();}return 0;
}
/*
无敌了,神秘构造题
先考虑全是陆地的情况,且仅考虑S 
考虑无限棋盘的时候,我们肯定会考虑每一个对应5个
然后就是若干十字架
那么对于有限制的,直接对于五种方式选一个最小的即可
即十字架的上下左右或中间
对于有海洋的,可能会因为不行而放四边
每放一次,就说明有周长
那么5种情况,总数一定是S+C
那么总有一个合法 
*/
http://www.hskmm.com/?act=detail&tid=36979

相关文章:

  • 中小企业数字化转型难?低代码的轻量化破局方案
  • 低代码引发组织协同革命 重塑数字化转型新逻辑
  • 日志|力扣|98.验证二叉搜索树|前序遍历|中序遍历|后序遍历|
  • 高级语言程序设计第二次个人作业
  • 2025年公众号编辑器排版还很难?如何用公众号编辑器做出精美文章?
  • 1022
  • 幂是任意常数的二项式定理
  • PowerShell---的办公小技能
  • 10月22日日记
  • 编译folly
  • 2025年独家测评:哪些微信公众号文章排版工具更适合自媒体运营?
  • 20232413 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • Stable Diffusion下载安装教程(附安装包)快速部署 AI 绘画工具
  • WAV和PCM的联系与区别
  • 使用WebSocket API驱动家庭自动化
  • 20232428 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 20234320 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 20232317 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • 第2天(简单题中等题 取余、因数与倍数、数组 矩阵、数组 字符串)
  • python笔记
  • 20232326 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 20232412 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • NOIP2024
  • 20232415 2025-2026-1 《网络与系统攻防技术》 实验二实验报告
  • 结对项目:四则运算生成器
  • CSP-S2023
  • Spring Boot 中全面解决跨域请求
  • OpenTelemetry语义约定:规范可观测性数据,提升系统洞察力
  • 拓展欧几里得算法