1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<stack>
  5.  
  6. #define N 100007
  7.  
  8. using namespace std;
  9. char ch[N];
  10. int ans,pos;
  11. stack<char>s;
  12. int main()
  13. {
  14. freopen("shower.in","r",stdin);
  15. freopen("shower.out","w",stdout);
  16. scanf("%s",ch);int len=strlen(ch);
  17. if(!len){printf("0\n");return ;}
  18. for(int i=;i<len;i++)
  19. {
  20. if(ch[i]==')')
  21. {
  22. if(!pos) ++pos,++ans;
  23. else --pos;
  24. }
  25. else ++pos;
  26. }
  27. printf("%d\n",ans+pos/);
  28. return ;
  29. }

日记

  1. /*
  2. 前缀和里二分
  3. 但枚举的话由于素数在范围里只有大约7*10^4个,2000询问,理论复杂度1.5*10^8电脑跑得比较快比较快是可以过掉的。
  4. */
  5. #include<iostream>
  6. #include<cstdio>
  7. #include<cstring>
  8.  
  9. #define ll long long
  10. #define N 1000007
  11.  
  12. using namespace std;
  13. int T,n,m,k;
  14. int ans,cnt;
  15. int pri[N],tot[N],pos[N];
  16. ll sum[N];
  17. bool no[N];
  18.  
  19. #define Inline __attribute__( ( optimize ( "-O2" ) ) )
  20.  
  21. Inline int max(ll a,ll b){return a>b?a:b;}
  22.  
  23. Inline void prime()
  24. {
  25. for(int i=;i<=N;i++)
  26. {
  27. if(!no[i]) pri[++cnt]=i,sum[cnt]=sum[cnt-]+i,tot[i]++;
  28. pos[i]=pri[cnt];
  29. for(int j=;j<=cnt;j++)
  30. {
  31. if(i*pri[j]>N) break;
  32. no[i*pri[j]]=;
  33. if(!i%pri[j]) break;
  34. }
  35. }
  36. for(int i=;i<=N;i++) tot[i]+=tot[i-];
  37. }
  38.  
  39. Inline int read()
  40. {
  41. int x=,f=;char c=getchar();
  42. while(c>''||c<''){if(c=='-')f=-;c=getchar();}
  43. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  44. return x*f;
  45. }
  46.  
  47. Inline int Main()
  48. {
  49. freopen("diary.in","r",stdin);
  50. freopen("diary.out","w",stdout);
  51. prime();T=read();
  52. while(T--)
  53. {
  54. n=read();k=read();ans=-;
  55. if(tot[n]<k) {printf("-1\n");continue;}
  56. if(k==) {printf("d\n",pos[n]);continue;}
  57. for(int i=tot[n];i-k>=;i--)
  58. if(sum[i]-sum[i-k]<=n) ans=max(ans,sum[i]-sum[i-k]);
  59. printf("%d\n",ans);
  60. }
  61. }
  62.  
  63. int dawn=Main();int main(){};

洗衣

  1. /*
  2. 暴力建树,floyed算距离
  3. */
  4. #include<iostream>
  5. #include<cstdio>
  6. #include<cstring>
  7.  
  8. using namespace std;
  9. int dis[][][];
  10. int sz[];
  11. int n,m,a,b,c,d,l;
  12.  
  13. void floyed(int x)
  14. {
  15. for(int k=;k<sz[x];k++)
  16. for(int i=;i<sz[x];i++)
  17. for(int j=;j<sz[x];j++)
  18. {
  19. if(i==j || j==k || k==i) continue;
  20. dis[x][i][j]=min(dis[x][i][j],dis[x][i][k]+dis[x][j][k]);
  21. }
  22. int ans=;
  23. for(int i=;i<sz[x];i++)
  24. for(int j=i+;j<sz[x];j++)
  25. ans+=dis[x][i][j];
  26. printf("%d\n",ans);
  27. }
  28.  
  29. int main()
  30. {
  31. memset(dis,/,sizeof dis);
  32. sz[]=;dis[][][]=;scanf("%d",&m);
  33. for(int i=;i<=m;i++)
  34. {
  35. scanf("%d%d%d%d%d",&a,&b,&c,&d,&l);
  36. sz[i]=sz[a]+sz[b];
  37. for(int j=;j<sz[a];j++)
  38. for(int k=;k<sz[a];k++)
  39. dis[i][j][k]=dis[i][k][j]=dis[a][j][k];
  40.  
  41. for(int j=;j<sz[b];j++)
  42. for(int k=;k<sz[b];k++)
  43. dis[i][j+sz[a]][k+sz[a]]=dis[i][k+sz[a]][j+sz[a]]=dis[b][j][k];
  44. dis[i][c][d+sz[a]]=dis[i][d+sz[a]][c]=l;
  45. floyed(i);
  46. }
  47. }

40暴力

  1. /*
  2. T3
  3. 60的数据O(n)求每棵树距离,树形dp。
  4. 标算:
  5. 考虑拼起来的树答案由三部分组成,假设第一部分为第j颗树,加上一条边连第k棵树。答案F(Ti)=F(Tj)+F(Tk)+j中每个点到k中每个点距离。考虑如何算第三部分距离。
  6. 第三部分一定是左边某个点通过中间那条边到右边某个点。
  7. 可以看出中间那条边对答案的贡献是左边树的大小*右边成树的大小*L。
  8. 右边选哪个点跟左边选哪个点没有关系。可以吧
  9. 令g[j][p1]表示j这棵树所有点到p1的距离和。
  10. 最后对答案的贡献是g[j][p1]*size[Tk]+size[Tj]*g[k][p2]。
  11. 考虑如何求g数组。
  12. 发现每棵树都由两棵树拼起来,也就是说每个g数组都可以分成两个子过程求。
  13. g[i][p]=g[j][p]+(l+dis[j][p][p1])+g[k][p2]。
  14. 但是g的第二维可能有2^60会炸,所以要开map做记忆化搜索,不用算所有可能状态值。
  15. 考虑如何求dis数组。
  16. 球法类似g,考虑p1和p在不在同一棵树即可。
  17. dis[i][p1][p2]=dis[j][p1][p2]
  18. 或dis[i][p1][p2]=dis[j][p1][p2]+dis[k][p3][p4]
  19. 对dis记忆化搜索一下即可。
  20. */
  21. #include<cstdio>
  22. #include<cstdlib>
  23. #include<cstring>
  24. #include<algorithm>
  25. #include<map>
  26.  
  27. using namespace std;
  28.  
  29. const int mo=;
  30. const int maxn=;
  31.  
  32. int n,id1[maxn],id2[maxn],l[maxn],res[maxn];
  33.  
  34. long long num1[maxn],num2[maxn],size[maxn];
  35.  
  36. struct rec
  37. {
  38. int p;
  39. long long p1,p2;
  40. rec(){}
  41. rec(int a,long long b,long long c)
  42. {
  43. p=a;
  44. if (b<c) p1=b,p2=c;
  45. else p1=c,p2=b;
  46. }
  47. bool operator<(const rec &a)const
  48. {
  49. if (p!=a.p) return p<a.p;
  50. if (p1!=a.p1) return p1<a.p1;
  51. return p2<a.p2;
  52. }
  53. };
  54.  
  55. map< pair<int,long long > ,int > ma;
  56.  
  57. map<rec,int> ma2;
  58.  
  59. int solve(int p,long long p1,long long p2)
  60. {
  61. if (!p) return ;
  62. if (p1==p2) return ;
  63. rec x=rec(p,p1,p2);
  64. if (ma2.count(x)) return ma2[x];
  65. if (p1<size[id1[p]])
  66. {
  67. if (p2<size[id1[p]]) ma2[x]=solve(id1[p],p1,p2);
  68. else ma2[x]=((long long)solve(id1[p],num1[p],p1)+solve(id2[p],num2[p],p2-size[id1[p]])+l[p])%mo;
  69. }
  70. else
  71. {
  72. 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;
  73. else ma2[x]=solve(id2[p],p1-size[id1[p]],p2-size[id1[p]]);
  74. }
  75. return ma2[x];
  76. }
  77.  
  78. int solve(int p,long long n)
  79. {
  80. if (p==) return ;
  81. pair<int,long long> px;
  82. px=make_pair(p,n);
  83. if (ma.count(make_pair(p,n))) return ma[px];
  84. 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;
  85. 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;
  86. return ma[px];
  87. }
  88.  
  89. int main()
  90. {
  91. freopen("cloth.in","r",stdin);
  92. freopen("cloth.out","w",stdout);
  93.  
  94. while (~scanf("%d",&n))
  95. {
  96. ma.clear();
  97. ma2.clear();
  98. for (int a=;a<=n;a++)
  99. scanf("%d%d%I64d%I64d%d",&id1[a],&id2[a],&num1[a],&num2[a],&l[a]);
  100. size[]=;
  101. for (int a=;a<=n;a++)
  102. size[a]=size[id1[a]]+size[id2[a]];
  103. for (int a=;a<=n;a++)
  104. 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;
  105. for (int a=;a<=n;a++)
  106. printf("%d\n",res[a]);
  107. }
  108. return ;
  109. }

清北考前刷题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. BNUOJ 1585 Girls and Boys

    Girls and Boys Time Limit: 5000ms Memory Limit: 10000KB This problem will be judged on PKU. Original ...

  2. nyoj 86 找球号(一)(set,map)

    找球号(一) 时间限制:3000 ms  |            内存限制:65535 KB 难度:3   描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0& ...

  3. 走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞

    n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未 ...

  4. Linux下汇编语言学习笔记17 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  5. Spring Cloud(7):Zuul自定义过滤器和接口限流

    上文讲到了Zuul的基本使用: https://www.cnblogs.com/xuyiqing/p/10884860.html 自定义Zuul过滤器: package org.dreamtech.a ...

  6. idea中javaweb的mysql8.0.15配置问题

    mysql8.0.x以后的版本在连接数据库的时候有些不同. 首先: Class.forName("com.mysql.cj.jdbc.Driver"); 其次: DriverMan ...

  7. element-ui自定义table表头

    场景描述: 这个需求的场景很简单,表头自定义居中显示 <el-table-column show-overflow-tooltip prop="telephone" labe ...

  8. Ubuntu 16.04安装VirtualBox 5.1实现无缝模式

    个人电脑版的虚拟机推荐使用VirtualBox,因为其免费,比起VMware到处要找破解强得多,且最重要的一点是无缝模式,让其感觉不出再用两个操作系统. 下载: wget http://downloa ...

  9. Windows系统下JAVA开发环境搭建

    首先我们需要下载JDK(JAVA Development Kit),JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库. 下载地址:http://www.or ...

  10. 基于cocos2d-x-3.2学习Box2D(一)

    cocos版本号:cocos2d-x-3.2 环境:Win7+VS2013 因为一些太底层的实现我如今的能力学习不到,仅仅能做一些简单的笔记,供以后翻阅.假设别人可以得到帮助,莫大的荣幸. 一.创建世 ...