括号( brackets )

【问题描述】

牛牛有一个字符串,这个字符串是由左括号 ( 和右括号 ) 组成的。这样的字符串

又叫做括号序列。

牛牛想知道,他的括号序列是不是一个回文括号序列。与一般的回文串不同,牛牛

的回文括号序列定义为“看上去”是回文的括号序列。例如牛牛认为,)()(是回文括号序列,而 )(()不.是 回文括号序列。形式化地说,一个长度为 k 的括号序列是回文的,当且仅当对于所有的 i(1 ≤ i ≤ k)从左向右数的第 i 个字符和从右向左数的第 i 个字符是相反的。

【输入格式】

从文件 brackets.in 中读入数据。

第一行包含一个正整数 T(1 ≤ T ≤ 100) ,表示这个测试点内的数据组数。

接下来 T 行,每行一个长度不超过 100 的字符串,表示牛牛的括号序列。

【输出格式】

输出到文件 brackets.out 中。

输出 T 行,依次表示 T 组数据的答案,如果这个括号序列是回文括号序列,那么

这一行输出 Yes ,否则输出 No 。

【样例输入】

2

())(

(())

【样例输出】

No

Yes

送分题,判断回文数

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
inline int read()
{int f=1,ans=0;char c;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();}return f*ans;
}
char str[1001];
int t;
int main()
{freopen("brackets.in","r",stdin);freopen("brackets.out","w",stdout);t=read();while(t--){scanf("%s",str+1);bool ff=true;int len=strlen(str+1);if(len%2==1){cout<<"No"<<endl;continue;}for(int i=1;i<=len/2;i++){if(str[i]==str[len-i+1]){ff=false;break;}}if(ff){cout<<"Yes"<<endl;}else cout<<"No"<<endl;}
}

View Code

地球危机( attack )

【题目描述】

三体人将对地球发起攻击。为了抵御攻击,地球人派出了 A × B ×C 艘战舰,在太

空中排成一个 A 层 B 行 C 列的立方体。其中,第 i 层第 j 行第 k 列的战舰(记为战舰

(i, j,k))的生命值为 d i,j,k 。三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第 t 轮攻击用 7 个参数 la t ,ra t ,lb t ,rb t ,lc t ,rc t ,h t 描述;所有满足 i ∈ [la t ,ra t ], j ∈ [lb t ,rb t ],k ∈ [lc t ,rc t ] 的战舰 (i, j,k) 会受到 h t 的伤害。如果一个战舰累计受到的总伤.害超过其生命值,那么这个战舰会爆炸。地球指挥官希望你能告诉他,第一艘爆炸的战舰是在.哪.一.轮攻击后爆炸的。

【输入格式】

从文件 attack.in 中读入数据。

第一行包括 4 个正整数 A, B,C,m;

第二行包含 A × B ×C 个整数,其中第 ((i − 1) × B + (j − 1)) ×C + (k − 1) + 1 个数

为 d i,j,k ;

第 3 到第 m + 2 行中,第 (t − 2) 行包含 7 个正整数 la t ,ra t ,lb t ,rb t ,lc t ,rc t ,h t 。

【输出格式】

输出到文件 attack.out 中。

输出第一个爆炸的战舰是在哪一轮攻击后爆炸的。保证一定存在这样的战舰。

【样例 1 输入】

2 2 2 3

1 1 1 1 1 1 1 1

1 2 1 2 1 1 1

1 1 1 2 1 2 1

1 1 1 1 1 1 2

【样例 1 输出】

2

【样例 1 解释】

在第 2 轮攻击后,战舰 (1,1,1) 总共受到了 2 点伤害,超出其防御力导致爆炸。

第 3 页 共 6 页

【子任务】

对于 10% 的数据,B = C = 1;

对于 20% 的数据,C = 1;

对于 40% 的数据,A × B ×C,m ≤ 10,000;

对于 70% 的数据,A, B,C ≤ 200;

对于所有数据,A × B ×C ≤ 10 6 ,m ≤ 10 6 ,0 ≤ d i,j,k ,a t ≤ 10 9 。

说一说思想,代码就是别人的了,因为实在不想写了

大家如果做了借教室就发现这是一个加了两维的升级版

所以还是差分+二分

一维差分后不是扫一次

二维扫两次(横,竖)

三维扫三次,(横,竖,高)

然后就瞎搞了

其实可以二分,可以吧m优化成logm

时间复杂度:O(logm(ABC+M))

然后再可以通过mid的移动不用每次重新更新差分数组

所以加加减减

还可以将复杂度转换成:O(logm(ABC)+M)

好像还有一个玄学优化,却忘了

#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<vector>
#define rep(i,x,y) for(register int i=(x);i<=(y);i++)
#define dwn(i,x,y) for(register int i=(x);i>=(y);i--)
#define maxn 1000010
#define LL long long
using namespace std;
int read()
{int x=0,f=1;char ch=getchar();while(!isdigit(ch)&&ch!='-')ch=getchar();if(ch=='-')f=-1,ch=getchar();while(isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar();return x*f;
}
void write(int x)
{int f=0;char ch[20];if(!x){putchar('0'),putchar('\n');return;}if(x<0)x=-x,putchar('-');while(x)ch[++f]=x%10+'0',x/=10;while(f)putchar(ch[f--]);putchar('\n');
}
LL qh[maxn],a[maxn],s[maxn],d[maxn];
int qxa[maxn],qya[maxn],qza[maxn],qxb[maxn],qyb[maxn],qzb[maxn],A,B,C,m,ans;
int getx(int x,int y,int z){return (x*B+y)*C+z+1;}
void getp(int x,int px,int py,int pz){x--;pz=x%C,x/=C,py=x%B,pz=x/B;return;}
void add(int x,int y,int z,LL h){if(x<=(A-1)&&y<=(B-1)&&z<=(C-1))a[getx(x,y,z)]+=h;}
void atk(int xa,int ya,int za,int xb,int yb,int zb,LL h)
{add(xa,ya,za,h),add(xa,ya,zb+1,-h),add(xa,yb+1,za,-h),add(xa,yb+1,zb+1,h);add(xb+1,ya,za,-h),add(xb+1,ya,zb+1,h),add(xb+1,yb+1,za,h),add(xb+1,yb+1,zb+1,-h);
}
int check()
{rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)s[getx(i,j,k)]=a[getx(i,j,k)];if(C!=1)rep(i,0,A-1)rep(j,0,B-1)rep(k,1,C-1)s[getx(i,j,k)]+=s[getx(i,j,k-1)];//,cout<<i<<" "<<j<<" "<<k<<"+1 "<<s[getx(i,j,k-1)]<<endl;if(B!=1)rep(i,0,A-1)rep(j,1,B-1)rep(k,0,C-1)s[getx(i,j,k)]+=s[getx(i,j-1,k)];//,cout<<i<<" "<<j<<" "<<k<<"+2 "<<s[getx(i,j-1,k)]<<endl;if(A!=1)rep(i,1,A-1)rep(j,0,B-1)rep(k,0,C-1)s[getx(i,j,k)]+=s[getx(i-1,j,k)];//,cout<<<<"+3 "<<s[getx(i-1,j,k)]<<endl;rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)if(s[getx(i,j,k)]>d[getx(i,j,k)])return 1;return 0;
}
void getans(int L,int R,int lastmid)
{if(L>R)return;int mid=(L+R)>>1;if(mid>lastmid)rep(i,lastmid+1,mid)/*cout<<"mid:"<<mid<<" add:"<<i<<endl,*/atk(qxa[i],qya[i],qza[i],qxb[i],qyb[i],qzb[i],qh[i]);if(mid<lastmid)rep(i,mid+1,lastmid)/*cout<<"mid:"<<mid<<" del:"<<i<<endl,*/atk(qxa[i],qya[i],qza[i],qxb[i],qyb[i],qzb[i],-qh[i]);int f=check();//cout<<"mid:"<<mid;//cout<<"now:";//rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)cout<<s[getx(i,j,k)]<<" ";cout<<endl;if(f){ans=min(ans,mid);getans(L,mid-1,mid);}else getans(mid+1,R,mid);
}
int main()
{freopen("attack.in","r",stdin);freopen("attack.out","w",stdout);A=read(),B=read(),C=read(),ans=m=read();rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)d[getx(i,j,k)]=read();rep(i,1,m)qxa[i]=read()-1,qxb[i]=read()-1,qya[i]=read()-1,qyb[i]=read()-1,qza[i]=read()-1,qzb[i]=read()-1,qh[i]=read();getans(1,m,0);write(ans);return 0;
}
/*
2 2 2 3
1 1 1 1 1 1 1 1
1 2 1 2 1 1 1
1 1 1 2 1 2 1
1 1 1 1 1 1 2
*/

View Code

付账( eatout )

【题目描述】

几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。

现在有 n 个人出去吃饭,他们总共消费了 S 元。其中第 i 个人带了 a i 元。幸运的

是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出多少钱呢?

为了公平起见,我们希望在总付钱量恰好为 S 的前提下,最后每个人付的钱的标

准差最小。这里我们约定,每个人支付的钱数可以是任意非负实数,即可以不是 1分钱的整数倍。你需要输出最小的标准差是多少。标准差的介绍:标准差是多个数与它们平均数差值的平方平均数,一般用于刻画这些数之间的“偏差有多大”。形式化地说,设第 i 个人付的钱为 b i 元,那么标准差为

【输入格式】

从文件 eatout.in 中读入数据。

第一行包含两个整数 n、S;

第二行包含 n 个非负整数 a 1 ,...,a n 。

【输出格式】

输出到文件 eatout.out 中。

输出最小的标准差,四舍五入保留 4 位小数。保证正确答案在加上或减去 10 −9 后

不会导致四舍五入的结果发生变化。

【样例 1 输入】

5 2333

666 666 666 666 666

【样例 1 输出】

0.0000

【样例 1 解释】

每个人都出

2333/5元,标准差为 0。

【样例 2 输入】

10 30

2 1 4 7 4 8 3 6 4 7

【样例 2 输出】

0.7928

【子任务】

对于 10% 的数据,所有 a i 相等;

对于 30% 的数据,所有非 0 的 a i 相等;

对于 60% 的数据,n ≤ 1,000;

对于 80% 的数据,n ≤ 10 5 ;

对于所有数据,n ≤ 5 × 10 5 ,0 ≤ a i ≤ 10 9 。

把式子推一推,然后简单贪心就可以

注意精度

#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
inline long long read()
{long long f=1,ans=0;char c;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();}return f*ans;
}
long long n,s;
long long x[500001];
long double ans,avg,avg1,ss;
int main()
{
//    freopen("eatout.in","r",stdin);
//    freopen("eatout.out","w",stdout);n=read(),s=read();avg=s/n,avg1=avg,ss=s;for(long long i=1;i<=n;i++) x[i]=read();sort(x+1,x+n+1);for(long long i=1;i<=n;i++){if(x[i]<=avg1) ans+=(avg-x[i])*(avg-x[i]),ss=ss-x[i],avg1=ss/(n-i);else if(x[i]>avg1)ans+=(avg-avg1)*(avg-avg1),ss=ss-avg1;}cout<<fixed<<setprecision(4)<<sqrt(ans/n);return 0;
}
/*
10 30
2 1 4 7 4 8 3 6 4 7
*/

View Code

转载于:https://www.cnblogs.com/si-rui-yang/p/9813101.html

20181018 考试记录相关推荐

  1. JDBC实现四六级考试记录添加、查询、删除功能

    JDBC实现四六级考试记录添加.查询.删除功能 1. 代码演示 2. 项目的目录结构 3. 数据库mysql 4. code 4.1 ExamTest.class package com.shan.e ...

  2. 【考试记录】Apsara Clouder基础技能认证:阿里巴巴编码规范(Java)

    一:考试总结 我是考了一次就过了,看了一晚上和一上午,开发手册看了一遍,考题分析看了两遍,次要资料里的东西看了一遍.(文章最后有资料) 先看主要资料里的Java开发手册,这个是官方文档,考题都是从里面 ...

  3. 【考试记录】阿里云DevOps助理工程师(ACA)

    一:考试总结 这个考试之前花了60块钱买的,后来因为一直在弄实习和硕士论文,所以就么有考试,趁着有时间了,抓紧考完,也好对得起这60块钱.这部分的主要内容其实和读本科的时候学习的软件测试.读硕士时候的 ...

  4. 江苏省计算机C语言考试记录

    今天3月5日,3月10日就要进行江苏省计算机二级C语言的考试,为了考试取得一个满意的成绩,我规划了一周的复习C语言时间,特此,做一个简单的记录,将来也可以看看,也算是一份记忆吧. 如果想获得一些考试的 ...

  5. 2022 年 SAS base认证考试 记录以及Tips

    之前参加的比赛有一次免费参加SAS认证的机会,所以就去参加了一次.网上有一些相应的介绍之类的但可能都比较早了,于是这次去之前也不知道是真是假,于是记录一下考试内容,然后如果现在有还要考这个认证的同学可 ...

  6. 微信小程序在线考试系统 毕业设计(7)考试记录

    wxml代码 <view class="jilu"><view class="jilu_biaoti"> <view class= ...

  7. 计算机MS Office二级考试记录

    学习准备: 2022.3.6报名成功(报名费80元,还需要192*144的蓝底电子照,大小不超过200KB) 预计2022.3.26考试 计划3.6-3.18看完Office辅导视频(Word, Ex ...

  8. 【考试记录】Apsara Clouder云计算技能认证:云数据库管理与数据迁移

    一:考试总结 这个考试之前因为购买过,所以学习起来还是比较容易的,阿里让考这个的原因,个人感觉是为了推广她的云数据库,不过阿里的数据库弄的还是不错的,体验不错,用着也很舒服,因为自己购买过了,所以实验 ...

  9. 20180705 考试记录

    T1 货物运输弱化版 题解: 倒着跑最短路就行 没仔细看题凉凉 code: #include<cstdio> #include<iostream> #include<cs ...

  10. ZJU期末考试记录(研究生)——数据挖掘

    1.全英文试卷,可以用中文作答,时间2h,普遍反映时间不足: 2.可以带的设备:计算器(必需) 3.题型:填空题(2*8),大题 4.题目记录: ① 填空题:数据预处理的步骤.求z分数.余弦相似性 ② ...

最新文章

  1. CentOS 7 安装 PostgreSQL 教程
  2. oracle tranc,oracle函数trunc的使用
  3. mysql外键怎么写sql文_mysql 创建外键sql语句
  4. 西工大java高级网络编程_奥鹏西工大16春《JAVA高级网络编程》平时作业
  5. document 对象 html文档内容
  6. JAVA读取属性文件的几种方法
  7. 边框回归:BoundingBox-Regression(BBR)(转)
  8. 将C#的Dic转成Lua的Table将C#的List转成Lua的Table
  9. html中添加3dmax建模,HT for Web自定义3D模型的WebGL应用
  10. 第二章 人工智能专题之Python进阶 - Matplotlib库
  11. 联想笔记本键盘排线_笔记本键盘排线怎么拆 thinkpad
  12. win10小技巧(初)
  13. android 高德路线,【Android呼叫高德路线规划】
  14. 大恒halcon 深度学习公开课
  15. 工程训练(第一章 关于劳动 )-江苏海洋大学-mooc 答案
  16. make xxx_defconfig
  17. LocalDate的用法与String互转
  18. 《浪潮之巅》作者吴军:把握技术革命的浪尖
  19. 盘丝洞服务器维护,斗战神史上最大规模合服:涉及60个服务器
  20. Python——二进制8位加法器(采用手算二进制加法的过程实现)(tkinter实现)【2021-07-08】

热门文章

  1. 在尚硅谷自学Java全栈工程师课程
  2. 手机卡顿怎么办?学会这三个方法清理内存,手机多用三年都不卡
  3. 给系统闹钟设置时间Alarm
  4. python超链接格式_用Python在本地文件夹中插入超链接
  5. 马克思主义哲学(认识论)
  6. [Latex]visio画图导入矢量图到Latex | 裁剪pdf | 去掉pdf白边
  7. 测试人如何快速晋升为月薪过万的软件测试工程师?
  8. Abp(.NetCore)开发与发布过程3-部署Ubuntu站点
  9. Python——私有化和动态添加属性和方法、Property、new和slots方法、单例、异常处理(day09)
  10. Data Lab 2(深入理解计算机系统)