期望: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. element ui select组件和table做分页完整功能和二级联动效果

    <template> <div class="index_box"> <div class="search_box"> &l ...

  2. (转)配置Spring管理的bean的作用域

    http://blog.csdn.net/yerenyuan_pku/article/details/52833477 Spring管理的bean的作用域有: singleton 在每个Spring ...

  3. Types of Security Vulnerabilities

    1)内存空间安全.2)参量级别数据安全:3)通信级别数据安全:4)数据访问控制:5)通信对象身份确认. https://developer.apple.com/library/content/docu ...

  4. HashSet LinkedHashSet TreeSet 分析

    1.HashSet分析 hashset 底层是hash表,就是hashMap,是无序的,唯一的.也就是说,它的底层其实就是一个HashMap  key 值的组成值.所以具有唯一性. public Ha ...

  5. Linux基础命令——查看进程命令

    linux是一个 多进程   多用户的操作系统 ps(显示当前进程的状态) ps -ef  查看当前linux 进程 ps -ef | grep 'mysqld'  过滤mysql的进程 (grep  ...

  6. Python3 OpenCV3 图像处理基础

    开发环境搭建 本人使用的是Ubuntu 16.04LTS. 1.安装Python3 ## 其实 Ubuntu 16.04 系统自带了 Python 3.5.2,因此不需要再安装了?但是需要安装一些开发 ...

  7. Swift学习——流程控制

    1.for in循环 (1)简单使用: for-in和范围运算符 for i in 1...3 { println(i) } (2)如果在循环中用不到i,可用_代替 for _ in 1...3 { ...

  8. Qt setWindow setViewPort

    painter.setWindow(-50, -50, 100, 100); //表示x,y坐标不变,可视的窗口移动到(-50,-50)的位置.同时在x,y方向产生factorx= (window.w ...

  9. Chrome安装助手踩坑

    [前言] 最近用之前的方法配置hosts,想浏览下载国外网站的数据和插件,突然发现几乎所有的方法都无效了...... 本文介绍下下载谷歌助手,通过助手访问国外网站 [主体] (1)搜索谷歌助手,点击下 ...

  10. Web前端技术体系大全搜索

    一.前端技术框架 1.Vue.js 官网:https://cn.vuejs.org/ Vue CLI:https://cli.vuejs.org/ 菜鸟教程:http://www.runoob.com ...