csps模拟测试707172部分题解myc
题面:https://www.cnblogs.com/Juve/articles/11678524.html
骆驼:构造题,留坑
根据5×5的矩形构造成大矩形
毛一琛:
mid in the middle思想,先dfs一半,然后dfs后一半
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<unordered_map>
#include<set>
#define int long long
#define re register
using namespace std;
const int MAXN=;
int n,m[MAXN],ans=,tot=;
unordered_map<int,int>mp;
set<int>s[<<];
bool vis[<<];
void DFS(re int now,re int num,re int st){
if(now>n){
if(mp.find(num)==mp.end()) return ;
int t=mp[num];
for(set<int>::iterator it=s[t].begin();it!=s[t].end();++it){
if(vis[(*it)|st]==) ++ans;
vis[(*it)|st]=;
}
return ;
}
DFS(now+,num,st);
DFS(now+,num+m[now],st|(<<(now-)));
DFS(now+,num-m[now],st|(<<(now-)));
}
void dfs(re int now,re int num,re int st){
if(now>n/){
int t;
if(mp.find(num)==mp.end()) t=mp[num]=++tot;
else t=mp[num];
s[t].insert(st);
return ;
}
dfs(now+,num,st);
dfs(now+,num+m[now],st|(<<(now-)));
dfs(now+,num-m[now],st|(<<(now-)));
}
signed main(){
scanf("%lld",&n);
for(re int i=;i<=n;++i) scanf("%lld",&m[i]);
vis[]=;
dfs(,,);DFS(n/+,,);
printf("%lld\n",ans);
return ;
}
毛二琛:dp,不会
毛三琛:
二分思路考场上想到了,但是没有想到优化骗分
把x随机排个序,二分前先check一下是否比当先的ans优,不优就不二分
再加个clock
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define re register
using namespace std;
const int MAXN=1e4+;
int n,k,p,a[MAXN],res,l=0x3f3f3f3f,r=,ans=,x[MAXN],b[MAXN];
inline bool check(re int lim){
re int tot=,sum=;
for(re int i=;i<=n;++i){
if(b[i]>lim) return ;
if(sum+b[i]>lim){
++tot;
sum=b[i];
if(tot>=k) return ;
}else sum+=b[i];
}
return ;
}
signed main(){
re double ck=clock();
scanf("%lld%lld%lld",&n,&p,&k);
for(re int i=;i<=n;++i){
scanf("%lld",&a[i]);
r+=a[i],l=min(l,a[i]);
}
for(re int i=;i<=p;++i) x[i]=i-;
srand(time());
random_shuffle(x+,x+p+);
ans=r;
for(re int i=;i<=p;++i){
if(clock()-ck>) break;
l=,r=ans;
for(re int j=;j<=n;++j){
b[j]=(a[j]+x[i])%p;
l=max(l,b[j]);
}
if(!check(r)) continue;
while(l<r){
re int mid=(l+r)>>;
if(check(mid)) r=mid;
else l=mid+;
}
ans=min(ans,l);
}
printf("%lld\n",ans);
return ;
}
简单的序列:
推式子,dp也可以
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN=1e5+,mod=1e9+;
int n,m,tot=,ans=,cnt=;
char s[MAXN];
int max(int a,int b){
return a>b?a:b;
}
int q_pow(int a,int b,int p){
int res=;
while(b){
if(b&) res=res*a%p;
a=a*a%p;
b>>=;
}
return res;
}
int fac(int N){
int res=;
for(int i=;i<=N;++i) res=res*i%mod;
return res%mod;
}
int C(int n,int m){
if(m>n) return ;
if(m==n) return ;
return fac(n)*q_pow(fac(m)%mod,mod-,mod)%mod*q_pow(fac(n-m)%mod,mod-,mod)%mod;
}
int sta[MAXN],top=;
signed main(){
scanf("%lld%lld%s",&n,&m,s+);
for(int i=;i<=m;++i){
if(s[i]=='(') sta[++top]=;
else if(top) ++cnt,--top;
}
if(n&){
puts("");
return ;
}
ans=C(n-m+,n/-m+cnt);
printf("%lld\n",ans);
return ;
}
简单的期望
dp[i][j][k][0/1]表示操作了i次,最后8位是j,右移8位后最后有连续k位是0/1。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define re register
using namespace std;
const int MAXN=;
int x,n,pre[];
double p,ans,f[MAXN][(<<)+][][];
signed main(){
scanf("%lld%lld%lf",&x,&n,&p);
for(int i=;i<=(<<);++i) pre[i*]=pre[i]+;
int d=x&,b=x&,c=;
x>>=;p/=100.0;
while(x&&(x&)==d){
x>>=;
++c;
}
f[][b][c][d]=1.0;
for(int i=;i<=n;++i){
for(int j=;j<(<<);++j){
for(int k=;k<=;++k){
if(j==((<<)-)){
f[i][][k][]+=f[i-][j][k][]*(1.0-p);
f[i][][][]+=f[i-][j][k][]*(1.0-p);
}else{
f[i][j+][k][]+=f[i-][j][k][]*(1.0-p);
f[i][j+][k][]+=f[i-][j][k][]*(1.0-p);
}
if(j>=(<<)){
int b=(j<<)&((<<)-);
int tmp=((j<<)&(<<))>>;
if(tmp!=){
f[i][b][k+][]+=f[i-][j][k][]*p;
f[i][b][][tmp]+=f[i-][j][k][]*p;
}else{
f[i][b][][tmp]+=f[i-][j][k][]*p;
f[i][b][k+][]+=f[i-][j][k][]*p;
}
}else{
f[i][j<<][][]+=f[i-][j][k][]*p;
f[i][j<<][k+][]+=f[i-][j][k][]*p;
}
}
}
}
for(int j=;j<=(<<);j++){
for(int k=;k<=;k++)
ans+=pre[j]*(f[n][j][k][]+f[n][j][k][]);
}
for(int k=;k<=;k++)
ans+=((f[n][][k][]+f[n][][k][])*)+f[n][][k][]*k;
printf("%0.6lf\n",ans);
return ;
}
csps模拟测试707172部分题解myc的更多相关文章
- [CSP-S模拟测试50]反思+题解
??大部分人都觉得T3是道不可做题去刚T1T2了,于是我就侥幸苟到了前面? 这场考试比较成功的就是快速水掉了T1T2的部分分,1h拿到88分起码为之后硬肝T3上了保险(赛后发现就算T3爆零也能rank ...
- [CSP-S模拟测试48]反思+题解
状态很垃圾的一场考试.感觉“这么多分就够了”的心态很是在给自己拖后腿. 打开题面,第一页赫然写着:$Claris' Contest$. 吓得我差点手一抖关掉.不过后来想想似乎强到变态的人出的题都不是很 ...
- [CSP-S模拟测试47]反思+题解
打开题面,T3似乎被换过了.(那我就更有理由直接弃掉了) T1是我最害怕的乱搞题,赶紧扔了看T2.发现是个sb板子?雨天的尾巴弱化版? 然而线段树合并早忘干净了(最近几道可以线段树合并的题都是用别的方 ...
- csps模拟测试7576一句话题解
题面:https://www.cnblogs.com/Juve/articles/11694454.html 75考了数学,化学和物理... T1: 假设有一个A和B,那么对于每一个j!=i,都有$\ ...
- csp-s模拟测试97
csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...
- csp-s模拟测试87
csp-s模拟测试87 考场状态还可以$T1$我当时以为我秒切,$T2$确认自己思路不对后毅然决然码上,$T3$暴力挂了太可惜了. 03:01:28 03:16:07 03:11:38 140 03: ...
- csp-s模拟测试80(b)
csp-s模拟测试80(b) 水题没什么可写的. $T1SB$规律题正解调了仨小时就过了. $T2SBDp$题颓完题解就秒了. $T3SB$数据结构考场想到正解就弃了,考后太懒一半正解一发随机化就A了 ...
- csp-s模拟测试99
csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...
- csp-s模拟测试98
csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...
随机推荐
- TCP/IP点滴
1 子网的划分 2 子网的表述 ipv4 IPv4中规定IP地址长度为32,最大地址个数为2^32,点分十进制表示方法:122.70.156.25. ipv6 地址的长度为128,即最大地址个数为2^ ...
- 利用IK分词器,自定义分词规则
IK分词源码下载地址:https://code.google.com/p/ik-analyzer/downloads/list lucene源码下载地址:http://www.eu.apache.or ...
- rmReport 自适应行高(自动行高)
这个问题 1.先中主项数据--属性--stretched(伸展):true 选中主项数据中的所有列--属性--其他属性--自动折行 --伸展
- 04E: Sub-process /usr/bin/dpkg returned an error code (1)
- java oop第07章_集合框架
一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...
- JS事件 什么是事件?JavaScript 创建动态页面。事件是可以被 JavaScript 侦测到的行为。 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件。
什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户单击 ...
- 简单的GridView分业,后台不需要写
1前台代码: <asp:GridView ID="GridView1" runat="server" AllowPaging="True&quo ...
- Android Button.getWidth()为0的问题
View在onCreate的时候,没有渲染组件,所以获取到的宽度和高度为0, 需要添加一个观察者,在layout渲染后再去取宽高.代码如下: private Button btn_icon; @Ove ...
- soapui打开即报错------连接不上Internet
1.遇到的问题: 打开soapui即报错,如下: You're getting this message since your computer is offline and SoapUI can't ...
- zabbix_agentd 报错
1 cannot open PID file [/tmp/zabbix_agentd.pid]: [13] Permission denied 权限拒绝 很直观就是权限的问题 我的问题是这样的,这个p ...