博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「模拟8.29」chinese(性质)·physics·chemistry(概率期望)
阅读量:5337 次
发布时间:2019-06-15

本文共 2912 字,大约阅读时间需要 9 分钟。

T1  chinese

根据他的问题i*f[i]我们容易联想到,答案其实是每种方案中每个点的贡献为1的加和

我们可以转变问题,每个点在所有方案的贡献

进而其实询问就是1-k的取值,有多少中方案再取个和

事实上这样做就是将每个点抽离出来,虽然每种方案中可能包含多个可行点,但是我们每次考虑的都只是一个点的贡献,所以正确

ps:指数不能取模

代码很短

1 #include
2 #define int long long 3 using namespace std; 4 int n,m,K; 5 int mod=1e9+7; 6 int poww(int x,int y) 7 { 8 int ans=1; 9 while(y)10 {11 if(y&1)ans=ans*x%mod;12 x=x*x%mod;13 y>>=1;14 }15 return ans%mod;16 }17 int sum=0;18 signed main()19 {20 scanf("%lld%lld%lld",&n,&m,&K); 21 int zz=poww(K,n*m-n-m+1);22 int two=(n-1)+(m-1);23 for(int k=2;k<=K;++k)24 {25 int xx=poww(k-1,two);26 sum=(sum+(xx*zz)%mod)%mod;27 }28 printf("%lld\n",sum*n%mod*m%mod);29 }
View Code

 

T2 physics

正解没打,咕了

用暴力剪枝水过的

剪枝一:处理前缀和后O(1)查询,但是因为每次改变的值很小

修改时只需判断修改符号是否在上一轮的答案中,是则输出答案,否则修改

剪枝二:每次二分的长度右边界都是上一轮的答案

1 #include
2 #define int long long 3 #define MAXN 2011 4 using namespace std; 5 int n,m; 6 char a[MAXN][MAXN]; 7 int sum[MAXN][MAXN]; 8 int last_x,last_y,last_len; 9 int zuo_x,zuo_y;10 int get_sum1(int x1,int y1,int x2,int y2)11 {12 return sum[x2][y2]+sum[x1-1][y1-1]-sum[x2][y1-1]-sum[x1-1][y2];13 }14 int work(int mid)15 {16 for(int i=1;i<=n-mid+1;++i)17 {18 for(int j=1;j<=m-mid+1;++j)19 {20 if(get_sum1(i,j,i+mid-1,j+mid-1)==0)21 {22 last_x=i,last_y=j;last_len=mid;23 return 1;24 }25 }26 }27 return 0;28 }29 void second_divied()30 { 31 int l=1;int r=last_len;32 while(l+1
>1;35 if(work(mid))l=mid;36 else r=mid; 37 }38 if(work(r))printf("%lld\n",r);39 else if(work(l))printf("%lld\n",l);40 } 41 int q;int ok=0;42 void the_yu(int x,int y)43 {44 for(int i=x;i<=n;++i)45 {46 for(int j=y;j<=m;++j)47 {48 sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];49 if(a[i][j]=='-')sum[i][j]++;50 }51 }52 }53 bool pan(int x,int y)54 {55 if(x>=last_x&&y>=last_y&&x<=last_x+last_len-1&&y<=last_y+last_len-1)return 0;56 return 1;57 }58 signed main()59 {60 scanf("%lld%lld%lld",&n,&m,&q);last_len=min(n,m);61 for(int i=1;i<=n;++i)scanf("%s",a[i]+1);62 zuo_x=0x7fffff;zuo_y=0x7ffff; 63 for(int i=1;i<=q;++i)64 {65 int x,y;66 scanf("%lld%lld",&x,&y);67 a[x][y]='-';68 zuo_x=min(zuo_x,x);zuo_y=min(zuo_y,y);69 if(i>1&&pan(x,y))70 {71 printf("%lld\n",last_len);72 continue;73 }74 else75 {76 if(i==1)the_yu(1,1);77 else the_yu(zuo_x,zuo_y);78 second_divied();79 zuo_x=0x7fffff;zuo_y=0x7fffff;80 }81 }82 }
View Code

 

T3 chemistry

概率期望,仿佛不可做,咕了....

 

转载于:https://www.cnblogs.com/Wwb123/p/11428954.html

你可能感兴趣的文章
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>
字典常用方法
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
bzoj1048 [HAOI2007]分割矩阵
查看>>
Java中的编码
查看>>