这次写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. ACCESS表的视图

    ACCESS表的视图 点击:   发布日期:2007-8-31 6:37:00   进入论坛     表是关系型数据库的基本结构.在Access中,表是一种关系特定主题的数据集合,如产品.供应商等.为 ...

  2. CentOS 下安装和使用 Docker

    引言: 在服务器开发过程中,环境部署无疑是及其繁琐的事情,特别是当项目数量和规模达到一定级别之后,在一台新的机器上部署项目环境无疑是极其漫长而痛苦的,那么什么办法能够实现我们的目标:在开发环境的一次配 ...

  3. Okhttp之CallServerInterceptor简单分析

    在Okhttp源码分析专栏的几篇博客分析了Okhttp几个拦截器的主要功能,还剩下最后一个拦截器CallServerInterceptor没有分析,本篇博客就简单分析下该拦截器的功能. 在Okhttp ...

  4. postman-进阶使用

    管理请求 保存请求-添加“打开百度首页请求” 设置请求方式为Get,地址为www.baidu.com.点击右侧保存按钮 在弹出的保存请求中设置保存的内容.Collections:百度,Request ...

  5. Eclipse Error: The refactoring does not change any source code

    最近在做android项目的过程中遇到这样一个问题,新增一个activity的时候添加不成,eclipse提示The refactoring does not change any source co ...

  6. 【linux】使用swap文件恢复非正常关闭的文件

    前言 使用vim的时候,文件编辑过程中可能会出现bug,导致非正常关闭.为了保存刚刚修改的内容,需要对文件进行恢复. 操作过程 1.查看目录文件 zrj@zrj-ThinkPad-E470:~/wor ...

  7. vector容器的用法以及动态数组

    vector容器不必去管大小 string申明的数组已经是动态的了 若是int类型的话,需要 cin>>N: int a[N]会出错 ,必须是int *p = new int[N] 然后再 ...

  8. node V8 的垃圾回收机制

    将变量设置为null意味着切断变量与它此前引用的值之间的连接.当垃圾收集器下次运行时,就会删除这些值并回收它们占用的内存.

  9. Nginx 整合 FastDFS 实现文件服务器

    原文地址:Nginx 整合 FastDFS 实现文件服务器 博客地址:http://www.extlight.com 一.前言 本篇衔接<FastDFS 环境搭建>内容进行讲解,上篇文章我 ...

  10. JZ2440 裸机驱动 第7章 内存管理单元MMU

    本章目标:     了解虚拟地址和物理地址的关系:     掌握如何通过设置MMU来控制虚拟地址到物理地址的转化:     了解MMU的内存访问权限机制:     了解TLB.Cache.Write ...