国庆 day 3 下午
a
【问题描述】
你是能看到第一题的 friends 呢。
——hja
给你一个只有小括号和中括号和大括号的括号序列,问该序列是否合法。
【输入格式】
一行一个括号序列。
【输出格式】
如果合法,输出 OK,否则输出 Wrong。
【样例输入】
[(])
【样例输出】
Wrong
【数据范围与规定】
对于70%的数据,1 ≤n≤ 100。
对于100%的数据,1 ≤ n≤ 10000,所有单词由大写字母组成。
P100 zhxb
思路:栈维护一下。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string s;
char stack[];
int top,m1,m2,m3;
int main(){
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
cin>>s;
int len=s.length();
for(int i=;i<len;i++){
if(s[i]=='(') {m1++;stack[top++]=s[i];}
if(s[i]=='[') {m2++;stack[top++]=s[i];}
if(s[i]=='{') {m3++;stack[top++]=s[i];}
else if(s[i]==')'){
if(!m1){cout<<"Wrong";return ;}
else if(stack[top-]!='('){cout<<"Wrong";return ;}
else{top--;m1--;}
}
else if(s[i]==']'){
if(!m2){cout<<"Wrong";return ;}
else if(stack[top-]!='['){cout<<"Wrong";return ;}
else {top--;m2--;}
}
else if(s[i]=='}'){
if(!m3){cout<<"Wrong";return ;}
else if(stack[top-]!='{'){cout<<"Wrong";return ;}
else {top--;m3--;}
}
}
if(top||m1||m2||m3) cout<<"Wrong";
else cout<<"OK";
}
b
【问题描述】
你是能看到第二题的 friends 呢。
——laekov
Yjq 想要将一个长为l宽为w的矩形棺材(棺材表面绝对光滑,所以棺材可
以任意的滑动)拖过一个 L 型墓道。
如图所示,L 型墓道两个走廊的宽度分别是a和b,呈 90°,并且走廊的长
度远大于?。
现在 Hja 想知道对于给定的a,b,l,最大的?是多少,如果无论如何棺材都
不可能通过,则输出"My poor head =("
【输入格式】
第一行三个用空格分隔的整数a,b,l,意义如题目所示。
【输出格式】
输出最大的可能的?,保留七位小数,如果无论如何棺材都不可能通过,则
输出"My poor head =("。
【样例输入 1】
2 2 1
【样例输出 1】
1.0000000
【样例输入 2】
2 2 2
【样例输出 2】
2.0000000
【样例输入 3】
2 2 3
【样例输出 3】
1.3284271
【样例输入 4】
2 2 6
【样例输出 4】
My poor head =(
【数据范围与规定】
对于100%的数据,1 ≤ a,b,l ≤ 10 4 。
P100 zhxc
以下解题思路来自xxy大佬的博客。

设直线解析式为 y=(-n/m)* x+n
整理,得:- n * x + m * y + n * m = 0
点(b,a)到直线的距离为:| - b * n - a * m + n * m | / L
(L : 根号下(n^2 + m^2)=L)
最优解就是 - b * n - a * m + n * m 的最大值
然后不知道为啥求了个
b * n + a * m - n *m 的最小值
单峰函数求最小值,三分法每次去掉大的一部分
式子最小值<0 时无解
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const double eps=1e-;
int a,b,l;
double L=,R=;
double ans=0x7f7f7f7f;
double mid1,mid2,t1,t2;
double f(double n){
double m=sqrt(1.0*l*l-n-n);
if(n*m>a*n+b*m) return -;
return (b*m+a*n-n*m)/l;
}
int main(){
freopen("b.in","r",stdin);
freopen("b.out","w",stdout);
scanf("%d%d%d",&a,&b,&l);
if(a>=&&b>=){
printf("%d.0000000",l);
return ;
}
if(a>=l){
printf("%d.0000000",b);
return ;
}
if(b>=){
printf("%d.0000000",a);
return ;
}
int t=;
while(t--){
mid1=(R-L)/+L;
mid2=L+R-mid1;
t1=f(mid1);
t2=f(mid2);
if(t1<||t2<){
printf("My poor head =(");
return ;
}
if(t1<t2){
ans=min(ans,t1);
R=mid2;
}
else{
ans=min(ans,t2);
L=mid1;
}
}
printf("%.7lf",ans);
}
c
【问题描述】
你是能看到第三题的 friends 呢。
——aoao
树是个好东西,删掉树一条边要 1 的代价,随便再加一条边有 1 的代价,求
最小的代价把树变成环。
【输入格式】
第一行一个整数n,代表树的点数。
接下来n − 1行,每行两个数代表树的一条边。
【输出格式】
一行一个整数代表答案。
【样例输入】
4
1 2
2 3
2 4
【样例输出】
3
【数据规模与约定】
对于30%的数据,1≤n≤10。
对于60%的数据,1 ≤ n ≤ 1000。
对于100%的数据,1 ≤ n ≤ 100000。
思路:贪心。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 100010
using namespace std;
int n,tot,ans,root;
int into[MAXN];
int to[MAXN*],net[MAXN*],head[MAXN*];
void add(int u,int v){
to[++tot]=v;net[tot]=head[u];head[u]=tot;
to[++tot]=u;net[tot]=head[v];head[v]=tot;
}
void dfs(int now,int fa){
for(int i=head[now];i;i=net[i])
if(to[i]!=fa){
dfs(to[i],now);
if(into[to[i]]>){
into[now]--;
ans+=(into[to[i]]-)*;
}
}
}
int main(){
freopen("c.in","r",stdin);
freopen("c.out","w",stdout);
scanf("%d",&n);
for(int i=;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
into[u]++;
into[v]++;
}
root=;
for(int i=;i<=n;i++)
if(into[i]==){
root=i;
break;
}
dfs(root,-);
cout<<ans+;
}
/*
8
1 2
1 3
3 4
3 5
4 6
4 7
4 8
3
*/
国庆 day 3 下午的更多相关文章
- 国庆 day 7 下午
思路:见博客. #include<iostream> #include<cstdio> #include<cstring> #include<algorith ...
- 国庆 day 2 下午
最大值(max) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n的 ...
- 国庆 day 1 下午
一道图论好题(graph) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图, ...
- 国庆 day 6 下午
1.数组异或 (xorarray.pas/c/cpp) (xorarray.in/out) 时间限制:2s/空间限制:256M [题目描述] xor——异或,和 and 与or 一样,是一种重要的逻辑 ...
- 2018国庆YALI集训游记
想了想,像之前那样简略地叙述题意和做法,根本没讲清楚,没有任何意义,还不如写写自己的感受. 感觉YALI真的是一所挺不错的学校吧.总是能有一机房的julao轮番吊打你,总是能有集训队的奆佬来给你出dl ...
- 2016.10.4初中部下午NOIP普及组比赛总结
2016.10.4初中部下午NOIP普及组比赛总结 这次的题有些水,只是第四题有点坑. 题目: 比赛:AC+0+AC+50=250 改题:AC+AC+AC+50=350 一.Bill 满地都是水 题目 ...
- 票房和口碑称霸国庆档,用 Python 爬取猫眼评论区看看电影《我和我的家乡》到底有多牛
今年的国庆档电影市场的表现还是比较强势的,两名主力<我和我的家乡>和<姜子牙>起到了很好的带头作用. <姜子牙>首日破 2 亿,一举刷新由<哪吒之魔童降世&g ...
- 搞了我一下午竟然是web.config少写了一个点
Safari手机版居然有个这么愚蠢的bug,浪费了我整个下午,使尽浑身解数,国内国外网站搜索解决方案,每一行代码读了又想想了又读如此不知道多少遍,想破脑袋也想不通到底哪里出了问题,结果竟然是web.c ...
- System.DateUtils 3. IsPM、IsAM 判断是否为上、下午
编译版本:Delphi XE7 function IsPM(const AValue: TDateTime): Boolean; inline;function IsAM(const AValue: ...
随机推荐
- Caffe 激励层(Activation)分析
Caffe_Activation 一般来说,激励层的输入输出尺寸一致,为非线性函数,完成非线性映射,从而能够拟合更为复杂的函数表达式激励层都派生于NeuronLayer: class XXXlayer ...
- activity(工作流)初步学习记录
1.概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期 ...
- 找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程
当我们使用alter system kill session ‘sid,serial#’ 在数据库中kill掉某个会话的时候,如果你观察仔细会发现v$session.paddr发生了改变,从而是的不能 ...
- 浏览器解析,HTTP/HTTPS、TCP/IP、WebSocket协议
浏览器相关 浏览器对同一个域名有连接数限制,大部分是 6. 浏览器指的是 Chrome.Firefox,而浏览器内核则是 Blink.Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则 ...
- [HNOI2015]亚瑟王(期望+DP)
题解 利用期望的线性性,可以把问题转化为求每一个卡牌造成期望的期望值. 然后我们就需要知道每一个卡牌发动技能的概率. 因为当某一张卡牌发动技能时这一轮会结束,这就很难直接计算了. 我们使用DP 设dp ...
- Zabbix分布式配置
Zabbix是一个分布式监控系统,它可以以一个中心点.多个分节点的模式运行,使用Proxy能大大的降低Zabbix Server的压力,Zabbix Proxy可以运行在独立的服务器上,安装Zabbi ...
- 新手做2D手游该用哪些工具?
全球手游行业规模将突破250亿美元,越来越多的开发者开始进入手游研发领域,而作为一名菜鸟,很多时候,如果没有其他开发者的建议,会走很多弯路.一开始进入游戏研发领域的时候,你很难知道该选择什么工具.什么 ...
- nginx和apache作为webserver的差别
1.两者所用的驱动模式不同. nginx使用的是epoll的非堵塞模式事件驱动. apache使用的是select的堵塞模式事件驱动. 2.fastcgi和cgi的差别 当用户请求web服务的时候.w ...
- 10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)
ndk编译C++.提示找不到头文件(ndk-build error: string: No such file or directory) 被这个问题弄得愁眉苦脸啊.心想为啥一个string都找不到呢 ...
- poj_1195Mobile phones,二维树状数组
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...