%hzwer

http://hzwer.com/7602.html

题目名称

“与”

小象涂色

行动!行动!

输入文件

and.in

elephant.in

move.in

输出文件

and.out

elephant.in

move.in

时间限制

1s

1s

1s

空间限制

64MB

128MB

128MB

“与”

(and.pas/.c/.cpp)

时间限制:1s;空间限制64MB

题目描述:

给你一个长度为n的序列A,请你求出一对Ai,Aj(1<=i<j<=n)使Ai“与”Aj最大。

Ps:“与”表示位运算and,在c++中表示为&。

输入描述:

第一行为n。接下来n行,一行一个数字表示Ai。

输出描述:

输出最大的Ai“与”Aj的结果。

样例输入:

3

8

10

2

样例输出:

8

样例解释:

8 and 10 = 8

8 and 2 = 0

10 and 2 = 2

数据范围:

20%的数据保证n<=5000

100%的数据保证 n<=3*10^5,0<=Ai<=10^9


贪心

全打成二进制,从最高位开始考虑,维护一个列表

如果当前位是1的大于等于两个,那么此位可以是1,并且下一位只从这一位是1的里面找,所以列表只留下是1的

如果当前位是1的少于两个,则此位不可能是1,列表不变

PS:然而数据太弱,两个最大值&就是。其实只要最大值的二进制长度唯一,这个方法就WA

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=3e5+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,a[N],ans[];
int f[N][];
int lst[N],cnt=;
int tmp[N],t=;
void debug(int x){
printf("debug %d\n",x);
for(int i=;i<=cnt;i++) printf("%d ",lst[i]);
printf("\n");
}
void sol(int d){
if(d<) return;
t=;
for(int i=;i<=cnt;i++){
int x=lst[i];
if(f[x][d]) tmp[++t]=x;
}
if(t>=){
ans[d]=;
cnt=;
for(int i=;i<=t;i++) lst[++cnt]=tmp[i];
}
//debug(d);
sol(d-);
}
int main(){
freopen("and.in","r",stdin);
freopen("and.out","w",stdout); n=read();
for(int i=;i<=n;i++){
a[i]=read();
for(int j=;j<=;j++)
if(a[i]&(<<j)) f[i][j]=;//,printf("%d %d\n",i,j);
}
for(int d=;d>=;d--){
cnt=;
for(int i=;i<=n;i++) if(f[i][d]) lst[++cnt]=i;
if(cnt<) continue;
ans[d]=;
//debug(d);
sol(d-);break;
}
int x=;
for(int i=;i>=;i--) if(ans[i]) x+=(<<i);
printf("%d",x);
}


小象涂色

(elephant.pas/.c/.cpp)

时间限制:1s,空间限制128MB

题目描述:

小象喜欢为箱子涂色。小象现在有c种颜色,编号为0~c-1;还有n个箱子,编号为1~n,最开始每个箱子的颜色为1。小象涂色时喜欢遵循灵感:它将箱子按编号排成一排,每次涂色时,它随机选择[L,R]这个区间里的一些箱子(不选看做选0个),为之涂上随机一种颜色。若一个颜色为a的箱子被涂上b色,那么这个箱子的颜色会变成(a*b)mod c。请问在k次涂色后,所有箱子颜色的编号和期望为多少?

输入描述:

第一行为T,表示有T组测试数据。

对于每组数据,第一行为三个整数n,c,k。

接下来k行,每行两个整数Li,Ri,表示第i个操作的L和R。

输出描述:

对于每组测试数据,输出所有箱子颜色编号和的期望值,结果保留9位小数。

样例输入:

3

3 2 2

2 2

1 3

1 3 1

1 1

5 2 2

3 4

2 4

样例输出:

2.062500000

1.000000000

3.875000000

数据范围:

40%的数据1 <= T <= 5,1 <= n, k <= 15,2 <= c <= 20

100%的数据满足1 <= T <= 10,1 <= n, k <= 50,2 <= c <= 100,1 <= Li <= Ri <= n


不明白什么是期望

在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和。是最基本的数学特征之一。它反映随机变量平均取值的大小。

看了题解

每个箱子只有染色次数不同,可以统一考虑

因为区间里随机选,所以1/2;因为c种颜色,所以1/c

f[i][j]表示染色i次颜色为j的概率

  f[i+1][j]+=f[i][j]/2;

  f[i+1][j*x%c]+=f[i][j]/2/c; x枚举颜色

【DP用更新的写法比较好】

用sum[i]统计染色i次的颜色和期望值

然后求和每个点的贡献sum[这个点染色次数]

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const int N=,C=;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int T,n,c,k,t[N],l,r;
double f[N][C],sum[N];
void dp(){
memset(f,,sizeof(f));
memset(sum,,sizeof(sum));
f[][]=;
for(int i=;i<=k;i++)
for(int j=;j<c;j++){
f[i+][j]+=f[i][j]/;
for(int x=;x<c;x++)
f[i+][j*x%c]+=f[i][j]//c;
}
for(int i=;i<=k;i++)//!
for(int j=;j<c;j++) sum[i]+=f[i][j]*j;
}
int main(){
//freopen("elephant.in","r",stdin);
//freopen("elephant.out","w",stdout);
T=read();
while(T--){
memset(t,,sizeof(t));
n=read();c=read();k=read();
for(int i=;i<=k;i++){
l=read();r=read();
for(int j=l;j<=r;j++) t[j]++;
}
dp();
double ans=;
for(int i=;i<=n;i++) ans+=sum[t[i]];
printf("%.9lf\n",ans);
}
}


行动!行动!

(move.pas/.c/.cpp)

时间限制:1s;空间限制:128MB

题目描述:

大CX国的大兵Jack接到一项任务:敌方占领了n座城市(编号0~n-1),有些城市之间有双向道路相连。Jack需要空降在一个城市S,并徒步沿那些道路移动到T城市。虽然Jack每从一个城市到另一个城市都会受伤流血,但大CX国毕竟有着“过硬”的军事实力,它不仅已经算出Jack在每条道路上会损失的血量,还给Jack提供了k个“简易急救包”,一个包可以让Jack在一条路上的流血量为0。Jack想知道自己最少会流多少血,不过他毕竟是无脑的大兵,需要你的帮助。

输入描述:

第一行有三个整数n,m,k,分别表示城市数,道路数和急救包个数。

第二行有两个整数,S,T。分别表示Jack空降到的城市编号和最终要到的城市。

接下来有m行,每行三个整数a,b,c,表示城市a与城市b之间有一条双向道路。

输出描述:

Jack最少要流的血量。

样例输入:

5 6 1

0 3

3 4 5

0 1 5

0 2 100

1 2 5

2 4 5

2 4 3

样例输出:

8

数据范围:

对于30%的数据,2<=n<=50,1<=m<=300,k=0;

对于50%的数据,2<=n<=600,1<=m<=6000,0<=k<=1;

对于100%的数据,2<=n<=10000,1<=m<=50000,0<=k<=10.


分层图最短路

不就是那道飞行路线

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
using namespace std;
typedef long long ll;
const int N=1e4+,M=5e4+,K=,INF=1e9+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m,k,s,t,a,b,c,ans=INF;
struct edge{
int v,w,ne;
}e[M<<];
int cnt=,h[N];
inline void ins(int u,int v,int w){
cnt++;
e[cnt].v=v;e[cnt].w=w;e[cnt].ne=h[u];h[u]=cnt;
cnt++;
e[cnt].v=u;e[cnt].w=w;e[cnt].ne=h[v];h[v]=cnt;
}
struct hn{
int u,d,f;
bool operator <(const hn &rhs)const{return d>rhs.d;}
hn(int a=,int b=,int c=):u(a),d(b),f(c){}
};
int d[N][K],done[N][K];
void dijkstra(int s){
priority_queue<hn> q;
for(int i=;i<n;i++) for(int j=;j<=k;j++) d[i][j]=INF;
d[s][]=;
q.push(hn(s,,));
while(!q.empty()){
hn x=q.top();q.pop();
int u=x.u,f=x.f;
if(done[u][f]) continue;
done[u][f]=;//printf("dij %d %d %d\n",u,f,d[u][f]);
for(int i=h[u];i;i=e[i].ne){
int v=e[i].v,w=e[i].w;
if(d[v][f]>d[u][f]+w){
d[v][f]=d[u][f]+w;//printf("v %d %d %d\n",v,f,d[v][f]);
q.push(hn(v,d[v][f],f));
} if(f<k){
if(d[v][f+]>d[u][f]){
d[v][f+]=d[u][f];//printf("v %d %d %d\n",v,f+1,d[v][f+1]);
q.push(hn(v,d[v][f+],f+));
}
}
}
}
} int main(){
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
n=read();m=read();k=read();s=read();t=read();
for(int i=;i<=m;i++){
a=read();b=read();c=read();
ins(a,b,c);
}
dijkstra(s);
for(int i=;i<=k;i++) ans=min(ans,d[t][i]);//,printf("%d %d\n",i,d[t][i]);
printf("%d",ans);
}

NOIP模拟赛20161007的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. [修正] Berlin Firemonkey Windows 控件左方显示虚线问题

    说明:在 Wndows 显示时,有时控件左方会显示一条虚线 适用:Berlin Firemonkey 修正方法: 请将源码 FMX.Platform.Win.pas 复制到自己的工程目录里,再进行修改 ...

  2. Java中,关于字符串类型、随机验证码、 时间类型

    一.字符串类型:String类型 定义一个字符串 String a="Hello World"; String b= new String ("Hello World&q ...

  3. Linux 定时任务crontab

    crontab定时任务格式 1 * * * * * command 2 第1列表示分钟1-59 每分钟用*或者 */1表示 3 第2列表示小时1-23(0表示0点) 4 第3列表示日期1-31 5 第 ...

  4. SpringMVC基本使用

    springMVC是一个MVC框架,他控制着请求相应的整个流程,从请求一进入到应用服务器到相应离开,都离不开mvc框架 请求在应用服务器中 先说说请求相应在应用服务器的整个过程 DisptacherS ...

  5. JavaScript基本语法(四)

    一.     JavaScript 函数 1.函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.我们可以将一些常用的代码封装成函数,待用到的时候就能直接调用使用.利用函数可以使代码的组织结构 ...

  6. js中Unicode转义序列

    将某一中文字符转义,可采取在线工具进行转义,http://tool.chinaz.com/tools/unicode.aspx "哈哈" ==="\u54c8\u54c8 ...

  7. 自定义UITableView各种函数

    转自:http://blog.sina.com.cn/s/blog_7e3132ca0100wyls.html 在XCode对应头文件中修改该类所继承的父类: 在对应的.m文件中添加如下代码: 这样就 ...

  8. iOS之APP应用图标的设置

    图标是IOS程序包所必需的组成部分.如果你没有提供程序所需的各种尺寸的图标,程序上传发布时可能会无法通过验证.IOS程序为兼顾不同的应用场景,定义了多个不同规格的图标,并以不同的命名区分: IOS图标 ...

  9. 友盟(Swift)-集成、统计用户数量、具体页面访问数量、具体按钮点击数量

    什么是友盟.有什么用? 这些傻瓜问题这里就不解释了,可以自己百度去. 友盟提供的文档和demo都是oc的,这里用swift写了一个小demo,在此分享一下. 步骤1:友盟后台注册应用(iOS),拿到a ...

  10. spring-boot-framework 如何自动将对象返回成json格式

    使用srping-rest-mvc 的时候只要在工程的classpath中包含jackson的2.x版本,就可以不用自己做json格式的转换了. 如在你的pom文件中加入以下的依赖: <depe ...