2020-4-26

news/2024/11/16 13:22:31/

 

请小伙伴们对自己AC的题目进行标记,注意每人只能标记一次!不知道的不要标记,恶意标记者将回收账号!!!

问题 D: 迷宫

时间限制: 1 Sec  内存限制: 128 MB
[提交] [状态]

题目描述

迷宫的管理员们决定在新开始的季节里使用新的墙纸。出于这个目的他们需要一个程序来计算迷宫内墙壁的面积。这就是你即将要做的工作。
我们把这个迷宫用一个N*N(3<=N<=33)的矩阵表示。一些矩阵单元包含一个“.”(这代表一个空的方块),另一些矩阵单元包含一个“#”(这代表一个用巨石砌成的石墙占据的方块)。全部方块的大小都为3*3平方米。

墙壁由迷宫的四周(除了作为迷宫出入口的左上角和右下角以外)以及那些标记为“#”的矩阵单元构成,除此之外没有其他的墙。在输入的矩阵里左上角和右下角永远是一个“.”。你的任务是计算迷宫里可见部分的墙壁的面积。换句话说,就是对迷宫的游客来说墙壁表面可见的部分。注意在两块相邻的石块之间没有空隙,即使两块石块在转角处相接触,我们都认为它们是相邻的。看看图示的例子:迷宫中可见的墙壁都用加粗的线条来描画。所有墙壁的高度都是三米。

输入

输入的第一行包含一个数字N。接下来的N行每行都包含有N个字符。每行描述了迷宫矩阵的一行。每行都只有“.”、“#”这两个字符并都以一个换行符结束。输入里没有任何的空格

输出

你的程序必须输出一个整数,即所需要的壁纸的准确面积。

样例输入 Copy

5 
..... 
...## 
..#.. 
..### 
.....

样例输出 Copy

198

 

这个写的好,洪水算法------ 

#include<bits/stdc++.h>
typedef unsigned long long ULL;
using namespace std;
typedef long long ll;
typedef pair<int,int>pp;
const int N=200010;
vector<int>v;
#define X first
#define Y second
priority_queue<int>q;
const int INF=1e9+1;
int a[505][505],pos[505][505],maxn=0,n;
void dfs(int x,int y)
{if(a[x][y]==0) return ;if(x<=0||x>n||y<=0||y>n) return ;if(pos[x][y]==1) return;a[x][y]=0;dfs(x-1,y);dfs(x+1,y);dfs(x,y-1);dfs(x,y+1);
}
int main()
{scanf("%d",&n);memset(a,-1,sizeof(a));for(int i=1;i<=n;i++){char str[35];scanf("%s",str);for(int j=0;j<n;j++){if(str[j]=='#') pos[i][j+1]=1;}}dfs(1,1);dfs(n,n);int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]==0){if(a[i-1][j]==-1) ans++;if(a[i+1][j]==-1) ans++;if(a[i][j-1]==-1) ans++;if(a[i][j+1]==-1) ans++;}}}printf("%d",(ans-4)*9);return 0;
}/**************************************************************Problem: 15305User: 2019UPC110Language: C++Result: 正确Time:2 msMemory:4020 kb
****************************************************************/

 

 

问题 E: MAX 的读书计划

时间限制: 1 Sec  内存限制: 128 MB
[提交] [状态]

题目描述

MAX 很喜欢读书,为了安排自己的读书计划,他会预先把要读的内容做好标记,A B 表示一个页段,即第 A 到 B 面,当然 A<B,若有两个页段 A-B,B-C,则可以直接记为 A-C,这样,他就可以一次看完,现在告诉你 n 个页段,请你帮他求出最长的一条页段,并输出这条页段的长度和组成它的页段个数。举个例子: 
有 6 个页段: 
2-7     1-3    3-12    12-20    7-10    4-50 
那么连续的页段就有: 
1-3,3-12,12-20 长度为 20-1+1=20 由 3 个页段组成 
2-7,7-10        长度为 10-2+1=9  由 2 个页段组成 
4-50             长度为 50-4+1=47 由 1 个页段组成 
那么最长的一条就是第三个,所以结果为 47 1。 
需要注意的是:如果有两条不一样的连续的页段长度同时为最大,那么取组成页段数多的一条. 
例子: 1-5,5-10,1-10 
输出: 10 2   

输入

第一行为一个整数n,n<500;
第二行到第n+1行,每行两个整数A,B,记录一个页段的信息。0<=A<B<500

输出

输出一个整数,即最长的页段的长度和组成它的页段数。 

样例输入 Copy

7 
1 5 
10 12 
3 10 
2 7 
2 10 
12 16 
7 9 

样例输出 Copy

15 3

提示

1-5  长度为5由1个页段组成
3-10,10-12,12-16  长度为14由3个页段组成
2-7,7-9  长度为8由2个页段组成
2-10,10-12,12-16  长度为15由3个页段组成

所以输出最长的页段的长度即15由3个页段组成

【数据规模】
对于30%的数据n<20,0<=A<B<500
对于100%的数据n<500,0<=A<B<500

 

#include<bits/stdc++.h>
typedef unsigned long long ULL;
using namespace std;
typedef long long ll;
typedef pair<int,int>pp;
const int N=200010;
vector<int>v;
#define X first
#define Y second
priority_queue<int>q;
const int INF=1e9+1;
int n,ans=0,fa[505],sum[505];
int d[505][505],maxn=0;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){int a,b;scanf("%d%d",&a,&b);d[a][b]=b-a+1;maxn=max(maxn,b);}for(int i=0;i<=maxn;i++){for(int j=0;j<i;j++){if(d[j][i]!=0){if(sum[j]!=0){if(sum[i]<sum[j]+d[j][i]){sum[i]=sum[j]+d[j][i]-1;fa[i]=j;}}else{sum[i]=max(sum[i],d[j][i]);}}}}int ans1=0,ans2=0;for(int i=0;i<=maxn;i++){ans1=max(ans1,sum[i]);}for(int i=0;i<=maxn;i++){if(sum[i]==ans1){int cnt=1,a=i;while(fa[a]!=0){cnt++;a=fa[a];}ans2=max(ans2,cnt);}}printf("%d %d",ans1,ans2);return 0;
}/**************************************************************Problem: 15306User: 2019UPC110Language: C++Result: 正确Time:2 msMemory:3028 kb
****************************************************************/

 

问题 F: 趾压板矩阵

时间限制: 1 Sec  内存限制: 128 MB
[提交] [状态]

题目描述

第二天早晨,跑男队员们来到了风景秀丽的扬州瘦西湖,刚下车他们全都尖叫起来,没错,就是他们最怕的“趾压板”:
一块超级大的趾压板被分成了n行n列,每个小格子上都有一个数字。游戏规则是:观察一段时间后,把所有的数字拿掉,分别抽取一个行号i和列号j,说出这个位置上原来的数字是多少,如果不能说出正确的值,就要接受处罚,光脚从左上角1沿着顺序从小到大走到这个数字所在位置。

“捡漏王”王祖蓝思考了一会,马上找到了其中的奥秘,你呢?

 

输入

输入共一行,包含三个整数n,i,j,每两个整数之间用空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。

 

输出

输出共一行,包含一个整数,表示相应矩阵中第i行和第j列的数。

样例输入 Copy

7 4 3

样例输出 Copy

18

提示

对于50%的数据,1≤n≤100;
对于100%的数据,1≤n≤30,000,1≤i≤n,1≤j≤n。

#include<bits/stdc++.h>
typedef unsigned long long ULL;
using namespace std;
typedef long long ll;
typedef pair<int,int>pp;
const int N=200010;
vector<int>v;
#define X first
#define Y second
priority_queue<int>q;
const int INF=1e9+1;
int main()
{ll n,a,b;scanf("%lld%lld%lld",&n,&a,&b);ll kk=a+b-1,ans=0;if(kk<=n){ll sum=(1+kk-1)*(kk-1)/2;if(kk%2==0)//下往上{ans=sum+(kk-a+1);}if(kk%2==1){ans=sum+(kk-b+1);}}else{ll sum=(1+n)*n/2;for(int i=1;i<kk-n;i++)sum+=(n-i);if(kk%2==0){ans=sum+(b-(kk-n));}if(kk%2==1){ans=sum+(a-(kk-n));}}printf("%lld",ans);return 0;
}

问题 G: 背菜谱

时间限制: 1 Sec  内存限制: 128 MB
[提交] [状态]

题目描述

扬州是中国四大菜系之一的淮扬菜系的发源地。中午,跑男们来到扬州菜根香饭店,这是家很有名的老字号,有着正宗的淮扬菜。狮子头不松不紧、蟹粉味很浓,扬州炒饭配料丰富,米粒颗颗饱满,煮干丝入口即化、汤头也很鲜……
不过吃饭前,他们还必须完成一项比赛——背菜谱,每人都有一本饭店的菜谱,在规定的时间看谁记住的菜名多。Angelababy发现菜谱中有的菜名字多一些,有的字少一些,多的菜名难背一点,少的菜名好背一点,根据Angelababy的经验,她能一眼看出背一个菜名需要的时间,以分钟记。
开始背菜谱的时间是yyyy年mm月dd日hh时min分,开始测试的时间是yyyy'年mm'月dd'日hh'时min'分。那么测试之前她最多能背多少个菜名呢?

 

输入

第一行一个整数n,表示字典中的单词数,n≤5000。
接下来n行,每行一个整数表示背这个单词需要用的时间,以分钟记,小于等于10000。
接下来两行依次是开始背菜谱的时间和开始测试时间。

 

输出

输出共一行,包含一个整数,测试前最多能背出的菜名数。

样例输入 Copy

2
1
1
2007-06-23-11:59
2007-06-23-12:00

样例输出 Copy

1

提示

对于100%的数据,1≤n≤5000。

时间给出的格式是:yyyy-mm-dd-hh:min,例如:2007-06-23-02:00,采用24小时制,每天从00:00~23:59,年份从0000到9999。

[提交][状态]

#include<bits/stdc++.h>
typedef unsigned long long ULL;
using namespace std;
typedef long long ll;
typedef pair<int,int>pp;
const int N=200010;
vector<int>v;
#define X first
#define Y second
priority_queue<int>q;
const int INF=1e9+1;
ll n,a[50005];
int isrun(ll y)
{if (y % 400 == 0)return 1;if (y % 4 == 0 && y % 100 != 0)return 1;return 0;
}
int mon[]= { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
long long fun(ll y, ll mn, ll d, ll h, ll m)
{ll s = 0;mon[2] += isrun(y);for (int i = 1; i < mn; i++)s += mon[i]*1440;for (int i = 1; i < d; i++)s += 1440;for (int i = 0; i < h; i++)s += 60;s += m;mon[2] -= isrun(y);return s;
}int main()
{scanf("%lld",&n);for(int i=1; i<=n; i++){scanf("%lld",&a[i]);}sort(a+1,a+1+n);ll y1,mo1,d1,h1,m1,y2,mo2,d2,h2,m2;long long int sum=0;scanf("%lld-%lld-%lld-%lld:%lld",&y1,&mo1,&d1,&h1,&m1);scanf("%lld-%lld-%lld-%lld:%lld",&y2,&mo2,&d2,&h2,&m2);for(int i=y1+1; i<=y2-1; i++){sum+=1440*(365+isrun(i));}if (y1 != y2)sum += fun(y2, mo2, d2, h2, m2) + 525600 + isrun(y1) * 1440- fun(y1, mo1, d1, h1, m1);elsesum += fun(y2, mo2, d2, h2, m2) - fun(y1, mo1, d1, h1, m1);// printf("%lld\n", sum);int ans=0;for(int i=1; i<=n; i++){if(sum>=a[i])ans++;sum-=a[i];if(sum<=0) break;}printf("%d",ans);return 0;
}/**************************************************************Problem: 15308User: 2019UPC110Language: C++Result: 正确Time:4 msMemory:2420 kb
****************************************************************/

 

https://blog.csdn.net/qq_36392612/article/details/72633387


http://www.ppmy.cn/news/472423.html

相关文章

初中作文计算机想象作文,初中想象作文600

初中想象作文600-800字快 初中想象作文600-800字 快 九度少年j20o 语文 2014-10-26 优质解答 给你两篇参考: 天空天蓝,天不再蓝. 他抬头望着早已不再是很蓝很蓝的天空,闻着浑浊的空气,看着扔满垃圾的街道,叹了口气…… 现在的天空,已经是灰蓝的,仿佛下一刻就见不到蓝色.现在的空…

从机缘到成就

机缘 在这1825天的创作之旅中&#xff0c;我收获了许多宝贵的机遇和经验。起初&#xff0c;我只是一个对技术有着浓厚兴趣的普通人&#xff0c;遇到了一个在eclipse导入工程后出现中文乱码的问题。而我决定将这个问题记录下来&#xff0c;并分享给其他可能遇到相同困扰的人们。…

计算机 教育 初中 论文范文1000字,初中作文1000字

我在小学4年级的时候&#xff0c;参加了学校开展的机器人社团。对我来说&#xff0c;这像是抓住了一个划过夜空的流星&#xff0c;抓住了那道转瞬即逝的光亮&#xff0c;它带着我穿过黑暗&#xff0c;打开了小小的心房。当时&#xff0c;机器人在中国还算是一个新事物&#xff…

计算机网络图片大全,说说心情图片大全唯美

#图片大全唯美# 不想遗忘的是春天的雨&#xff0c;每一个雨天是我最深又难以不去回忆的时光。听雨的时候&#xff0c;有那么一个人陪着&#xff0c;那心是静的&#xff0c;飘落的雨滴也是我等待的梦。春天的雨有时候就会不经意落在心扉。平凡的日子里&#xff0c;静水流深。 1、…

功能室计算机宣言,教室布置标语(精选多篇)

目录 正文 第一篇&#xff1a;毕业班教室布置标语 毕业班教室布置标语 毕业班教室布置标语 一、制作主标语&#xff1a;(位置&#xff1a;前/后墙黑板上面 尺寸&#xff1a;) 人因梦想而伟大&#xff0c;人因行动而成功&#xff01;(前) 插上理想的翅膀&#xff0c;扬起青春的风…

移动互联网时代:你的厕所文学是什么?

记得我腰挂PP机时&#xff0c;我的厕所文学是《故事会》或《知音》&#xff0c;被里面稀奇古怪乱七八糟的感人故事所激动得忘了身上重任&#xff0c;后来有了手机&#xff0c;还是诺基亚232和3310的时候&#xff0c;我的厕所文学有时候是《读者》&#xff0c;有时候是《南方周末…

走访西藏,这里藏着一个巨大的宝藏!

公众号后台回复“图书“&#xff0c;了解更多号主新书内容 作者&#xff1a;挖数 来源&#xff1a;挖数 我是2015年去的拉萨&#xff0c;当时是从广州坐火车过去&#xff0c;一共坐了50多个小时&#xff0c;之所以选择火车&#xff0c;一个因为便宜&#xff0c;硬卧800多&#…

《MLB棒球创造营》:走近棒球运动·旧金山巨人队

旧金山巨人&#xff08;英语&#xff1a;San Francisco Giants&#xff09;是一支位于旧金山的职业棒球队&#xff0c;隶属大联盟国家联盟西区。球队主场为甲骨文球场。 球队最先创建于纽约&#xff0c;1883年以纽约高谭 (New York Gothams)加入国家联盟&#xff0c;1886年改名…