这次写day2的总结

T1:表达式

题面:给你一串表达式

在本题中,我们对合法表达式定义如下:
1. 任何连续(至少1个)数字是合法表达式;
2. 若x是合法表达式,则(x)也是合法表达式;
3. 若x和y 是合法表达式,则x+y、x-y、x*y、x/y都是合法表达式;
4. 若x是合法表达式,则在x 前后添加任意数量的空白符也是合法表达式。
现在给你若干个表达式,请你判断这些表达式是否是合法的。

emmmm,写一个类似于区间dp的东西就行啦(的确定复合NOIPday2T2的难度的,但是好麻烦的感觉)

emmmmm自己没有来得及改自己的wa程序,借用学长的ac程序

#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define up(i,j,n) for (int i = j; i <= n; i++)
#define down(i,j,n) for (int i = j; i >= n; i--)
#define cmax(a,b) a = max (a, b)
#define cmin(a,b) a = min (a, b)
#define FILE "expr" const int MAXN = ;
const int oo = 0x3f3f3f3f; int T, N;
char s[MAXN];
int vaild[MAXN][MAXN]; bool isop(char o){
if (o == '+') return ;
if (o == '-') return ;
if (o == '*') return ;
if (o == '/') return ;
return ;
} bool allempty(int le, int ri){
up (i, le, ri) if (s[i] != ' ') return ;
return ;
} bool chk(int le, int ri){
if (vaild[le][ri] != -) return vaild[le][ri];
if (le > ri) return vaild[le][ri] = ;
if (allempty(le, ri)) return vaild[le][ri] = ;
vaild[le][ri] = ;
bool allnumber = ;
up (i, le, ri) if (s[i] < '' || s[i] > '') {
allnumber = ;
break;
}
if (allnumber) return vaild[le][ri] = ;
if (le == ri) return vaild[le][ri] = ;
if (s[le] == '(' && s[ri] == ')') return vaild[le][ri] = chk(le + , ri - );
bool ok[MAXN];
up (i, le, ri) ok[i] = ;
up (i, le, ri) if (isop(s[i])) {
if (chk(le, i - )) ok[i - ] |= ;
up (j, le + , i - ) if (isop(s[j]) && ok[j - ])
ok[i - ] |= chk(j + , i - );
}
up (i, le + , ri) if (isop(s[i]) && ok[i - ])
vaild[le][ri] |= chk(i + , ri);
int lower = le - , upper = ri + ;
while (s[lower + ] == ' ') lower++;
while (s[upper - ] == ' ') upper--;
vaild[le][ri] |= chk(lower + , upper - );
return vaild[le][ri];
} int main(){
freopen(FILE".in", "r", stdin);
freopen(FILE".out", "w", stdout);
scanf("%d", &T);
char ch = getchar();
while (T--) {
gets(s);
N = strlen(s);
up (i, , N - ) up (j, i, N - ) vaild[i][j] = -;
puts(chk(, N - ) ? "Yes" : "No");
}
return ;
}

T2:食物链

emmmmm省选题还行

题面:给你一些捕食关系,求有多少条食物链

emmmm一A?类似于拓扑序的东西,我把每一个当前入度为零的点所连的边的权设成1,每次去边就往下传递值,最后一个点就是答案。

#include<bits/stdc++.h>
#define mode 1000000007
using namespace std;
map<string,int> a;
int m;
struct node
{
int y;
int next;
}b[];
int lv[];
int n;
int sum;
int f[];
int op[];
int vl[];
int q[];
int num; void init()
{
cin>>m;
memset(lv,,sizeof(lv));
memset(op,,sizeof(op));
for(int i=;i<=m;i++)
{
string x;
string y;
cin>>x>>y;
if(a[x]==)
a[x]=++n;
if(a[y]==)
a[y]=++n;
b[++sum].y=a[y];
b[sum].next=f[a[x]];
f[a[x]]=sum;
lv[a[y]]++;
vl[a[x]]++;
}
num=n;
} void topsort(int x)
{
q[]=x;
op[x]=;
int tou=,wei=;
while(tou<wei)
{
tou++;
int t=q[tou];
for(int i=f[t],y;i;i=b[i].next)
{
lv[y=b[i].y]--;
op[y]=(op[y]+op[t])%mode;
if(lv[y]==)q[++wei]=y;
}
}
cout<<op[wei]<<endl;
} int main()
{
freopen("chain.in","r",stdin);
freopen("chain.out","w",stdout);
init();
for(int i=;i<=n;i++)
if(lv[i]==)b[++sum].y=i,b[sum].next=f[n+],f[n+]=sum,lv[i]++;
for(int i=;i<=n;i++)
if(vl[i]==)b[++sum].y=n+,b[sum].next=f[i],f[i]=sum,lv[n+]++;
topsort(n+);
int yu=;
/*for(int i=1;i<=n;i++)
if(vl[i]==0)yu=(op[i]+yu)%mode;
cout<<yu<<endl;*/
}

T3:emmmm学长说是出烂的题了

题面:从(0,0)走到(n,m)有多少种走法,其中有k个点是坏点,不能通过。

山神讲过的题,把每个坏点排序,x为第一关键字,y第二关键字,从小到大,

设dp[i]表示到第i个坏点且不经过其他坏点的总方案数,新增加一个点(n,m),则dp[k]为所求答案。

则有状态转移方程dp[i] = C[x[i]+y[i],x[i]) - sum(dp[j] * C(x[i] - x[j] + y[i] - y[j],x[i] - x[j])

那么问题就是快速求组合数了,容我智障,数论0基础,不会求

学长教了一种o(n)预处理,o(1)查询的求组合数的方法。

int C(int a, int b){
if (a < || b < || a < b) return ;
return mul(fac[a], mul(inv[b], inv[a - b]));
}
void Prepare(){
scanf("%d%d%d", &N, &M, &K);
up (i, , K) scanf("%d%d", &a[i].fi, &a[i].se);
a[++K] = make_pair(N, M);
sort(a + , a + K + );
fac[] = ; inv[] = ; inv[] = ;
up (i, , LIM) fac[i] = mul (i, fac[i - ]);
up (i, , LIM) inv[i] = mul (mod - mod / i, inv[mod % i]);
up (i, , LIM) cmul(inv[i], inv[i - ]);
}

10-17(day2)的更多相关文章

  1. RDIFramework.NET ━ 9.10 岗位(职位)管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.10  岗位(职位)管理 -Web部分 岗位(职位)管理模块主要是针对组织机构的岗位(职位)进行管理,包括:增加.修改.删除. ...

  2. 【转1】Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结

    Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结 关于 Appium 1.6.3 在Xcode 8, 10.2 的iOS模拟器上的问题很多,本人也差点放弃 ...

  3. Linux CentOS7下安装Zookeeper-3.4.10服务(最新)

    Linux CentOS7下安装Zookeeper-3.4.10服务(最新) 2017年10月27日 01:25:26 极速-蜗牛 阅读数:1933   版权声明:本文为博主原创文章,未经博主允许不得 ...

  4. Noip模拟79 2021.10.17(题目名字一样)

    T1 F 缩点缩成个$DAG$,然后根据每个点的度数计算期望值 1 #include<cstdio> 2 #include<cstring> 3 #include<vec ...

  5. python学习(day2)

    1.常用数据类型及内置方法 1.列表(list) 定义:在中括号[]内存放任意多个值,用逗号隔开. 具体函数和内置方法如下: #定义学生列表,可存放多个学生 students=['a','b','c' ...

  6. python第10天(下)

    https://www.cnblogs.com/zingp/p/6863170.html  一:IO模型介绍 IO发生时涉及的对象和步骤 对于一个网络IO(network IO),它会涉及到两个系统对 ...

  7. 自学python之路(day2)

    1. 格式化输出 %表示占位符 ,s表示字符串 ,d表示数字,%s就是代表字符串占位符,%d,是数字占位符 示例1:输入用户的姓名.性别.年龄.爱好的通用模板 name = input("请 ...

  8. swift 集成使用最新版百度地图_v2.10.2(一)

    目前在开发中使用百度地图的APP越来越多了,我在网上找的集成百度地图的例子不是很多,于是我就将我集成百度地图的过程记录了下来: 一.前提:安装CocoaPods sudo gem install co ...

  9. 浅谈自学Python之路(day2)

    今天的主要内容是: 标准库 数据类型知识 数据运算 三元运算 bytes类型 字符串操作 字典 集合 标准库 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有 ...

  10. 【Unity|C#】基础篇(10)——泛型(Generic)/ 泛型约束条件(where)

    [学习资料] <C#图解教程>(第17章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

随机推荐

  1. caffe安装编译问题-ImportError: No module named google.protobuf.internal

    问题描述 ~/Downloads/caffe$ python Python (default, Dec , ::) [GCC ] on linux2 Type "help", &q ...

  2. Spring boot 2.1.0 -- swagger2 整合

    依赖版本信息 Spring boot 2.1.0.RELEASE swagger2 2.7.0 1. mvn 配置  pom.xml 包引入 <!--swagger2依赖--> <d ...

  3. poj-1239(递推关系)好难

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...

  4. REST与RPC的简单对比

    一.REST:Representational State Transfer,表述性状态转移 REST是一种架构风格,指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是RESTf ...

  5. MySQL--”自然键”和”代理键”优缺点

    ##=====================================================================================## 在数据库表设计中会纠 ...

  6. 使用C#和MSMQ开发消息处理程序

    简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列和电子邮件有着很多相似处,他们都包含多个属性,用于保存消息, ...

  7. NOSQL之REDIS

    Redis是NoSQL中比较常典型的一个非关系型数据库,在日常工作中也是最为常见的.Redis是一个由C语言编写的开源的.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据 ...

  8. 使用python把html网页转成pdf文件

    我们看到一些比较写的比较好文章或者博客的时候,想保存下来到本地当一个pdf文件,当做自己的知识储备,以后即使这个博客或者文章的连接不存在了,或者被删掉,咱们自己也还有. 当然咱们作为一个coder,这 ...

  9. nyoj 光棍的yy

    655-光棍的yy 内存限制:64MB 时间限制:1000ms Special Judge: Noaccepted:2 submit:3 题目描述: yy经常遇见一个奇怪的事情,每当他看时间的时候总会 ...

  10. 【转】每天一个linux命令(51):lsof命令

    原文网址:http://www.cnblogs.com/peida/archive/2013/02/26/2932972.html lsof(list open files)是一个列出当前系统打开文件 ...