2018.11.5 PION模拟赛
期望: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模拟赛的更多相关文章
- 2018.11.7 PION 模拟赛
期望:100 + 80 + 75 = 255 实际:0 + 80 + 60 = 140 唉~一天比一天犯的错误智障,感觉noip要凉啊... 吓得我赶紧吃几颗药补补脑子. 奶一下大佬: lgj AK ...
- 2018.11.6 PION 模拟赛
期望:100 + 40 + 50 = 190 实际:60 + 10 + 50 = 120 考得好炸啊!!T1数组开小了炸掉40,T2用 int 读入 long long ,int存储 long lon ...
- 2018.11.3 PION模拟赛
期望:100 实际:100 #include<cstdio> #include<cstring> #include<iostream> #include< ...
- 2018 11.2 PION模拟赛
期望:100 + 50 + 30 = 180 实际:0 + 50 + 30 =80 期望:100 实际:0 数值有负数,边界应该设为-0x7f 此处 gg /* 期望的分:50+ */ ...
- 2018 11.1 PION 模拟赛
期望:250 100+100+50 实际:210 80+100+30 期望:100 实际:80 最后:两个点T了.可能是求逆元的方法太慢了,也可能是闲的又加了一个快速乘的原因. #inclu ...
- 11.7 NOIP模拟赛
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...
- 11/1 NOIP 模拟赛
11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
随机推荐
- codevs 1219 骑士游历 1997年
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 设有一个n*m的棋盘(2≤n≤50,2≤m≤50),如下图,在棋盘上有一个中国象 ...
- [Python學習筆記] 使用 selenium 抓取網頁並且雙擊滑鼠 (double click)
一開始使用的時候 看官方文件 以為使用 double_click()即可 但後來出現錯誤 AttributeError: 'WebElement' object has no attribute 'd ...
- PHP一句话后门过狗姿势万千之传输层加工
既然木马已就绪,那么想要利用木马,必然有一个数据传输的过程,数据提交是必须的,数据返回一般也会有的,除非执行特殊命令. 当我们用普通菜刀连接后门时,数据时如何提交的,狗狗又是如何识别的,下面结合一个实 ...
- aapt环境变量配置
D:\android-sdk_r24.4.1-windows\android-sdk-windows\build-tools\28.0.2 将aapt路径添加到path中, 打开cmd 输入aapt
- 《3+1团队》【Alpha】Scrum meeting 2
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ...
- win手动编译JAVA 未完成(系统path未加入文章)
java 下面存.BAT dir /s /B *.java > sources.txtjavac @sources.txt -bootclasspath "C:\Users\88797 ...
- 异常:java.lang.NoClassDefFoundError: org/springframework/expression/ParserContext
异常:java.lang.NoClassDefFoundError: org/springframework/expression/ParserContext 解决方案:缺少spring-expres ...
- 小程序之Button组件,函数的调用与简单的逻辑
我们要实现一个简单的功能,在界面上放置一张图片,设置重新加载按钮,能更新图片. WXML代码: <!--index.wxml--> <view clas="index&qu ...
- UVa-1339-古老的密码
这题的话,我们可以把字符串序列里面的字母直接计数,然后比较两个数组里面的数字是否一一相同,然后就可以直接判定YES or NO. 因为它题目中说的就是一种映射的关系,首先我们读入之后,把两个字符串的不 ...
- mysql查询表中最小可用id值
今天在看实验室的项目时,碰到的一个问题,.先把sql语句扔出来 // 这条语句在id没有1时,不能得到正确的查询结果. select min(id+1) from oslist c where not ...