每天一套题打卡|河南省第九届ACM/ICPC
A 表达式求值
表达式求值:可以用递归求解,也可以用栈模拟,考过多次。
类似题目:NYOJ305,NYOJ35
用栈模拟做法:
#include <stdio.h>
#include <string.h>
#include <stack>
using namespace std;
stack<int> dsta;//数据栈
stack<char> osta;//字符栈
char s[1005];
int main()
{
int T,i,j;
scanf("%d",&T);
while(T--)
{
scanf("\n%s",&s[1]);
int len=strlen(&s[1]);
s[0]='('; s[++len]=')';//在给定的表达式两端添加上一对括号
for(i=0;i<=len;i++)
{
if(s[i]=='(')
osta.push(s[i]);
else if(s[i]=='S')
{
osta.push('(');//压入一个左括弧
i+=3;
}
else if(s[i]>='0' && s[i]<='9')
{
int v=0;
while(s[i]>='0' && s[i]<='9')
v=v*10+(s[i++]-'0');
i--;
dsta.push(v);
}
else if(s[i]=='+')
{
while(osta.top()!='(' && osta.top()!=',')
{
int a=dsta.top(); dsta.pop();
int b=dsta.top(); dsta.pop();
int c;
switch(osta.top())
{
case '+':c=b+a;break;
case '*':c=b*a;break;
}
dsta.push(c);
osta.pop();
}
osta.push(s[i]);
}
else if(s[i]=='*')
{
if(osta.top()=='*')
{
int a=dsta.top(); dsta.pop();
int b=dsta.top(); dsta.pop();
dsta.push(b*a);
osta.pop();
}
osta.push(s[i]);
}
else if(s[i]==')' || s[i]==',')//遇到逗号及时求值
{ //当遇到 ','时,就把Smax的前半部分表达式的值求出来
//运算符号 都在这里计算 + - * / smax自定义
while(osta.top()!='(')
{
int a=dsta.top(); dsta.pop();
int b=dsta.top(); dsta.pop();
int c,suma=0,sumb=0;
switch(osta.top())
{
case '+':c=b+a;break;
case '*':c=b*a;break;
case ',':{
//逐位分割求和
while(b!=0)
{
sumb+=b%10; b/=10;
}
while(a!=0)
{
suma+=a%10; a/=10;
}
c=max(suma,sumb);
break;
}
}
dsta.push(c);
osta.pop();
}
osta.pop();
if(s[i]==',')//求完值之后,把逗号压入栈内,以便后半部分Smax表达式的求值
osta.push(s[i]);
}
}
printf("%d\n",dsta.top());
dsta.pop();
}
return 0;
}
B 宣传墙
状压dp 推状态转移
或者用矩阵快速幂优化
网上代码看不懂。。。
C 信道安全
单源点的最短路修改版,用dijkstra做,初始化dist数组和松弛改一下就可以了。
D 导弹发射
LIS的二分写法,数据量1e5 O(N^2)的会超时。
另外题目中说的 导弹一直在前进,不能以原来的X/Y轴作为坐标轴了,需要坐标变换以两条射线为坐标轴
E 机器设备
我用bfs搜索做的,从原点(0,0)开始搜,每次将与当前点相切的圆心齿轮加入到队列,这里的相切意思是:两个圆心距离等于两个圆半径和
F Decimal integer conversion
题意:给一个十进制数 的二进制数 和一个 三进制数,其中各有一位是错的,求正确的十进制数
枚举一下就可以了,二进制和三进制 转成10进制后出现相同的数就是答案
G Prototypes analyze
一个二叉搜索树,问形状有多少个。
明天看题解,学会建树吧......
jBST二叉搜索树的创建 参考博客:https://blog.csdn.net/stpeace/article/details/9067029
nyoj1278 题解参考博客:https://blog.csdn.net/baidu_35643793/article/details/70792326
这道题 题意就是 判断二叉排序树的形状有多少个不一样。
首先 建树 就用上面的板子。
然后就是 判断形状:只需要各个位置是否对应一致有值就行了(如果一颗树在这个地方是空的,那么另一颗树要想与它形状相同,这个地方也必须是空的)
//BST二叉搜索树;
#include<cstdio>
#include<iostream>
using namespace std;
int flag;
typedef struct Node
{
int key;
struct Node *lChild,*rChild;
} Node,*BST;
bool BSTInsert(Node * &p,int element)
{
if(p==NULL)
{
p=new Node;
p->key=element;
p->lChild=p->rChild=NULL;
return true;
}
if(element==p->key)
return false;
if(element<p->key)
return BSTInsert(p->lChild,element);
return BSTInsert(p->rChild,element);
}
void judge(BST T1,BST T2) //判断形状;
{
if(T1==NULL&&T2==NULL)
return;
else if(T1&&T2)
{
judge(T1->lChild,T2->lChild);
judge(T1->rChild,T2->rChild);
}
else
flag=0;
}
int main()
{
int t,n,k,x;
BST tree[55];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(int i=0; i<n; i++)
{
BST T=NULL;
for(int j=0; j<k; j++) //建树;
{
scanf("%d",&x);
BSTInsert(T,x);
}
tree[i]=T;
}
//找形状种类数;
int ans=0;
for(int i=0; i<n; i++)
{
int flog=1;
for(int j=i+1; j<n; j++)
{
flag=1;
judge(tree[i],tree[j]);
if(flag)
{
flog=0;
break;
}
}
if(flog)
++ans;
}
printf("%d\n",ans);
}
return 0;
}
每天一套题打卡|河南省第九届ACM/ICPC的更多相关文章
- 每天一套题打卡|河南省第十一届ACM/ICPC
A 计划日 题意:已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗? 模拟日期计算: 计算星期可以用基姆拉尔森公式 //中国 ...
- 每天一套题打卡|河南省第十届ACM/ICPC
A.谍报分析 题意:请你编程,快速统计出频率高的前十个单词. 思路:字符串输入,map哈希表map<string,int >记录每个单词出现的次数,pair重载优先级 #include&l ...
- 每天一套题打卡|河南省第七届ACM/ICPC
A 海岛争霸 题目:Q次询问,他想知道从岛屿A 到岛屿B 有没有行驶航线,若有的话,所经过的航线,危险程度最小可能是多少. 多源点最短路,用floyd 在松弛更新:g[i][k] < g[i][ ...
- 每天一套题打卡|河南省第八届ACM/ICPC
A 挑战密室 化学方程式求分子量 这题我懒得写了 可以用map<string,int>哈希表,表示每种分子的相对分子质量 之后,从头遍历到尾. 1.数字:连读直到不是数字 2.字母:连读直 ...
- nyoj 1279 (河南省第九届ACM比赛 D 题)
思路:变换一下坐标系新的坐标系就是给定的两条直线,变换之后求 x,y 都严格递增的点的个数的max: 求 x,y 都严格递增的点的个数的max,按照x的从小到大排序,x相同的按照y的从大到小排序然后对 ...
- 递推水题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table
题目传送门 /* 模拟递推水题 */ #include <cstdio> #include <iostream> #include <cmath> #include ...
- [水题日常]UVA1639 糖果(Candy,ACM/ICPC Chengdu 2012)
今天来尝试了几道数学期望相关的题,这是我认为比较有趣的一道题 这次不废话啦直接开始~ 一句话题意:两个分别装有n个糖果的盒子,每次随机选一个盒子然后拿走一颗糖(选的概率分别是\(p\)和\((1-p) ...
- codeforces水题100道 第十八题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table (brute force)
题目链接:http://www.codeforces.com/problemset/problem/509/A题意:f[i][1]=f[1][i]=1,f[i][j]=f[i-1][j]+f[i][j ...
- 第46套题【STL】【贪心】【递推】【BFS 图】
已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母 ...
随机推荐
- 精选傻X错误 && 自己的套路
声明 参考课件由Accelerator汇编 1. 随手注意的细节 你写的main 真的是 main 么? 在无向图或者网络流找反向边的时候,编号 \(xor 1\) 的前提是,你的第一条边编号是 2或 ...
- middlewares.py
1.数据需要selenium解析后才能呈现 # middlewares.py from scrapy import signals import scrapy from selenium import ...
- 《LinuxTools》
https://zhuanlan.zhihu.com/p/37196870 Linux基础 Linux工具进阶 工具参考篇 1. gdb 调试利器 2. ldd 查看程序依赖库 3. lsof 一切皆 ...
- 洛谷 P4710 「物理」平抛运动
洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...
- 转:对softmax讲解比较清楚的博客
https://blog.csdn.net/wgj99991111/article/details/83586508
- Springboot2 Metrics之actuator集成influxdb, Grafana提供监控和报警
到目前为止,各种日志收集,统计监控开源组件数不胜数,即便如此还是会有很多人只是tail -f查看一下日志文件.随着容器化技术的成熟,日志和metrics度量统计已经不能仅仅靠tail -f来查看了,你 ...
- CSS教程详解
CSS学习笔记 一.CSS基础 1.CSS简介 层叠:一层一层的: 样式表:很多的属性和样式 CSS语法: <style> 选择器 { 属性名:属性值; 属性名:属性值; …… } &l ...
- HTML教程详解
HTML学习笔记 目录 一.html简介 1.html是什么? 2.html能做什么(html的作用)? 3.html书写规范 二.html基本标签 1.标签的语法 2.标签的分类 3.常用标签: 1 ...
- .NET WebFrom跨时区项目时间问题处理方法
前段时间因为公司的一个 WebFrom 项目设计到跨时区的问题,处理了一段时间,终于解决了,写个博客记录一下,方便以后回顾以及给他人提供一个参考的方法. 本次的项目因为跨越了多个时区,在一些时间上会受 ...
- runtime template in vuejs
在使用vuejs开发的过程中,有时候我们需要动态模板的场景,也就是说模板并不是静态定义好的,而是动态变化的. 比如在做一个所见所得编辑器时,编辑人员可能时刻需要调整他设计的页面内容,而如果页面内容包含 ...