#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack> #define N 100007 using namespace std;
char ch[N];
int ans,pos;
stack<char>s;
int main()
{
freopen("shower.in","r",stdin);
freopen("shower.out","w",stdout);
scanf("%s",ch);int len=strlen(ch);
if(!len){printf("0\n");return ;}
for(int i=;i<len;i++)
{
if(ch[i]==')')
{
if(!pos) ++pos,++ans;
else --pos;
}
else ++pos;
}
printf("%d\n",ans+pos/);
return ;
}

日记

/*
前缀和里二分
但枚举的话由于素数在范围里只有大约7*10^4个,2000询问,理论复杂度1.5*10^8电脑跑得比较快比较快是可以过掉的。
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define ll long long
#define N 1000007 using namespace std;
int T,n,m,k;
int ans,cnt;
int pri[N],tot[N],pos[N];
ll sum[N];
bool no[N]; #define Inline __attribute__( ( optimize ( "-O2" ) ) ) Inline int max(ll a,ll b){return a>b?a:b;} Inline void prime()
{
for(int i=;i<=N;i++)
{
if(!no[i]) pri[++cnt]=i,sum[cnt]=sum[cnt-]+i,tot[i]++;
pos[i]=pri[cnt];
for(int j=;j<=cnt;j++)
{
if(i*pri[j]>N) break;
no[i*pri[j]]=;
if(!i%pri[j]) break;
}
}
for(int i=;i<=N;i++) tot[i]+=tot[i-];
} Inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} Inline int Main()
{
freopen("diary.in","r",stdin);
freopen("diary.out","w",stdout);
prime();T=read();
while(T--)
{
n=read();k=read();ans=-;
if(tot[n]<k) {printf("-1\n");continue;}
if(k==) {printf("d\n",pos[n]);continue;}
for(int i=tot[n];i-k>=;i--)
if(sum[i]-sum[i-k]<=n) ans=max(ans,sum[i]-sum[i-k]);
printf("%d\n",ans);
}
} int dawn=Main();int main(){};

洗衣

/*
暴力建树,floyed算距离
*/
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std;
int dis[][][];
int sz[];
int n,m,a,b,c,d,l; void floyed(int x)
{
for(int k=;k<sz[x];k++)
for(int i=;i<sz[x];i++)
for(int j=;j<sz[x];j++)
{
if(i==j || j==k || k==i) continue;
dis[x][i][j]=min(dis[x][i][j],dis[x][i][k]+dis[x][j][k]);
}
int ans=;
for(int i=;i<sz[x];i++)
for(int j=i+;j<sz[x];j++)
ans+=dis[x][i][j];
printf("%d\n",ans);
} int main()
{
memset(dis,/,sizeof dis);
sz[]=;dis[][][]=;scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d%d%d%d%d",&a,&b,&c,&d,&l);
sz[i]=sz[a]+sz[b];
for(int j=;j<sz[a];j++)
for(int k=;k<sz[a];k++)
dis[i][j][k]=dis[i][k][j]=dis[a][j][k]; for(int j=;j<sz[b];j++)
for(int k=;k<sz[b];k++)
dis[i][j+sz[a]][k+sz[a]]=dis[i][k+sz[a]][j+sz[a]]=dis[b][j][k];
dis[i][c][d+sz[a]]=dis[i][d+sz[a]][c]=l;
floyed(i);
}
}

40暴力

/*
T3
60的数据O(n)求每棵树距离,树形dp。
标算:
考虑拼起来的树答案由三部分组成,假设第一部分为第j颗树,加上一条边连第k棵树。答案F(Ti)=F(Tj)+F(Tk)+j中每个点到k中每个点距离。考虑如何算第三部分距离。
第三部分一定是左边某个点通过中间那条边到右边某个点。
可以看出中间那条边对答案的贡献是左边树的大小*右边成树的大小*L。
右边选哪个点跟左边选哪个点没有关系。可以吧
令g[j][p1]表示j这棵树所有点到p1的距离和。
最后对答案的贡献是g[j][p1]*size[Tk]+size[Tj]*g[k][p2]。
考虑如何求g数组。
发现每棵树都由两棵树拼起来,也就是说每个g数组都可以分成两个子过程求。
g[i][p]=g[j][p]+(l+dis[j][p][p1])+g[k][p2]。
但是g的第二维可能有2^60会炸,所以要开map做记忆化搜索,不用算所有可能状态值。
考虑如何求dis数组。
球法类似g,考虑p1和p在不在同一棵树即可。
dis[i][p1][p2]=dis[j][p1][p2]
或dis[i][p1][p2]=dis[j][p1][p2]+dis[k][p3][p4]
对dis记忆化搜索一下即可。
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<map> using namespace std; const int mo=;
const int maxn=; int n,id1[maxn],id2[maxn],l[maxn],res[maxn]; long long num1[maxn],num2[maxn],size[maxn]; struct rec
{
int p;
long long p1,p2;
rec(){}
rec(int a,long long b,long long c)
{
p=a;
if (b<c) p1=b,p2=c;
else p1=c,p2=b;
}
bool operator<(const rec &a)const
{
if (p!=a.p) return p<a.p;
if (p1!=a.p1) return p1<a.p1;
return p2<a.p2;
}
}; map< pair<int,long long > ,int > ma; map<rec,int> ma2; int solve(int p,long long p1,long long p2)
{
if (!p) return ;
if (p1==p2) return ;
rec x=rec(p,p1,p2);
if (ma2.count(x)) return ma2[x];
if (p1<size[id1[p]])
{
if (p2<size[id1[p]]) ma2[x]=solve(id1[p],p1,p2);
else ma2[x]=((long long)solve(id1[p],num1[p],p1)+solve(id2[p],num2[p],p2-size[id1[p]])+l[p])%mo;
}
else
{
if (p2<size[id1[p]]) ma2[x]=((long long)solve(id1[p],num1[p],p2)+solve(id2[p],num2[p],p1-size[id1[p]])+l[p])%mo;
else ma2[x]=solve(id2[p],p1-size[id1[p]],p2-size[id1[p]]);
}
return ma2[x];
} int solve(int p,long long n)
{
if (p==) return ;
pair<int,long long> px;
px=make_pair(p,n);
if (ma.count(make_pair(p,n))) return ma[px];
if (n<size[id1[p]]) ma[px]=(((long long)solve(id1[p],num1[p],n)+l[p])*(size[id2[p]]%mo)%mo+solve(id2[p],num2[p])+solve(id1[p],n))%mo;
else ma[px]=(((long long)solve(id2[p],num2[p],n-size[id1[p]])+l[p])*(size[id1[p]]%mo)%mo+solve(id1[p],num1[p])+solve(id2[p],n-size[id1[p]]))%mo;
return ma[px];
} int main()
{
freopen("cloth.in","r",stdin);
freopen("cloth.out","w",stdout); while (~scanf("%d",&n))
{
ma.clear();
ma2.clear();
for (int a=;a<=n;a++)
scanf("%d%d%I64d%I64d%d",&id1[a],&id2[a],&num1[a],&num2[a],&l[a]);
size[]=;
for (int a=;a<=n;a++)
size[a]=size[id1[a]]+size[id2[a]];
for (int a=;a<=n;a++)
res[a]=((long long)solve(id1[a],num1[a])*(size[id2[a]]%mo)%mo+(long long)(size[id1[a]]%mo)*(size[id2[a]]%mo)%mo*l[a]%mo+(long long)solve(id2[a],num2[a])*(size[id1[a]]%mo)%mo+res[id1[a]]+res[id2[a]])%mo;
for (int a=;a<=n;a++)
printf("%d\n",res[a]);
}
return ;
}

清北考前刷题day2下午好的更多相关文章

  1. 清北考前刷题day1下午好

    水题(water) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每张牌长和宽 ...

  2. 清北考前刷题da7下午好

    三向城 /* 原图一定是一棵完全二叉树. 根节点是x,左节点是x*2,右节点是x*2+1 转化为二进制往左右走就很明显了. */ #include<iostream> #include&l ...

  3. 清北考前刷题day3下午好

    /* 可以并查集维护 可以发现,某个联通快出现大于等于2个环,一定无法分配. 有解要么一个环,要么没有环. 一个环时答案等于点数乘2(顺时针或逆时针). 没有环是树,对于一个n个点的树,方案一定有n种 ...

  4. 清北考前刷题day6下午好

    /* 贪心 负数一定不取 枚举最高位是1 且答案取为0的 位置, 更新答案. */ #include<iostream> #include<cstdio> #include&l ...

  5. 清北考前刷题da5下午好

    /* (4,1)*(3,1)*(2,1)的话1变成2然后一直是2 2变成1然后变成3 3变成1然后变成4 4变成1 */ #include<iostream> #include<cs ...

  6. 清北考前刷题day4下午好

    /* 辗转相除,每次计算多出现了几个数. */ #include<iostream> #include<cstdio> #include<cstring> #inc ...

  7. 清北考前刷题day2早安

    /* 做法一:按h sort一遍,对于一段区间[i,j],高度花费就是h[j]-h[i] 然后枚举区间,把区间内C排序,一个一个尽量选即可. n^3logn 标算:n^3 dp 高度排序,保证从前往后 ...

  8. 清北考前刷题day4早安

      LI /* 没有考虑次大值有大于一个的情况 */ #include<iostream> #include<cstdio> #include<cstring> # ...

  9. 清北考前刷题day7早安

随机推荐

  1. 【Codeforces 492D】Vanya and Computer Game

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 第一个人攻击一次需要1/x秒 第二个人攻击一次需要1/y秒 这两个数字显然都是小数. 我们可以二分最后用了多少时间来攻击. 显然这个是有单调性 ...

  2. expdp,impdp,include,exclude

    The examples below are based on:- the demo schema SCOTT that is created with script: $ORACLE_HOME/rd ...

  3. python用模块zlib压缩与解压字符串和文件的方法

    摘自:http://www.jb51.net/article/100218.htm Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等. python中 ...

  4. SpringBoot Data JPA 关联表查询的方法

    SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店 ...

  5. java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.login_jsp

    背景:SpringBoot的项目配置了对jsp的支持,走控制器就报这个错误.相关配置如下: <!-- JSP BEGIN --> <dependency> <groupI ...

  6. 郁闷的出纳员(bzoj 1503)

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

  7. 餐巾(cogs 461)

    [问题描述] 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,…,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分 ...

  8. SQL SERVER代理作业删除失败问题

    在SQL Server 2005上遇到了先删除已运行维护计划后,再删除代理中由其产生的作业时,提示删除失败.   DELETE 语句与 REFERENCE 约束"FK_subplan_job ...

  9. [bzoj4300]绝世好题_二进制拆分

    绝世好题 bzoj-4300 题目大意:题目链接. 注释:略. 想法: 二进制拆分然后用一个数组单独存一下当前答案即可. Code: #include <iostream> #includ ...

  10. Java DynamoDB 增加、删除、修改、查询

    准备jar包 <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sd ...