2015年百度之星程序设计大赛 - 初赛(2)
目前只会四道--》
1002:很明显的MST 把,但是注意不要每个点都连接四条边,会爆内存。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include<cmath> 5 #include <algorithm> 6 7 typedef long long ll; 8 using namespace std; 9 10 #define N 1011 11 #define inf 0x3f3f3f3 12 typedef long long ll; 13 int f[N*N]; 14 15 int mp[1011][1011]; 16 int idx[1011][1011]; 17 18 int n,m; 19 struct node 20 { 21 int x,y,z; 22 }e[3011111]; 23 24 int dx[]={0,-1}; 25 int dy[]={-1,0}; 26 27 28 int find(int x) 29 { 30 if (x!=f[x]) f[x]=find(f[x]); 31 return f[x]; 32 } 33 34 int cmp(node a,node b) 35 { 36 return a.z<b.z; 37 } 38 39 int main() 40 { 41 42 int cas=0; 43 int T; 44 scanf("%d",&T); 45 while (T--) 46 { 47 printf("Case #%d:\n",++cas); 48 scanf("%d%d",&n,&m); 49 int id=0; 50 for (int i=1;i<=n;i++) 51 for (int j=1;j<=m;j++) scanf("%d",&mp[i][j]),idx[i][j]=(++id); 52 53 for (int i=1;i<=n*m;i++) f[i]=i; 54 int t=0; 55 56 for (int i=1;i<=n;i++) 57 for (int j=1;j<=m;j++) 58 { 59 for (int k=0;k<2;k++) 60 { 61 int x=i+dx[k]; 62 int y=j+dy[k]; 63 if (x<=0||x>n||y<=0||y>m) continue; 64 e[++t].x=idx[i][j]; 65 e[t].y=idx[x][y]; 66 e[t].z=abs(mp[i][j]-mp[x][y]); 67 } 68 } 69 ll ans=0; 70 sort(e+1,e+t+1,cmp); 71 for (int i=1;i<=t;i++) 72 { 73 int x=e[i].x; 74 int y=e[i].y; 75 x=find(x); 76 y=find(y); 77 if (x!=y) 78 { 79 ans+=e[i].z; 80 f[x]=y; 81 } 82 } 83 printf("%I64d\n",ans); 84 } 85 return 0; 86 }
View Code
1003 真实脑残了,
直接暴力DFS就好了,走过的标记一下不走就好了
一直以为这样会T,被自己的复杂度分析惊呆了
1 #include<iostream> 2 #include<stdio.h> 3 #include<string.h> 4 5 int a[505][505]; 6 int b[505][505]; 7 using namespace std; 8 9 void solve(int n,int m) 10 { 11 if(b[n][m]==1)return; 12 if(a[n][m]==1) 13 { 14 b[n][m]=1; 15 if(a[n-1][m-1]==1){a[n][m-1]=a[n-1][m]=1;solve(n,m-1);solve(n-1,m);} 16 if(a[n-1][m+1]==1){a[n-1][m]=a[n][m+1]=1;solve(n-1,m);solve(n,m+1);} 17 if(a[n+1][m-1]==1){a[n][m-1]=a[n+1][m]=1;solve(n,m-1);solve(n+1,m);} 18 if(a[n+1][m+1]==1){a[n][m+1]=a[n+1][m]=1;solve(n,m+1);solve(n+1,m);} 19 } 20 } 21 int main() 22 { 23 int n,m,T,g,n1,m1; 24 int i,j,k,sum; 25 scanf("%d",&T); 26 for(i=1;i<=T;i++) 27 { 28 memset(b,0,sizeof(b)); 29 memset(a,0,sizeof(a)); 30 scanf("%d%d",&n,&m); 31 scanf("%d",&g); 32 for(j=1;j<=g;j++) 33 { 34 scanf("%d%d",&n1,&m1); 35 a[n1][m1]=1; 36 } 37 sum=0; 38 for(j=1;j<=n;j++) 39 for(k=1;k<=m;k++) 40 solve(j,k); 41 for(j=1;j<=n;j++) 42 for(k=1;k<=m;k++) 43 if(a[j][k]==1)sum++; 44 printf("Case #%d:\n",i); 45 printf("%d\n",sum); 46 } 47 }
View Code
1004:魔法因子;
数学题,并不会。。
假设我们知道axxxxxxb *val =bxxxxxa;
int tmp= bxxxxxxa-axxxxxxb=(b-a)*(pow(10,len-1)-1);
判断tmp==val-1 就好了,maya,神奇的题解。
然后我们枚举 头尾两个元素,注意,头元素不能为0,尾元素可以我0;
代码没有
1005:
做过!但是并没有出来
我们求最多的a[i],a[j],a[k]是上升,
那么要求a[j]-a[i]>=j-i;假设不改变的元素个数
化简一下a[j]-j>=a[i]-i;明显最长不下降子序列
用户upper_lound()
#include<iostream> #include<string.h> #include<string> #include<math.h> #include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; #define N 2234567 int a[N]; int f[N];void debug() {for (int i=1;i<=5;i++) f[i]=i+2;int idx=lower_bound(f+1,f+6,8)-f;cout<<idx<<endl; }int main() {// debug(); int T;scanf("%d",&T);for (int _=1;_<=T;_++){int n;printf("Case #%d:\n",_);scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&a[i]),a[i]-=i;int t=0;for (int i=1;i<=n;i++){if (t==0) f[++t]=a[i];else if (f[t]<=a[i]) f[++t]=a[i];else{int idx=upper_bound(f+1,f+t+1,a[i])-f;f[idx]=a[i];}}printf("%d\n",n-t);}return 0; }
转载于:https://www.cnblogs.com/forgot93/p/4545349.html
2015年百度之星程序设计大赛 - 初赛(2)相关推荐
- HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu6383(2018 “百度之星”程序设计大赛 - 初赛(B))
p1m2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- hdu6380(2018 “百度之星”程序设计大赛 - 初赛(B))
degree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- hdu6375(2018 “百度之星”程序设计大赛 - 初赛(A))
度度熊学队列 Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 6670 Mindis 离散化+dijkstra
题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6670 Mindis Time Limit: 4000/2000 MS (Java/Others) M ...
- 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)
Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- 2019 年百度之星·程序设计大赛 - 初赛一 1003 Mindis
Mindis Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- 2018 “百度之星”程序设计大赛 - 初赛(A)
hdu6374 度度熊拼三角 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- 2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机
百度语言翻译机 2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机 时限 1s 百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语.他们在平时的交谈 ...
最新文章
- 理论经典:TCP协议的3次握手与4次挥手过程详解
- 计算机c盘属性不显示安全选项,win7系统中文件夹属性安全选项卡空白的解决方法...
- SQL语句获取数据库名、所有表名、所有字段名及字段类型
- 使用 cf push 部署应用到 SAP BTP 后启动失败 start unsuccessful 该如何处理
- UnrealEngine4 - 关于UObject被自动GC垃圾回收的巨坑
- core文件如何分析
- diff git 代码实现_Git 自救指南:这些坑你都跳得出吗?
- php对象不公用属性赋值,php 框架 Model 公用的问题
- 数据分析来诠释985/211废物的焦虑与失意
- PHP程序员五大兵器排行
- 从科技到“科技亲”,2019 IBM 中国论坛干货分享
- pkg_resources.DistributionNotFound: The 'psutil=5.6.1; platform_python_implementation== 报错解决
- mysql 触发器 实例_MySQL触发器简单用法示例
- 思科模拟器-单臂路由tftp配置
- C++定义点和矩形求矩形面积周长
- 牛客网--15894--WWX的520
- 文本框插入表情和图片
- html实现给微信发红包看照片,微信发红包看图片效果实现
- 重读《大数据时代》:关于大数据的再认识
- 如何面对无意义的生活
热门文章
- STM32f1系列压力传感器MPX4250压力检测
- MACOS Terminal终端:更改zsh模式到bash模式(切换shell)
- 虚拟主机 独立云服务器,虚拟主机 独立云服务器
- 一步一步教你将java代码打成jar包用bat批处理命令运行
- 快速入门JavaScript(一)
- php代码优化思路,PHP优化思路 Web程序 - 贪吃蛇学院-专业IT技术平台
- android游戏手柄,没手柄也不怕 键盘玩Android游戏攻略
- 【工具】markdown
- 如果当初......
- halide 资源整理