hdu 6103 Kirinriki

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,m,ans;
  4. char s[];
  5. void doit(int l,int r)
  6. {
  7. int d=,nw=;
  8. for(;l<r;l++,r--)
  9. {
  10. while(l+d<r-d&&nw+abs(s[l+d]-s[r-d])<=m)nw+=abs(s[l+d]-s[r-d]),d++;
  11. ans=max(ans,d);
  12. nw-=abs(s[l]-s[r]);
  13. d--;
  14. }
  15. }
  16. void sol()
  17. {
  18. scanf("%d%s",&m,s);
  19. n=strlen(s);
  20. ans=;
  21. for(int i=n-;i>=;i--)doit(,i);
  22. for(int i=;i<n-;i++)doit(i,n-);
  23. printf("%d\n",ans);
  24. }
  25. int main()
  26. {
  27. int tt;scanf("%d",&tt);
  28. while(tt--)sol();
  29. return ;
  30. }

hdu 6035 Colorful Tree

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,cc,cs,cnt[],vis[],c[],sz[];
  4. long long ans,res;
  5. vector<int>g[];
  6. void dfs(int x,int p)
  7. {
  8. sz[x]=;
  9. int ss=;
  10. for(int i=;i<g[x].size();i++)if(g[x][i]!=p)
  11. {
  12. int lst=cnt[c[x]];
  13. dfs(g[x][i],x);
  14. sz[x]+=sz[g[x][i]];
  15. int nw=cnt[c[x]]-lst;
  16. ss+=nw;
  17. nw=sz[g[x][i]]-nw;
  18. res+=1ll*nw*(nw-)/;
  19. }
  20. cnt[c[x]]+=sz[x]-ss;
  21. }
  22. void sol()
  23. {
  24. cc=;
  25. memset(vis,,sizeof(vis));
  26. memset(cnt,,sizeof(cnt));
  27. for(int i=;i<=n;i++)scanf("%d",&c[i]),vis[c[i]]=;
  28. for(int i=;i<=n;i++)if(vis[i])cc++;
  29. for(int i=;i<=n;i++)g[i].clear();
  30. for(int i=;i<n;i++){int u,v;scanf("%d%d",&u,&v);g[u].push_back(v);g[v].push_back(u);}
  31. res=;
  32. dfs(,);
  33. ans=1ll*n*(n-)/*cc;
  34. for(int i=;i<=n;i++)if(vis[i])
  35. {
  36. int sz=n-cnt[i];
  37. res+=1ll*sz*(sz-)/;
  38. }
  39. ans-=res;
  40. printf("Case #%d: %lld\n",++cs,ans);
  41. }
  42. int main()
  43. {
  44. while(scanf("%d",&n)==)sol();
  45. return ;
  46. }

hdu 6071 Lazy Running

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long k,a,b,c,dd,d[][];
  4. vector<pair<long long,int> >g[];
  5. void sol()
  6. {
  7. scanf("%lld%lld%lld%lld%lld",&k,&a,&b,&c,&dd);
  8. long long w=*min(a,b);
  9. for(int i=;i<=;i++)g[i].clear();
  10. g[].push_back(make_pair(,a));
  11. g[].push_back(make_pair(,a));
  12. g[].push_back(make_pair(,b));
  13. g[].push_back(make_pair(,b));
  14. g[].push_back(make_pair(,c));
  15. g[].push_back(make_pair(,c));
  16. g[].push_back(make_pair(,dd));
  17. g[].push_back(make_pair(,dd));
  18. memset(d,0x3f,sizeof(d));
  19. d[][]=;
  20. queue<pair<int,int> >q;
  21. q.push(make_pair(,));
  22. while(!q.empty())
  23. {
  24. long long l=q.front().first,x=q.front().second;
  25. q.pop();
  26. for(int i=;i<;i++)if(d[g[x][i].first][(l+g[x][i].second)%w]>l+g[x][i].second)
  27. {
  28. d[g[x][i].first][(l+g[x][i].second)%w]=l+g[x][i].second;
  29. q.push(make_pair(l+g[x][i].second,g[x][i].first));
  30. }
  31. }
  32. long long ans=2e18;
  33. for(int i=;i<w;i++)if(d[][i]>k)ans=min(ans,d[][i]);else ans=min(ans,d[][i]+(k-d[][i]+w-)/w*w);
  34. printf("%lld\n",ans);
  35. }
  36. int main()
  37. {
  38. int tt;cin>>tt;
  39. while(tt--)sol();
  40. return ;
  41. }

hdu 6073 Matching in Multiplication

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int md=;
  4. int n,vis[];
  5. vector<pair<int,int> >g[];
  6. vector<int>e,t;
  7. void sol()
  8. {
  9. scanf("%d",&n);
  10. for(int i=;i<=n*;i++)vis[i]=,g[i].clear();
  11. for(int i=;i<=n;i++)
  12. {
  13. int u,wu,v,wv;
  14. scanf("%d%d%d%d",&u,&wu,&v,&wv);
  15. g[i].push_back(make_pair(n+u,wu));
  16. g[n+u].push_back(make_pair(i,wu));
  17. g[i].push_back(make_pair(n+v,wv));
  18. g[n+v].push_back(make_pair(i,wv));
  19. }
  20. bool f=false;
  21. for(int i=;i<=n;i++)if(!g[n+i].size())f=true;
  22. if(f){printf("0\n");return;}
  23. int ans=;
  24. for(int i=n+;i<=*n;i++)if(g[i].size()==&&!vis[i])
  25. {
  26. int res=g[i][].second,lst=i,nw=g[i][].first;
  27. while(true)
  28. {
  29. vis[lst]=;vis[nw]=;
  30. int nxt=g[nw][].first+g[nw][].first-lst;
  31. if(g[nxt].size()==)res=;
  32. if(g[nxt].size()!=)
  33. {
  34. int j;
  35. for(j=;j<g[nxt].size();j++)if(g[nxt][j].first==nw)break;
  36. g[nxt].erase(g[nxt].begin()+j);
  37. break;
  38. }
  39. lst=nxt;
  40. nw=g[nxt][].first+g[nxt][].first-nw;
  41. int cc=(g[lst][].first==nw)?g[lst][].second:g[lst][].second;
  42. res=1ll*res*cc%md;
  43. }
  44. ans=1ll*ans*res%md;
  45. }
  46. for(int i=;i<=*n;i++)if(g[i].size()==&&!vis[i])
  47. {
  48. e.clear();t.clear();
  49. e.push_back(i);e.push_back(g[i][].first);
  50. t.push_back(g[i][].second);
  51. int lst=i,nw=g[i][].first;
  52. vis[lst]=;
  53. while(true)
  54. {
  55. vis[nw]=;
  56. int nxt=g[nw][].first+g[nw][].first-lst;
  57. int cc=(g[nw][].first==nxt)?g[nw][].second:g[nw][].second;
  58. t.push_back(cc);
  59. if(vis[nxt])break;
  60. lst=nw;nw=nxt;e.push_back(nw);
  61. }
  62. int res1=,res2=;
  63. for(int i=;i<t.size();i+=)res1=1ll*res1*t[i]%md;
  64. for(int i=;i<t.size();i+=)res2=1ll*res2*t[i]%md;
  65. res1=(res1+res2)%md;
  66. ans=1ll*ans*res1%md;
  67. }
  68. printf("%d\n",ans);
  69. }
  70. int main()
  71. {
  72. int tt;scanf("%d",&tt);
  73. while(tt--)sol();
  74. return ;
  75. }

hdu 6070 Dirt Ratio

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const double eps=1e-;
  4. struct st{double mn,tg;}seg[];
  5. int n,a[],ps[];
  6. void up(int x){seg[x].mn=min(seg[x<<].mn,seg[x<<|].mn);}
  7. void down(int x)
  8. {
  9. seg[x<<].mn+=seg[x].tg;
  10. seg[x<<].tg+=seg[x].tg;
  11. seg[x<<|].mn+=seg[x].tg;
  12. seg[x<<|].tg+=seg[x].tg;
  13. seg[x].tg=;
  14. }
  15. void build(int x,int l,int r)
  16. {
  17. seg[x]=(st){,};
  18. if(l==r)return;
  19. int md=l+r>>;build(x<<,l,md);build(x<<|,md+,r);
  20. }
  21. void modify(int x,int l,int r,int tl,int tr,double v)
  22. {
  23. if(tl<=l&&r<=tr){seg[x].mn+=v,seg[x].tg+=v;return;}
  24. if(seg[x].tg)down(x);
  25. int md=l+r>>;
  26. if(tl<=md)modify(x<<,l,md,tl,tr,v);
  27. if(tr>md)modify(x<<|,md+,r,tl,tr,v);
  28. up(x);
  29. }
  30. double query(int x,int l,int r,int tl,int tr)
  31. {
  32. if(tl<=l&&r<=tr)return seg[x].mn;
  33. if(seg[x].tg)down(x);
  34. int md=l+r>>;double ans=1e9;
  35. if(tl<=md)ans=min(ans,query(x<<,l,md,tl,tr));
  36. if(tr>md)ans=min(ans,query(x<<|,md+,r,tl,tr));
  37. return ans;
  38. }
  39. bool chk(double x)
  40. {
  41. build(,,n);
  42. memset(ps,,sizeof(ps));
  43. for(int i=;i<=n;i++)
  44. {
  45. modify(,,n,ps[a[i]]+,i,);
  46. modify(,,n,,i,-x);
  47. if(query(,,n,,i)<=)return true;
  48. ps[a[i]]=i;
  49. }
  50. return false;
  51. }
  52. int main()
  53. {
  54. int tt;scanf("%d",&tt);
  55. while(tt--)
  56. {
  57. scanf("%d",&n);
  58. for(int i=;i<=n;i++)scanf("%d",&a[i]);
  59. double l=,r=,ans=;
  60. while(r-l>=eps)
  61. {
  62. double md=(l+r)/2.0;
  63. if(chk(md))ans=md,r=md;else l=md;
  64. }
  65. printf("%.6f\n",ans);
  66. }
  67. return ;
  68. }

hdu 6078 Wavel Sequence

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const long long md=998244353ll;
  4. int n,m,a[],b[];
  5. long long dp[][];
  6. void sol()
  7. {
  8. scanf("%d%d",&n,&m);
  9. for(int i=;i<n;i++)scanf("%d",&a[i]);
  10. for(int i=;i<m;i++)scanf("%d",&b[i]);
  11. long long ans=;
  12. memset(dp,,sizeof(dp));
  13. for(int i=;i<n;i++)
  14. {
  15. long long s1=,s2=;//·å£¬¹È
  16. for(int j=;j<m;j++)
  17. {
  18. if(a[i]>b[j])dp[][j]=(dp[][j]+s1)%md;
  19. else if(a[i]<b[j])dp[][j]=(dp[][j]+s2)%md;
  20. else
  21. {
  22. s1=(s1+dp[][j])%md;
  23. s2=(s2+dp[][j]+)%md;
  24. }
  25. }
  26. ans=(ans+s1+s2)%md;
  27. }
  28. printf("%lld\n",ans);
  29. }
  30. int main()
  31. {
  32. int tt;scanf("%d",&tt);
  33. while(tt--)sol();
  34. return ;
  35. }

hdu some problems in Multi-University Training Contest的更多相关文章

  1. hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...

  2. HDU 6143 - Killer Names | 2017 Multi-University Training Contest 8

    /* HDU 6143 - Killer Names [ DP ] | 2017 Multi-University Training Contest 8 题意: m个字母组成两个长为n的序列,两序列中 ...

  3. HDU 6074 - Phone Call | 2017 Multi-University Training Contest 4

    看标程的代码这么短,看我的.... 难道是静态LCA模板太长了? /* HDU 6074 - Phone Call [ LCA,并查集 ] | 2017 Multi-University Traini ...

  4. HDU 6068 - Classic Quotation | 2017 Multi-University Training Contest 4

    /* HDU 6068 - Classic Quotation [ KMP,DP ] | 2017 Multi-University Training Contest 4 题意: 给出两个字符串 S[ ...

  5. HDU 6076 - Security Check | 2017 Multi-University Training Contest 4

    /* HDU 6076 - Security Check [ DP,二分 ] | 2017 Multi-University Training Contest 4 题意: 给出两个检票序列 A[N], ...

  6. HDU 6071 - Lazy Running | 2017 Multi-University Training Contest 4

    /* HDU 6071 - Lazy Running [ 建模,最短路 ] | 2017 Multi-University Training Contest 4 题意: 四个点的环,给定相邻两点距离, ...

  7. HDU 6078 - Wavel Sequence | 2017 Multi-University Training Contest 4

    /* HDU 6078 - Wavel Sequence [ DP ] | 2017 Multi-University Training Contest 4 题意: 给定 a[N], b[M] 要求满 ...

  8. HDU 6070 - Dirt Ratio | 2017 Multi-University Training Contest 4

    比赛时会错题意+不知道怎么线段树维护分数- - 思路来自题解 /* HDU 6070 - Dirt Ratio [ 二分,线段树 ] | 2017 Multi-University Training ...

  9. HDU 6036 - Division Game | 2017 Multi-University Training Contest 1

    /* HDU 6036 - Division Game [ 组合数学,NTT ] | 2017 Multi-University Training Contest 1 题意: k堆石子围成一个圈,数量 ...

  10. HDU 6039 - Gear Up | 2017 Multi-University Training Contest 1

    建模简析: /* HDU 6039 - Gear Up [ 建模,线段树,图论 ] | 2017 Multi-University Training Contest 1 题意: 给你n个齿轮,有些齿轮 ...

随机推荐

  1. lnmp/nginx系统真正有效的图片防盗链完整设置详解

    http://www.it300.com/article-15345.html 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...

  2. (转)Ctrl+H 浪潮Raid配置文档

    说明 本手册适用于LSI芯片Raid卡 包括但不限于Inspur 2008/2108 Raid卡.LSI 9240/9260/9261/9271 等Raid卡. 不同型号的Raid卡在某些功能上的支持 ...

  3. 超实用教程,教你用墨刀做出小红书app原型

    一个新手怎么用1小时快速学会APP原型设计? 1小时很短,这意味着学习时必须把握APP原型设计中的重点.难点,而非面面俱到. 要在短时间内理解.掌握一个工具的使用,最有效的方式莫过于临摹: 看实例视频 ...

  4. Java Selenium - 处理页面弹出窗

    1. 得到当前窗口句柄 2. 得到所有窗口句柄 3. 循环找到目标窗口 String currentWindow = driver.getWindowHandle(); Set<String&g ...

  5. MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号

    MySQL自动编号,确保数据的唯一性

  6. 从零开始一起学习SLAM | 三维空间刚体的旋转

    刚体,顾名思义,是指本身不会在运动过程中产生形变的物体,如相机的运动就是刚体运动,运动过程中同一个向量的长度和夹角都不会发生变化.刚体变换也称为欧式变换. 视觉SLAM中使用的相机就是典型的刚体,相机 ...

  7. unity3d-知识汇总

    itween下载 http://www.youkexueyuan.com/exp_show/1147.html 代码修改精灵图片的透明度 UIBp.GetComponent<Image>( ...

  8. sqli-labs(十八)

    第五十五关:和上一关类似,只是拼凑的方法不一样,所以需要先判断后台是怎么拼凑的 分别输入id=1'--+         id=1"--+             id=') --+     ...

  9. Monogdb 按2个字段值之间的比较

    使用 $where BsonDocument query = new BsonDocument("$where", "this.soDate<this.pEffDa ...

  10. [4]传奇3服务器源码分析一 SelGate

    1. 2 留存 服务端下载地址: 点击这里