hdu some problems in Multi-University Training Contest
hdu 6103 Kirinriki
- #include<bits/stdc++.h>
- using namespace std;
- int n,m,ans;
- char s[];
- void doit(int l,int r)
- {
- int d=,nw=;
- for(;l<r;l++,r--)
- {
- while(l+d<r-d&&nw+abs(s[l+d]-s[r-d])<=m)nw+=abs(s[l+d]-s[r-d]),d++;
- ans=max(ans,d);
- nw-=abs(s[l]-s[r]);
- d--;
- }
- }
- void sol()
- {
- scanf("%d%s",&m,s);
- n=strlen(s);
- ans=;
- for(int i=n-;i>=;i--)doit(,i);
- for(int i=;i<n-;i++)doit(i,n-);
- printf("%d\n",ans);
- }
- int main()
- {
- int tt;scanf("%d",&tt);
- while(tt--)sol();
- return ;
- }
hdu 6035 Colorful Tree
- #include<bits/stdc++.h>
- using namespace std;
- int n,cc,cs,cnt[],vis[],c[],sz[];
- long long ans,res;
- vector<int>g[];
- void dfs(int x,int p)
- {
- sz[x]=;
- int ss=;
- for(int i=;i<g[x].size();i++)if(g[x][i]!=p)
- {
- int lst=cnt[c[x]];
- dfs(g[x][i],x);
- sz[x]+=sz[g[x][i]];
- int nw=cnt[c[x]]-lst;
- ss+=nw;
- nw=sz[g[x][i]]-nw;
- res+=1ll*nw*(nw-)/;
- }
- cnt[c[x]]+=sz[x]-ss;
- }
- void sol()
- {
- cc=;
- memset(vis,,sizeof(vis));
- memset(cnt,,sizeof(cnt));
- for(int i=;i<=n;i++)scanf("%d",&c[i]),vis[c[i]]=;
- for(int i=;i<=n;i++)if(vis[i])cc++;
- for(int i=;i<=n;i++)g[i].clear();
- for(int i=;i<n;i++){int u,v;scanf("%d%d",&u,&v);g[u].push_back(v);g[v].push_back(u);}
- res=;
- dfs(,);
- ans=1ll*n*(n-)/*cc;
- for(int i=;i<=n;i++)if(vis[i])
- {
- int sz=n-cnt[i];
- res+=1ll*sz*(sz-)/;
- }
- ans-=res;
- printf("Case #%d: %lld\n",++cs,ans);
- }
- int main()
- {
- while(scanf("%d",&n)==)sol();
- return ;
- }
hdu 6071 Lazy Running
- #include<bits/stdc++.h>
- using namespace std;
- long long k,a,b,c,dd,d[][];
- vector<pair<long long,int> >g[];
- void sol()
- {
- scanf("%lld%lld%lld%lld%lld",&k,&a,&b,&c,&dd);
- long long w=*min(a,b);
- for(int i=;i<=;i++)g[i].clear();
- g[].push_back(make_pair(,a));
- g[].push_back(make_pair(,a));
- g[].push_back(make_pair(,b));
- g[].push_back(make_pair(,b));
- g[].push_back(make_pair(,c));
- g[].push_back(make_pair(,c));
- g[].push_back(make_pair(,dd));
- g[].push_back(make_pair(,dd));
- memset(d,0x3f,sizeof(d));
- d[][]=;
- queue<pair<int,int> >q;
- q.push(make_pair(,));
- while(!q.empty())
- {
- long long l=q.front().first,x=q.front().second;
- q.pop();
- for(int i=;i<;i++)if(d[g[x][i].first][(l+g[x][i].second)%w]>l+g[x][i].second)
- {
- d[g[x][i].first][(l+g[x][i].second)%w]=l+g[x][i].second;
- q.push(make_pair(l+g[x][i].second,g[x][i].first));
- }
- }
- long long ans=2e18;
- 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);
- printf("%lld\n",ans);
- }
- int main()
- {
- int tt;cin>>tt;
- while(tt--)sol();
- return ;
- }
hdu 6073 Matching in Multiplication
- #include<bits/stdc++.h>
- using namespace std;
- const int md=;
- int n,vis[];
- vector<pair<int,int> >g[];
- vector<int>e,t;
- void sol()
- {
- scanf("%d",&n);
- for(int i=;i<=n*;i++)vis[i]=,g[i].clear();
- for(int i=;i<=n;i++)
- {
- int u,wu,v,wv;
- scanf("%d%d%d%d",&u,&wu,&v,&wv);
- g[i].push_back(make_pair(n+u,wu));
- g[n+u].push_back(make_pair(i,wu));
- g[i].push_back(make_pair(n+v,wv));
- g[n+v].push_back(make_pair(i,wv));
- }
- bool f=false;
- for(int i=;i<=n;i++)if(!g[n+i].size())f=true;
- if(f){printf("0\n");return;}
- int ans=;
- for(int i=n+;i<=*n;i++)if(g[i].size()==&&!vis[i])
- {
- int res=g[i][].second,lst=i,nw=g[i][].first;
- while(true)
- {
- vis[lst]=;vis[nw]=;
- int nxt=g[nw][].first+g[nw][].first-lst;
- if(g[nxt].size()==)res=;
- if(g[nxt].size()!=)
- {
- int j;
- for(j=;j<g[nxt].size();j++)if(g[nxt][j].first==nw)break;
- g[nxt].erase(g[nxt].begin()+j);
- break;
- }
- lst=nxt;
- nw=g[nxt][].first+g[nxt][].first-nw;
- int cc=(g[lst][].first==nw)?g[lst][].second:g[lst][].second;
- res=1ll*res*cc%md;
- }
- ans=1ll*ans*res%md;
- }
- for(int i=;i<=*n;i++)if(g[i].size()==&&!vis[i])
- {
- e.clear();t.clear();
- e.push_back(i);e.push_back(g[i][].first);
- t.push_back(g[i][].second);
- int lst=i,nw=g[i][].first;
- vis[lst]=;
- while(true)
- {
- vis[nw]=;
- int nxt=g[nw][].first+g[nw][].first-lst;
- int cc=(g[nw][].first==nxt)?g[nw][].second:g[nw][].second;
- t.push_back(cc);
- if(vis[nxt])break;
- lst=nw;nw=nxt;e.push_back(nw);
- }
- int res1=,res2=;
- for(int i=;i<t.size();i+=)res1=1ll*res1*t[i]%md;
- for(int i=;i<t.size();i+=)res2=1ll*res2*t[i]%md;
- res1=(res1+res2)%md;
- ans=1ll*ans*res1%md;
- }
- printf("%d\n",ans);
- }
- int main()
- {
- int tt;scanf("%d",&tt);
- while(tt--)sol();
- return ;
- }
hdu 6070 Dirt Ratio
- #include<bits/stdc++.h>
- using namespace std;
- const double eps=1e-;
- struct st{double mn,tg;}seg[];
- int n,a[],ps[];
- void up(int x){seg[x].mn=min(seg[x<<].mn,seg[x<<|].mn);}
- void down(int x)
- {
- seg[x<<].mn+=seg[x].tg;
- seg[x<<].tg+=seg[x].tg;
- seg[x<<|].mn+=seg[x].tg;
- seg[x<<|].tg+=seg[x].tg;
- seg[x].tg=;
- }
- void build(int x,int l,int r)
- {
- seg[x]=(st){,};
- if(l==r)return;
- int md=l+r>>;build(x<<,l,md);build(x<<|,md+,r);
- }
- void modify(int x,int l,int r,int tl,int tr,double v)
- {
- if(tl<=l&&r<=tr){seg[x].mn+=v,seg[x].tg+=v;return;}
- if(seg[x].tg)down(x);
- int md=l+r>>;
- if(tl<=md)modify(x<<,l,md,tl,tr,v);
- if(tr>md)modify(x<<|,md+,r,tl,tr,v);
- up(x);
- }
- double query(int x,int l,int r,int tl,int tr)
- {
- if(tl<=l&&r<=tr)return seg[x].mn;
- if(seg[x].tg)down(x);
- int md=l+r>>;double ans=1e9;
- if(tl<=md)ans=min(ans,query(x<<,l,md,tl,tr));
- if(tr>md)ans=min(ans,query(x<<|,md+,r,tl,tr));
- return ans;
- }
- bool chk(double x)
- {
- build(,,n);
- memset(ps,,sizeof(ps));
- for(int i=;i<=n;i++)
- {
- modify(,,n,ps[a[i]]+,i,);
- modify(,,n,,i,-x);
- if(query(,,n,,i)<=)return true;
- ps[a[i]]=i;
- }
- return false;
- }
- int main()
- {
- int tt;scanf("%d",&tt);
- while(tt--)
- {
- scanf("%d",&n);
- for(int i=;i<=n;i++)scanf("%d",&a[i]);
- double l=,r=,ans=;
- while(r-l>=eps)
- {
- double md=(l+r)/2.0;
- if(chk(md))ans=md,r=md;else l=md;
- }
- printf("%.6f\n",ans);
- }
- return ;
- }
hdu 6078 Wavel Sequence
- #include<bits/stdc++.h>
- using namespace std;
- const long long md=998244353ll;
- int n,m,a[],b[];
- long long dp[][];
- void sol()
- {
- scanf("%d%d",&n,&m);
- for(int i=;i<n;i++)scanf("%d",&a[i]);
- for(int i=;i<m;i++)scanf("%d",&b[i]);
- long long ans=;
- memset(dp,,sizeof(dp));
- for(int i=;i<n;i++)
- {
- long long s1=,s2=;//·å£¬¹È
- for(int j=;j<m;j++)
- {
- if(a[i]>b[j])dp[][j]=(dp[][j]+s1)%md;
- else if(a[i]<b[j])dp[][j]=(dp[][j]+s2)%md;
- else
- {
- s1=(s1+dp[][j])%md;
- s2=(s2+dp[][j]+)%md;
- }
- }
- ans=(ans+s1+s2)%md;
- }
- printf("%lld\n",ans);
- }
- int main()
- {
- int tt;scanf("%d",&tt);
- while(tt--)sol();
- return ;
- }
hdu some problems in Multi-University Training Contest的更多相关文章
- 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 ...
- HDU 6143 - Killer Names | 2017 Multi-University Training Contest 8
/* HDU 6143 - Killer Names [ DP ] | 2017 Multi-University Training Contest 8 题意: m个字母组成两个长为n的序列,两序列中 ...
- HDU 6074 - Phone Call | 2017 Multi-University Training Contest 4
看标程的代码这么短,看我的.... 难道是静态LCA模板太长了? /* HDU 6074 - Phone Call [ LCA,并查集 ] | 2017 Multi-University Traini ...
- HDU 6068 - Classic Quotation | 2017 Multi-University Training Contest 4
/* HDU 6068 - Classic Quotation [ KMP,DP ] | 2017 Multi-University Training Contest 4 题意: 给出两个字符串 S[ ...
- HDU 6076 - Security Check | 2017 Multi-University Training Contest 4
/* HDU 6076 - Security Check [ DP,二分 ] | 2017 Multi-University Training Contest 4 题意: 给出两个检票序列 A[N], ...
- HDU 6071 - Lazy Running | 2017 Multi-University Training Contest 4
/* HDU 6071 - Lazy Running [ 建模,最短路 ] | 2017 Multi-University Training Contest 4 题意: 四个点的环,给定相邻两点距离, ...
- 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] 要求满 ...
- HDU 6070 - Dirt Ratio | 2017 Multi-University Training Contest 4
比赛时会错题意+不知道怎么线段树维护分数- - 思路来自题解 /* HDU 6070 - Dirt Ratio [ 二分,线段树 ] | 2017 Multi-University Training ...
- HDU 6036 - Division Game | 2017 Multi-University Training Contest 1
/* HDU 6036 - Division Game [ 组合数学,NTT ] | 2017 Multi-University Training Contest 1 题意: k堆石子围成一个圈,数量 ...
- HDU 6039 - Gear Up | 2017 Multi-University Training Contest 1
建模简析: /* HDU 6039 - Gear Up [ 建模,线段树,图论 ] | 2017 Multi-University Training Contest 1 题意: 给你n个齿轮,有些齿轮 ...
随机推荐
- lnmp/nginx系统真正有效的图片防盗链完整设置详解
http://www.it300.com/article-15345.html 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...
- (转)Ctrl+H 浪潮Raid配置文档
说明 本手册适用于LSI芯片Raid卡 包括但不限于Inspur 2008/2108 Raid卡.LSI 9240/9260/9261/9271 等Raid卡. 不同型号的Raid卡在某些功能上的支持 ...
- 超实用教程,教你用墨刀做出小红书app原型
一个新手怎么用1小时快速学会APP原型设计? 1小时很短,这意味着学习时必须把握APP原型设计中的重点.难点,而非面面俱到. 要在短时间内理解.掌握一个工具的使用,最有效的方式莫过于临摹: 看实例视频 ...
- Java Selenium - 处理页面弹出窗
1. 得到当前窗口句柄 2. 得到所有窗口句柄 3. 循环找到目标窗口 String currentWindow = driver.getWindowHandle(); Set<String&g ...
- MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
MySQL自动编号,确保数据的唯一性
- 从零开始一起学习SLAM | 三维空间刚体的旋转
刚体,顾名思义,是指本身不会在运动过程中产生形变的物体,如相机的运动就是刚体运动,运动过程中同一个向量的长度和夹角都不会发生变化.刚体变换也称为欧式变换. 视觉SLAM中使用的相机就是典型的刚体,相机 ...
- unity3d-知识汇总
itween下载 http://www.youkexueyuan.com/exp_show/1147.html 代码修改精灵图片的透明度 UIBp.GetComponent<Image>( ...
- sqli-labs(十八)
第五十五关:和上一关类似,只是拼凑的方法不一样,所以需要先判断后台是怎么拼凑的 分别输入id=1'--+ id=1"--+ id=') --+ ...
- Monogdb 按2个字段值之间的比较
使用 $where BsonDocument query = new BsonDocument("$where", "this.soDate<this.pEffDa ...
- [4]传奇3服务器源码分析一 SelGate
1. 2 留存 服务端下载地址: 点击这里