期望:30 + 40 + 50 = 120

实际:30 + 50 + 40 = 120

‘’

思路:最重要的是发现

是完全没有用的,然后这个题目就可以转成DP来做。

/*
期望的分:30
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
double ans;
double p[][],s[][];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int main(){
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
n=read();
for(int i=;i<=n;i++)
for(int j=;j<i;j++){
scanf("%lf",&p[i][j]);
s[i][j]=1.0-p[i][j];
}
if(n==){
ans=;
printf("%.2lf",ans);
return ;
}
if(n==){
double ans1=p[][];
double ans2=s[][]*;
ans=ans1+ans2;
printf("%.2lf",ans);
}
if(n==){
double ans1=p[][]*p[][]*;
double ans2=p[][]*s[][]*;
double ans3=s[][]*p[][]*;
double ans4=s[][]*s[][]*;
ans=ans1+ans2+ans3+ans4;
ans1=p[][]*;ans2=s[][]*;
ans3=p[][]*;ans4=s[][]*;
ans=max(ans,max(ans1+ans2,ans3+ans4));
printf("%.2lf",ans);
}
}

30暴力

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
double p[][],f[][];
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<i;j++)
scanf("%lf",&p[i][j]);
f[][]=;
for(int i=;i<n;i++)
for(int j=;j<=i;j++){
f[i+][j+]+=f[i][j]*p[i+][j];
f[i+][j]+=f[i][j]*(-p[i+][j]);
}
double ans=;
for(int j=;j<=n;j++) ans+=j*f[n][j];
printf("%.2lf\n",ans);
}

100

/*
期望的分:40
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,x,sum,ans=0x7f7f7f7f;
int v[],f[];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int cmp(int a,int b){
return a>b;
}
void dfs(int now,int tot){
if(tot<) return ;
if(now==n+){
ans=min(ans,tot);
return ;
}
dfs(now+,tot-v[now]);
dfs(now+,tot);
}
int main(){
freopen("cake.in","r",stdin);
freopen("cake.out","w",stdout);
n=read();x=read();
for(int i=;i<=n;i++){
v[i]=read();
sum+=v[i];
}
if(sum<=x){ printf("%d\n",x-sum);return ; }
if(n<){
sort(v+,v++n,cmp);
dfs(,x);
cout<<ans;
}
else{
for(int i=;i<=n;i++)
for(int j=x;j>=v[i];j--)
f[j]=max(f[j],f[j-v[i]]+v[i]);
cout<<x-f[x];
}
}

50分暴力

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,x,O,tot;
int a[],c[][];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
void dfs(int l,int r,int sum){
c[O][++tot]=sum;
for(int i=l;i<=r;i++)
if(sum+a[i]<=x)
dfs(i+,r,sum+a[i]);
}
int build(int l,int r,int o){
O=o;tot=;
dfs(l,r,);
return tot;
}
int main(){
scanf("%d%d",&n,&x);
for(int i=;i<=n;i++) a[i]=read();
int A=build(,n/,);
int B=build(n/+,n,);
sort(c[]+,c[]+A+);
sort(c[]+,c[]+B+);
int now=B,ans=;
for(int i=;i<=A;i++){
while(c[][i]+c[][now]>x&&now) now--;
if(now==) break;
ans=max(ans,c[][i]+c[][now]);
}
printf("%d\n",x-ans);
}

100

/*
期望得分:50
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 1000000007
using namespace std;
long long ans;
int h,w,m,n;
int map1[][];
int x1[],y1[],x2[],y2[],v[];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
bool judge1(){
for(int k=;k<=n;k++){
int maxn=;
for(int i=x1[k];i<=x2[k];i++)
for(int j=y1[k];j<=y2[k];j++)
maxn=max(maxn,map1[i][j]);
if(maxn!=v[k]) return false;
}
return true;
}
void sove1(int now){
if(now==w*h+){
if(judge1()){
ans++;
ans%=mod;
}
return ;
}
for(int i=;i<=m;i++){
int cx=now/w+;
int cy=now%w;
if(cy==) cy=w,cx-=;
map1[cx][cy]=i;
sove1(now+);
map1[cx][cy]=;
}
}
long long fastpow(long long a,long long b){
long long s=;
for(;b;b>>=){
if(b&) s=s*a%mod;
a=a*a%mod;
}
return s;
}
int main(){
freopen("grid.in","r",stdin);
freopen("grid.out","w",stdout);
h=read();w=read();m=read();n=read();
for(int i=;i<=n;i++){
x1[i]=read();y1[i]=read();
x2[i]=read();y2[i]=read();
v[i]=read();
}
if(h<=&&w<=&&n<=&&m<=){
sove1();
printf("%I64d\n",ans);
return ;
}
else if(n==){
int p=w*h;
ans=fastpow(m,p);
printf("%I64d\n",ans);
}
else if(n==){
int sum=w*h;
int sx=x2[]-x1[]+;
int zy=y2[]-y1[]+;
int sumn=sx*zy;
long long ans1=fastpow(m,sum-sx*zy);
long long ans2=(fastpow(v[],sumn)-fastpow(v[]-,sumn)+mod)%mod;
ans=ans1*ans2%mod;
printf("%I64d\n",ans);
}
}
/*
3 3 3 1
1 1 2 3 3
*/

50分暴力

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
using namespace std;
typedef long long i64;
const int P=1e9+;
int T,h,w,m,n;
int xs[],ys[],xp,yp,vs[],vp,ts[];
int rc[][],mv[][],as[][];
void mins(int&a,int b){if(a>b)a=b;}
int pw(int a,int n){
int v=;
for(;n;n>>=,a=i64(a)*a%P)if(n&)v=i64(v)*a%P;
return v;
}
int main(){ freopen("grid.in","r",stdin);
freopen("grid.out","w",stdout);
int ans=;
scanf("%d%d%d%d",&h,&w,&m,&n);
xp=yp=vp=;xs[xp++]=;
xs[xp++]=h+;ys[yp++]=;
ys[yp++]=w+;vs[vp++]=m;
for(int i=;i<n;++i){
for(int j=;j<;++j) scanf("%d",rc[i]+j);
xs[xp++]=rc[i][];
xs[xp++]=rc[i][]+;
ys[yp++]=rc[i][];
ys[yp++]=rc[i][]+;
vs[vp++]=rc[i][];
vs[vp++]=rc[i][]-;
}
sort(xs,xs+xp);
xp=unique(xs,xs+xp)-xs-;
sort(ys,ys+yp);
yp=unique(ys,ys+yp)-ys-;
sort(vs,vs+vp);
vp=unique(vs,vs+vp)-vs;
for(int i=;i<xp;++i)
for(int j=;j<yp;++j)
as[i][j]=(xs[i+]-xs[i])*(ys[j+]-ys[j]);
for(int t=;t<n;++t){
rc[t][]=std::lower_bound(xs,xs+xp,rc[t][])-xs;
rc[t][]=std::lower_bound(xs,xs+xp,rc[t][]+)-xs;
rc[t][]=std::lower_bound(ys,ys+yp,rc[t][])-ys;
rc[t][]=std::lower_bound(ys,ys+yp,rc[t][]+)-ys;
rc[t][]=std::lower_bound(vs,vs+vp,rc[t][])-vs;
}/*离散化*/
for(int S=;S<(<<n);++S){
for(int i=;i<xp;++i)
for(int j=;j<yp;++j)
mv[i][j]=vp-;
int s=;
for(int t=;t<n;++t){
int v=rc[t][];
if(S>>t&) s=-s,--v;
for(int i=rc[t][];i<rc[t][];++i)
for(int j=rc[t][];j<rc[t][];++j)
mins(mv[i][j],v);
}
for(int i=;i<vp;++i) ts[i]=;
for(int i=;i<xp;++i)
for(int j=;j<yp;++j)
ts[mv[i][j]]+=as[i][j];
for(int i=;i<vp;++i) s=i64(s)*pw(vs[i],ts[i])%P;
ans=(ans+s)%P;
}
printf("%d\n",(ans+P)%P);
return ;
}

std

2018.11.5 PION模拟赛的更多相关文章

  1. 2018.11.7 PION 模拟赛

    期望:100 + 80 + 75 = 255 实际:0 + 80 + 60 = 140 唉~一天比一天犯的错误智障,感觉noip要凉啊... 吓得我赶紧吃几颗药补补脑子. 奶一下大佬: lgj AK ...

  2. 2018.11.6 PION 模拟赛

    期望:100 + 40 + 50 = 190 实际:60 + 10 + 50 = 120 考得好炸啊!!T1数组开小了炸掉40,T2用 int 读入 long long ,int存储 long lon ...

  3. 2018.11.3 PION模拟赛

    期望:100    实际:100 #include<cstdio> #include<cstring> #include<iostream> #include< ...

  4. 2018 11.2 PION模拟赛

    期望:100 + 50 + 30 = 180 实际:0 + 50 + 30 =80 期望:100   实际:0 数值有负数,边界应该设为-0x7f       此处 gg /* 期望的分:50+ */ ...

  5. 2018 11.1 PION 模拟赛

    期望:250  100+100+50 实际:210   80+100+30 期望:100   实际:80 最后:两个点T了.可能是求逆元的方法太慢了,也可能是闲的又加了一个快速乘的原因. #inclu ...

  6. 11.7 NOIP模拟赛

    目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...

  7. 11/1 NOIP 模拟赛

    11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...

  8. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  9. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

随机推荐

  1. SAP成都研究院安德鲁:自己动手开发一个Chrome Extension

    各位好,我叫何金鑫(He Andrew), 团队同事亲切地称呼在下为安德鲁.如果你在附近找到wifi热点名为 「安德鲁森面包房5g」,可能是我就在附近,我们可以去喝杯咖啡,聊聊最近有趣的东西. 鄙人现 ...

  2. 包含绑定变量的sql进行调优需注意一点

    拿1个sql举个例子,我只贴出了where后面部分 实际环境中有init_date 和direct_no的组合索引IDX_DATE_NO 上诉标红处,:b3=0 和:b3<>0这两种情况o ...

  3. vs2008控件查看器

    使用 OLE/COM 对象查看器 通过读取控件的类型库,OLE/COM 对象查看器使您得以查看控件的接口. 使用 OLE/COM 对象查看器 单击“工具”菜单上的“OLE/COM 对象查看器”或在命令 ...

  4. Android Studio集成crashlytics后无法编译的问题

    http://blog.csdn.net/zhuobattle/article/details/50555393 问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hos ...

  5. python关于入参中,传入的是指针还是引用

    偶然看到别人的代码,发现有的会传入参数之后,做一次copy,试验一下,关于入参中,传入的是指针还是引用先说自己的结论:1.如果传入的是简单的类型,那么传入应该是引用的数值,2.假如传入的是df这种类型 ...

  6. TP框架中同时使用“or”和“and”

    今天在tp中遇到一个问题,可能这并不算难的问题,但是我还是分享一下 以下是tp手册里面查询or的方式 $User = M("User"); // 实例化User对象 $where[ ...

  7. os操作文件

    os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依 ...

  8. 算法导论 第十三章 红黑树(python)-1插入

    红黑树是上一章二叉搜索树的改进,实现一种平衡 ,保证不会出现二叉树变链表的情况,基本动态集合操作的时间复杂度为O(lgn) 实际用途:c++stl中的set,map是用他实现的 红黑树的性质: 1.每 ...

  9. SQLServer__问题记录

    “备份集中的数据库备份与现有的xx数据库不同”  参考链接: http://www.cnblogs.com/huangfr/archive/2012/08/09/2629687.html RESTOR ...

  10. Mac系统下VirtualBox装Centos7设置静态IP并连网

    用Virtualbox装了三台Centos7,现在需要设置成三台之间可以相互通信,并且三台都可以连外网. 需求如下: 1. 三台内部相互通信 2. 可以上外网 3. 主机可以虚拟机可以相互通信(she ...