这次写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. shell 数学运算总结

    # !/bin/bash ## 整数-算数运算 ### 1. expr r=`expr 4 + 5` ### Tips:1. '4''+''5'三者之间有空白 echo $r; r=`expr 4 \ ...

  2. Pandas 命令整理

    在网上看到一个整理的很好的pandas命令合集,转一份供自己查找与参考

  3. P1002 谁拿了最多奖学金

    P1002 谁拿了最多奖学金 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖 ...

  4. [转]一种让超大banner图片不拉伸、全屏宽、居中显示的方法

    现在很多网站的Banner图片都是全屏宽度的,这样的网站看起来显得很大气.这种Banner一般都是做一张很大的图片,然后在不同分辨率下都是显示图片的中间部分.实现方法如下: <html> ...

  5. 将整个文件夹推上github

    /*游戏或者运动才能让我短暂的忘记心痛,现如今感觉学习比游戏和运动还重要——曾少锋*/ 首先你要有一个本地仓库和一个远程仓库(github中的仓库).git文件夹下面不能含有 git文件夹,如果有的话 ...

  6. Rx.NET响应式编程

    响应式编程 Rx.NET 了解下 1. 引言 An API for asynchronous programming with observable streams.ReactiveX is a co ...

  7. 思维题(两点逼近)LeetCode11 Container with Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...

  8. 如何取出word文档里的图片

    在生活当中,Word办公是必不可少的.但是在工作中也会遇到一些麻烦,比如说如何取出word文档里的图片呢?有的人会通过复制粘贴,通过画图保存,可是这种方法未免太繁琐了吧.下面我就来分享一下我的经验. ...

  9. linux的性能优化

    转一位大神的笔记. linux的性能优化: 1.CPU,MEM 2.DISK--RAID 3.网络相关的外设,网卡 linux系统性能分析: top:linux系统的负载,CPU,MEM,SWAP,占 ...

  10. 【python】globle的使用

    python中直接定义的变量就是本地变量,使用global定义的变量就是全局变量.比如: a = 1 b = 1 def foo1(): global b #申明使用全局b a = 2 #a是本地变量 ...