寒假每日一题(提高组)【Week 1 完结】
目录
- 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 完结】相关推荐
- 寒假每日一题2022【week2 未完结】
目录 1987. 粉刷栅栏[扫描线] 1978. 奶牛过马路[前缀最值] 1969. 品种邻近[哈希表] 1987. 粉刷栅栏[扫描线] 扫描线,注意将一个区间的左端点表示该区间.这样可以避免处理各种 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)
2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)
2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.21日(2018省赛A组第9题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸
文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...
- 2021寒假每日一题《献给阿尔吉侬的花束》
献给阿尔吉侬的花束 题目来源:<信息学奥赛一本通> 时间限制: 1000 m s 1000ms 1000ms 内存限制: 64 m b 64mb 64mb 题目描述 阿尔吉侬是一只聪明又慵 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...
最新文章
- AJAX跨域请求数据原理与案例
- android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...
- PHP RSA签名
- JSP中两种include的区别
- IDEA中Git操作
- linux out 日志,关于Linux中nohup.out日志过大问题(示例代码)
- AcWing 1381. 阶乘
- React开发(262):react中活动时间回显用moment
- 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...
- 《Fast R-CNN》阅读笔记
- “Hyperledger Fabric 是假区块链!”
- 设计一个采用udp实现数据传输的程序_TCP/IP、UDP、HTTP、MQTT、CoAP这五种物联网协议...
- 视频目标跟踪算法Mean Shift和Particle Filter
- Windows系统中常见的文件后缀名有哪些
- GoldenDict音标乱码
- 运放技术——压摆率和上升时间
- krpano使用gyro2.js自定义陀螺仪
- 虚拟机几种联网的方式,如何共享主机IP
- python画箭头_Python中绘制箭头
- Java实现牛牛的水杯