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

甘肃省路桥建设集团网站如何建设学校的微网站首页

甘肃省路桥建设集团网站,如何建设学校的微网站首页,天津企业网站制作公司,百度网盘资源第一题:全球变暖 题目描述 你有一张某海域 NxN 像素的照片#xff0c;.表示海洋、#表示陆地#xff0c;如下所示#xff1a; ....... .##.... .##.... ....##. ..####. ...###. ....... 其中上下左右四个方向上连在一起的一片陆地组成一…第一题:全球变暖 题目描述 你有一张某海域 NxN 像素的照片.表示海洋、#表示陆地如下所示 ....... .##.... .##.... ....##. ..####. ...###. ....... 其中上下左右四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。 由于全球变暖导致了海面上升科学家预测未来几十年岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋)它就会被淹没。 例如上图中的海域未来会变成如下样子 ....... ....... ....... ....... ....#.. ....... ....... 请你计算依照科学家的预测照片中有多少岛屿会被完全淹没。 输入描述 第一行包含一个整数 N (1≤N≤1000)。 以下 N 行 N 列代表一张海域照片。 照片保证第 1 行、第 1 列的像素都是海洋。、 输出一个整数表示答案。 输入输出样例 示例 输入 7 ....... .##.... .##.... ....##. ..####. ...###. .......输出 1 dfs岛屿问题 一个岛屿不会被淹没要有一块大陆上下左右都不和海洋相邻 flag表示一个岛屿中有一块大陆是这样的就不需要再遍历了 其余情况继续遍历并且把对应变成海洋这里用*来代替就不用开状态数组了 #includeiostream #includequeue using namespace std;const int N 1010; char g[N][N]; int n, cnt, olds, news; int dx[] {1, -1, 0, 0}, dy[] {0, 0, 1, -1}; bool flag;void dfs(int u, int v){if(!flag) {cnt 0;for(int i 0; i 4; i){int x dx[i] u, y dy[i] v;if(g[x][y] ! .) cnt;}if(cnt 4) {news;flag true;}}g[u][v] *;for(int i 0; i 4; i){int x dx[i] u, y dy[i] v;if(x 1 x n y 1 y n g[x][y] #)dfs(x, y);}}int main(){cinn;for(int i 1; i n; i)for(int j 1; j n; j)cing[i][j];for(int i 1; i n; i)for(int j 1; j n; j)if(g[i][j] #){olds;flag false;dfs(i ,j);}coutolds-newsendl;return 0; } 新的方法叫什么弗拉基米得算法通过这可以遍历到每个连通块中的各个陆地 首先遍历如果当前没有被遍历而且为陆地比较边界数量和总数量得值如果相等即要被淹没所以就要加进去 然后是一个BFS,使用stl队列实现如果该陆地相邻有海洋那么他就是边界 是陆地而且没有遍历过的话就放进队列再找 #includeiostream #includequeue using namespace std;const int N 1010; char g[N][N]; bool st[N][N]; int n; int dx[] {1, -1, 0, 0}, dy[] {0, 0, 1, -1};void dfs(int ax,int ay, int total, int bound){queuepairint, int q;q.push({ax, ay});st[ax][ay] true;while(q.size()){auto t q.front();q.pop();total;bool is_bound false;for(int i 0; i 4; i){int x t.first dx[i], y t.second dy[i];if(x 1 || x n y 1 || y n ) continue;if(st[x][y]) continue;if(g[x][y] .){is_bound true;continue;}q.push({x, y});st[x][y] true;}if(is_bound) bound;}}int main(){cinn;for(int i 1; i n; i)for(int j 1; j n; j)cing[i][j];int cnt 0;for(int i 1; i n; i)for(int j 1; j n; j)if(!st[i][j] g[i][j] #){int total 0, bound 0;dfs(i ,j ,total, bound);if(total bound)cnt;}coutcntendl; return 0; } 第四题搬砖 问题描述 这天小明在搬砖。 他一共有 n 块砖, 他发现第 i 砖的重量为 wi​, 价值为 vi​ 。他突然想从这些 砖中选一些出来从下到上堆成一座塔, 并且对于塔中的每一块砖来说, 它上面 所有砖的重量和不能超过它自身的价值。 他想知道这样堆成的塔的总价值即塔中所有砖块的价值和最大是多少。 输入格式 输入共 n1 行, 第一行为一个正整数 n, 表示砖块的数量。 后面 n 行, 每行两个正整数 wi​,vi​ 分别表示每块砖的重量和价值。 输出格式 一行, 一个整数表示答案。 样例说明 选择第 1、2、4块砖, 从上到下按照 2、1、4 的顺序堆成一座塔, 总价值 为 41510 评测用例规模与约定 对于 20% 的数据, 保证 0n≤10; 对于 100% 的数据, 保证 n≤1000;wi​≤20;vi​≤20000 。 样例输入 5 4 4 1 1 5 2 5 5 4 3样例输出 10明确排序指标很关键这是数学要推导和多做题 然后剩下就是01背包问题了直接套模板 j 2000 因为题目范围 #includeiostream #includealgorithm using namespace std;typedef pairint, int PII; const int N 1010; PII a[N]; int n, f[20004];bool cmp(PII x, PII y){return x.first x.second y.first y.second; }int main(){cinn;for(int i 0; i n ; i){int w, v;cinwv;a[i] {w, v};}sort(a, a n, cmp);for(int i 0; i n; i){int w a[i].first, v a[i].second;for(int j 20000; j w; j--)if(v j - w) f[j] max(f[j], f[j - w] v);}int maxv 0;for(int i 0; i 20000; i) maxv max(maxv, f[i]);coutmaxvendl;return 0; }
http://www.hkea.cn/news/14315012/

相关文章:

  • 图书网站建设论文设计师门户网站程序
  • 网页链接成整体通过网站建协企业是什么公司
  • 湖南二级建造师在哪个网站做变更镇江网站建设推广公司
  • 比较知名的设计网站有哪些广告素材
  • 江苏瀚和建设网站wordpress教程创建网页
  • 温州网站建设科技有限公司mv网站源码
  • 网站开发使用云数据库技术教程自助建网站平台怎么收费
  • 上海比较好的网站建设公司做淘宝那样的网站
  • 上海网站建设 虹口嵌入式软件开发流程规范
  • 优秀设计师网站网站界面设计简单
  • 网站开发实用吗哪个网站买做房图纸好
  • 深圳做手机商城网站建设电子商务网站按其实现的技术可分为
  • 网站改版的seo注意事项北京设计制作公司
  • 合肥软件开发网站建设做网站四百全包
  • 小型网站的建设方案商城网站建设第一章
  • php网站屏蔽词怎么做泰安哪里做网站
  • 桂林象鼻山离哪个高铁站近北京中小企业网站建设公司
  • 个人网站如何做即时支付教务处网站建设要求
  • 网站管理建设的需求分析请举例说明什么是网络营销
  • 为什么做的网站在谷歌浏览器打不开温州网站开发流程
  • 阿里巴巴网官方网站唐山网站
  • 个人空间网站建设简单网
  • 信息图表设计网站班级网站建设主题
  • 调查队网站建设种子搜索网站怎么做的
  • 镇江百度网站北京营销推广公司
  • 有了主机如何做网站自己做的网站验证码出不来怎么
  • 商业网站开发入门网络品牌营销案例
  • 前端网站demo常州百度网站排名优化
  • 做那种网站赚钱活动推广方案
  • 做视频网站要什么软件我贷款网站如何做