目录

  • 1402. 星空之夜【dfs + 哈希】
  • 479. 加分二叉树【DP】
  • 1414. 牛异或【trie】

1402. 星空之夜【dfs + 哈希】


https://www.acwing.com/problem/content/description/1404/
本题最难的一个点在于如何判断,两图形是同一个。即如何记录图形,这里可以用哈希值来对应相应的图形,
为了尽可能的避免碰撞,故将图形内任意两点的距离和作为哈希值。

#include<bits/stdc++.h>
using namespace std;
const int N=110;
string s[N];
int n,m,idx,st[N][N];
int dx[8]={-1,-1,-1,0,0,1,1,1};
int dy[8]={-1,0,1,-1,1,-1,0,1};
vector<pair<int,int>>ve;
void dfs(int x,int y)
{ve.push_back({x,y});st[x][y]=1;for(int i=0;i<8;i++){int tempx=x+dx[i],tempy=y+dy[i];if(tempx<0||tempx>=n) continue;if(tempy<0||tempy>=m) continue;if(st[tempx][tempy]) continue;if(s[tempx][tempy]!='1') continue;dfs(tempx,tempy);}
}
map<double,int>mp;
void solve()//染字母
{double sum=0;//连通块任意点的距离和作为哈希值for(int i=0;i<ve.size();i++){for(int j=i+1;j<ve.size();j++){int x=ve[i].first,y=ve[i].second;int xx=ve[j].first,yy=ve[j].second;sum+=sqrt(1.0*(x-xx)*(x-xx)+(y-yy)*(y-yy));}}int w=0,flag=0;for(auto i=mp.begin();i!=mp.end();i++){auto temp=i->first;if(abs(temp-sum)<1e-5) {w=i->second;flag=1;break;}}if(!flag) w=idx,mp[sum]=idx++;for(int i=0;i<ve.size();i++) {s[ve[i].first][ve[i].second]='a'+w;}
}
int main(void)
{cin>>m>>n;for(int i=0;i<n;i++) cin>>s[i];for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i][j]=='1'&&!st[i][j]) {ve.clear();dfs(i,j);solve();}}}for(int i=0;i<n;i++) cout<<s[i]<<endl;return 0;
}

479. 加分二叉树【DP】

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int root[N][N],w[N],f[N][N],n;
void dfs(int l,int r)
{if(l>r) return;int k=root[l][r];cout<<k<<" ";dfs(l,k-1);dfs(k+1,r);
}
int main(void)
{cin>>n;for(int i=1;i<=n;i++) cin>>w[i];for(int len=1;len<=n;len++){for(int i=1;i+len-1<=n;i++){int l=i,r=i+len-1;for(int k=l;k<=r;k++){int left=(k==l)?1:f[l][k-1];int right=(k==r)?1:f[k+1][r];int score=left*right+w[k];if(l==r) score=w[k];if(f[l][r]<score){f[l][r]=score;root[l][r]=k;}}}}cout<<f[1][n]<<endl;dfs(1,n);return 0;
}

1414. 牛异或【trie】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*21;
int son[N][2],s[N],id[N],idx,n;
void insert(int u,int k)
{int p=0;for(int i=20;i>=0;i--){int t=u>>i&1;if(!son[p][t]) son[p][t]=++idx;p=son[p][t];}id[p]=k;
}
int query(int u)
{int p=0;for(int i=20;i>=0;i--){int t=u>>i&1;if(son[p][!t]) p=son[p][!t];else p=son[p][t];}return id[p];
}
int main(void)
{cin>>n;for(int i=1;i<=n;i++) cin>>s[i],s[i]^=s[i-1];int ans=-1,l,r;insert(s[0],0);for(int i=1;i<=n;i++){int k=query(s[i]);int temp=s[i]^s[k];if(temp>ans) ans=temp,l=k+1,r=i;insert(s[i],i);}cout<<ans<<" "<<l<<" "<<r<<endl;return 0;
}

寒假每日一题(提高组)【Week 1 完结】相关推荐

  1. 寒假每日一题2022【week2 未完结】

    目录 1987. 粉刷栅栏[扫描线] 1978. 奶牛过马路[前缀最值] 1969. 品种邻近[哈希表] 1987. 粉刷栅栏[扫描线] 扫描线,注意将一个区间的左端点表示该区间.这样可以避免处理各种 ...

  2. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  3. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  4. 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

  5. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  6. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

  7. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.21日(2018省赛A组第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  8. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  9. 2021寒假每日一题《献给阿尔吉侬的花束》

    献给阿尔吉侬的花束 题目来源:<信息学奥赛一本通> 时间限制: 1000 m s 1000ms 1000ms 内存限制: 64 m b 64mb 64mb 题目描述 阿尔吉侬是一只聪明又慵 ...

  10. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...

最新文章

  1. AJAX跨域请求数据原理与案例
  2. android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...
  3. PHP RSA签名
  4. JSP中两种include的区别
  5. IDEA中Git操作
  6. linux out 日志,关于Linux中nohup.out日志过大问题(示例代码)
  7. AcWing 1381. 阶乘
  8. React开发(262):react中活动时间回显用moment
  9. 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...
  10. 《Fast R-CNN》阅读笔记
  11. “Hyperledger Fabric 是假区块链!”
  12. 设计一个采用udp实现数据传输的程序_TCP/IP、UDP、HTTP、MQTT、CoAP这五种物联网协议...
  13. 视频目标跟踪算法Mean Shift和Particle Filter
  14. Windows系统中常见的文件后缀名有哪些
  15. GoldenDict音标乱码
  16. 运放技术——压摆率和上升时间
  17. krpano使用gyro2.js自定义陀螺仪
  18. 虚拟机几种联网的方式,如何共享主机IP
  19. python画箭头_Python中绘制箭头
  20. Java实现牛牛的水杯

热门文章

  1. MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比
  2. pyhanlp 停用词与用户自定义词典
  3. uc/os-ii中最高优先级计算(如何查表)
  4. Windows安装MySQL教程
  5. redis读取自增时候指定的key问题
  6. tcl脚本学习十一:proc应用 (带默认参数)
  7. linux命令:ftp
  8. [唐胡璐]Java操作Sql Server 2008数据库
  9. ble之gatt server
  10. 在机器学习分类中如何处理训练集中不平衡问题