A:容易发现这要求所有子集中元素的最高位1的位置相同,并且满足这个条件也是一定合法的。统计一下即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
int n,cnt[];
int main()
{
freopen("subset.in","r",stdin);
freopen("subset.out","w",stdout);
while (scanf("%d",&n)>)
{
memset(cnt,,sizeof(cnt));
for (int i=;i<=n;i++)
{
int x=read();
for (int j=;~j;j--)
if (x&(<<j)) {cnt[j]++;break;}
}
for (int i=;i<;i++) cnt[]=max(cnt[],cnt[i]);
printf("%d\n",cnt[]);
}
return ;
}

  B:考虑暴力dp,令f[i]为到达第i个咖啡站所花费的最短时间,枚举上次买咖啡的地点转移。可以发现这里转移分三种情况:咖啡未冷却(事实上这一种似乎没有必要转移);咖啡已冷却而未喝完;咖啡未喝完。每种转移都是一段连续的区间,可以二分找到分界点线段树暴力查询。进一步发现每次分界点单调递增,只需要维护两个指针即可。这样就可以改为用单调队列优化了,然而感觉很容易写挂还是搞了一棵线段树,卡进0.5s感觉非常稳。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 500010
#define ll long long
#define inf 1000000000000
ll read()
{
ll x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
ll l,d[N];
double f[N],mn[N],ans,tree[N<<],c[N],e[N],u,v;
int n,a,b,t,r,L[N<<],R[N<<],Q[N];
double calc(ll x)
{
if (x<=t*a) return (double)x/a;
if (x<=t*a+r*b) return (double)(x-t*a)/b+t;
return (double)(x-r*b)/a+r;
}
void build(int k,int l,int r)
{
L[k]=l,R[k]=r;tree[k]=inf;
if (l==r) return;
int mid=l+r>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
}
double query(int k,int l,int r)
{
if (l>r) return inf;
if (L[k]==l&&R[k]==r) return tree[k];
int mid=L[k]+R[k]>>;
if (r<=mid) return query(k<<,l,r);
else if (l>mid) return query(k<<|,l,r);
else return min(query(k<<,l,mid),query(k<<|,mid+,r));
}
void ins(int k,int p,double x)
{
if (L[k]==R[k]) {tree[k]=x;return;}
int mid=L[k]+R[k]>>;
if (p<=mid) ins(k<<,p,x);
else ins(k<<|,p,x);
tree[k]=min(tree[k<<],tree[k<<|]);
}
int main()
{
freopen("walk.in","r",stdin);
freopen("walk.out","w",stdout);
cin>>l>>a>>b>>t>>r;
n=read();
for (int i=;i<=n;i++) d[i]=read(),c[i]=(double)d[i]/a,e[i]=(double)d[i]/b;
mn[]=inf;ans=(double)l/a;if (n==) {printf("%.7lf",ans);return ;}
build(,,n);
int p=,q=,head=,tail=;
double u=t*(-(double)a/b),v=r*(-(double)b/a);
for (int i=;i<=n;i++)
{
f[i]=c[i];
while (d[p]<d[i]-t*a) p++;
while (d[q]<d[i]-t*a-r*b) q++;
while (head<=tail&&Q[head]<p) head++;
f[i]=min(f[i],f[Q[head]]-c[Q[head]]+c[i]);
f[i]=min(f[i],query(,q,p-)+e[i]+u);
f[i]=min(f[i],mn[q-]+c[i]+v);
mn[i]=min(mn[i-],f[i]-c[i]);
while (head<=tail&&f[i]-c[i]<=f[Q[tail]]-c[Q[tail]]) tail--;
Q[++tail]=i;
ins(,i,f[i]-e[i]);
ans=min(ans,f[i]+calc(l-d[i]));
}
printf("%.7lf",ans);
return ;
}

  C:每次相邻交换可以且最多减少一个逆序对。算出逆序对个数剩下的怎么搞都行了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 50010
#define ll long long
int n,a[N],tree[N];
ll m,B;
int query(int k){int s=;while (k) s+=tree[k],k-=k&-k;return s;}
void ins(int k){while (k<=n) tree[k]++,k+=k&-k;}
int main()
{
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
n=read();cin>>B;
for (int i=;i<=n;i++)
{
a[i]=read();
m+=i-query(a[i])-;
ins(a[i]);
}
if (B>m) cout<<m*(m+)/;
else cout<<B*(B+)/+(m-B)*B;
return ;
}

  result:300 rank1

Contest 6的更多相关文章

  1. Programming Contest Problem Types

        Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...

  2. hdu 4946 2014 Multi-University Training Contest 8

    Area of Mushroom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  3. 2016 Multi-University Training Contest 2 D. Differencia

    Differencia Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  4. 2016 Multi-University Training Contest 1 G. Rigid Frameworks

    Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  5. hdu-5988 Coding Contest(费用流)

    题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Ot ...

  6. ZOJ 3703 Happy Programming Contest

    偏方记录背包里的物品.....每个背包的价值+0.01 Happy Programming Contest Time Limit: 2 Seconds      Memory Limit: 65536 ...

  7. 2012 Multi-University Training Contest 9 / hdu4389

    2012 Multi-University Training Contest 9 / hdu4389 打巨表,实为数位dp 还不太懂 先这样放着.. 对于打表,当然我们不能直接打,这里有技巧.我们可以 ...

  8. 2014 Multi-University Training Contest 9#11

    2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others)   ...

  9. 2014 Multi-University Training Contest 9#6

    2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...

  10. 校际联合Contest

    每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...

随机推荐

  1. html模板 练习(仿照抽屉网)

    1.页面布局 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  2. python3工作环境部署+spyder3+jupyter notebook

    1.python3安装 1)官网去下载python3.7版本,双击安装,只要注意勾选写到PATH就行,其它直接NEXT. 2)安装完成,CMD键入 python 回车,跳出python界面就是成功. ...

  3. Unity —— 通过鼠标点击控制物体移动

    //ClickMove - - 通过鼠标点击控制物体移动 using System.Collections; using System.Collections.Generic; using Unity ...

  4. Unity面试问题归总

    Unity面试问题归总 C#中Struct和Class的区别 Struct是Class的一种 A*寻路 https://blog.csdn.net/windcao/article/details/15 ...

  5. IDEA 破解图文教程 - 2018.9 更

    你好!这里是你要找的 IDEA 破解方法 目录     一.前言    二.IDEA 安装         2.1 下载IDEA 旗舰版         2.2 开始安装         2.3 自定 ...

  6. 【TCP_协议_socket接口】-jmeter

    1.ip 2.端口号 3.传入参数 4.告诉软件返回  最后以为是什么,不然就会报错 或者无限制的等待  查ascll 码表 启动接口的方法

  7. react-native debug js remotely跨域问题

    react-native debug js remotely跨域问题 我们在安卓真机上调试react-native时,启用debug js remotely的时候,会出现跨域问题.这个时候我们只需要一 ...

  8. 王者荣耀交流协会——第7次Scrum会议

    照片由刘耀泽同学拍摄 ,王露芝同学(外援)没有参加本次会议. 要求2 : 时间跨度:2017年10月19日 15:05 - 15:20 共计15分钟 要求3 : 地点:计算机楼107教室 要求4 : ...

  9. Python:三元运算

    result=值1 if 条件 else 值2 如果条件为真,result=值1 如果条件为假,result=值2 例子: a,b,c=1,3,5 d=a if a>b else c print ...

  10. 软件工程团队项目第一个Sprint评论

    (1)跑男:话说我没怎么听懂这个游戏是怎么玩的,可能是由于这是第一组,所以我没有反应过来把,界面设计的还可以,但是像设置,选关,帮助真心没看懂.有一种感觉就是,这个游戏是由一堆的漂亮的图片拼起来的,还 ...