清北刷题冲刺 11-01 p.m
轮换



#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1010
using namespace std;
int n,p,k,a[maxn],b[maxn],op[maxn][maxn],pos[maxn];
int main(){
freopen("rotate.in","r",stdin);freopen("rotate.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d%d%d",&n,&p,&k);
for(int i=;i<=n;i++)a[i]=i,b[i]=i;
for(int i=;i<=p;i++){
scanf("%d",&op[i][]);
for(int j=;j<=op[i][];j++)
scanf("%d",&op[i][j]);
}
for(int i=p;i>=;i--){
for(int j=;j<=op[i][];j++){
pos[j]=b[op[i][j]];
}
int w=op[i][];
for(int j=;j<=op[i][];j++){
int x=op[i][j],y=op[i][j+];
if(j==op[i][])y=w;
a[pos[j]]=y;
b[y]=pos[j];
}
}
for(int i=;i<=n;i++)printf("%d ",a[i]);
return ;
}
100分 模拟
区间



#include<iostream>
#include<cstdio>
#define mod 1000000007
using namespace std;
int val[];
int sum[];
int n,a,b,c,d,ans,q,w,e;
int qread(){
int i=;
char ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch<=''&&ch>=''){i=i*+ch-'';ch=getchar();}
return i;
}
int main(){
freopen("range.in","r",stdin);freopen("range.out","w",stdout);
n=qread(),a=qread(),b=qread(),c=qread(),d=qread();
for(int i=;i<=n;i++){
val[i]=qread();
if(val[i]>=a&&val[i]<=b&&val[i]>=c&&val[i]<=d) ans++;
}
for(int i=;i<=n;i++){
w=e=val[i];
for(int j=i+;j<=n;j++){
w=w&val[j];e=e|val[j];
if(w<a||e>d) break;
if(w<=b&&e>=c) ans++;
}
while(ans>mod) ans-=mod;
}
cout<<ans;
}
60分 暴力
/*
3 2 2 3 3
2 3 3
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define mod 1000000007
#define maxn 100005
long long cnt;
int s[maxn],n,a,b,c,d,sta[maxn][],sto[maxn][];
using namespace std;
int aska(int l,int r){
int L=r-l+;
int t=log2(L);
return sta[l][t]&sta[r-(<<t)+][t];
}
int asko(int l,int r){
int L=r-l+;
int t=log2(L);
return sto[l][t]|sto[r-(<<t)+][t];
}
int main(){
freopen("range7.in","r",stdin);
scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);
for(int i=;i<=n;i++){
scanf("%d",&s[i]);
sta[i][]=sto[i][]=s[i];
}
for(int j=;j<;j++)
for(int i=;i<=n;i++)
if(i+(<<j)-<=n){
sta[i][j]=sta[i][j-]&sta[i+(<<j-)][j-];
sto[i][j]=sto[i][j-]|sto[i+(<<j-)][j-];
}
for(int i=;i<=n;i++){
int andsum=s[i],orsum=s[i];
for(int j=i;j<=n;j++){
int L=j,R=n+;//二分右端点
andsum=aska(i,j);
orsum=asko(i,j);
while(R-L>){
int mid=(L+R)>>;
if(aska(i,mid)==andsum&&asko(i,mid)==orsum)L=mid;
else R=mid;
}
if(a<=andsum&&andsum<=b&&c<=orsum&&orsum<=d){
cnt+=L-j+;
}
j=L;
}
}
cout<<cnt%mod<<endl;
}
100分 枚举左端点+二分右端点+st表维护区间信息
收集果子



#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1010
using namespace std;
int w[maxn],ans,fa[maxn],sz[maxn],n,k;
struct node{
int from,to;
}E[maxn];
int find(int x){
if(x==fa[x])return x;
return fa[x]=find(fa[x]);
}
void connect(int x,int y){
int f1=find(x),f2=find(y);
if(f1==f2)return;
fa[f2]=f1;
sz[f1]+=sz[f2];
sz[f2]=;
}
int main(){
freopen("fruit.in","r",stdin);freopen("fruit.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)scanf("%d",&w[i]);
for(int i=;i<n;i++)scanf("%d%d",&E[i].from,&E[i].to);
int all=(<<(n-));
for(int i=;i<all;i++){
for(int j=;j<=n;j++)fa[j]=j,sz[j]=w[j];
int now=i,pos=;
while(now){
pos++;
if(now&){
connect(E[pos].from,E[pos].to);
}
now>>=;
}
if(sz[find()]==k)ans++;
}
cout<<ans;
return ;
}
30分 暴力
/*
从根节点向下递归求方案数,回溯的时候将叶子儿子节点方案数累加到根节点上
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 1000000007
#define maxn 1005
using namespace std;
int n,k,a[maxn],num,head[maxn];
long long pw2[maxn],dp[maxn][maxn];
struct node{int to,pre;}e[maxn*];
void Insert(int from,int to){
e[++num].to=to;
e[num].pre=head[from];
head[from]=num;
}
int dfs(int now,int father){
int sz=;
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(to==father)continue;
for(int j=;j<=n-a[to];j++)
dp[to][j+a[to]]=dp[now][j];
int tmp=dfs(to,now);
for(int j=;j<=n;j++)
dp[now][j]=(pw2[tmp-]*dp[now][j]%mod+dp[to][j])%mod;
sz+=tmp;
}
return sz;
}
int main(){
freopen("fruit.in","r",stdin);
scanf("%d%d",&n,&k);
pw2[]=;
for(int i=;i<=n;i++)pw2[i]=pw2[i-]*%mod;
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=,x,y;i<n;i++){
scanf("%d%d",&x,&y);
Insert(x,y);Insert(x,y);
}
dp[][a[]]=;
dfs(,);
cout<<dp[][k];
return ;
}
100分 树形dp
预计得分100++
实际得分100++
T1一开始题意没懂,写完T2T3再看的,T1就是一个模拟,比较锻炼读题能力。T2看到位运算觉得有点蒙蔽,就直接暴力了,T3前30%的数据可以状态压缩搞一搞,写完发现最劣的情况是2^*,复杂度有可能过不去
今天状态不好,没集中精力做题,要培养善于调整的精神状态,积极投入考试
小结
清北刷题冲刺 11-01 p.m的更多相关文章
- 清北刷题冲刺 11-03 a.m
纸牌 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 2017-10-4 清北刷题冲刺班a.m
P101zhx a [问题描述]你是能看到第一题的 friends 呢.——hjaHja 拥有一套时光穿梭技术,能把字符串以超越光速的速度传播,但是唯一的问题是可能会 GG.在传输的过程中,可能有四种 ...
- 2017-10-2 清北刷题冲刺班a.m
一道图论神题 (god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...
- 2017-10-2 清北刷题冲刺班p.m
最大值 (max) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n ...
- 清北刷题冲刺 11-02 a.m
卖书 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 清北刷题冲刺 10-31 a.m
集合 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; ], ...
- 清北刷题冲刺 10-30 a.m
星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...
- 清北刷题冲刺 10-29 p.m
洗澡 /* 这个题不能单纯判断左括号和右括号的多少,而应该从左到右扫一遍,看应该如何配对 */ #include<iostream> #include<cstdio> #inc ...
- 清北刷题冲刺 10-28 p.m
水题(贪心) (water) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每 ...
随机推荐
- 安装DCOS,关于docker异常引发的调查
入门DCOS,刚开始安装,碰到了一个异常: Bind for 0.0.0.0:9000 failed: port is already allocated. 调试这个问题花费了好长时间,因为无法通过n ...
- HTTP 协议入门(转载)
作者:阮一峰 (@ruanyf) www.ruanyifeng.com/blog/2016/08/http.html HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 ...
- SQL连接、嵌套和集合查询---
SQL连接.嵌套和集合查询 一:连接查询 1 .不同表之间的连接查询 例 查询每个学生及其选修课程的情况. 本查询实际上是涉及Students与Reports两个表的连接操作.这两个表之间的联系是通过 ...
- C#设计模式(11)——外观模式
一.概念 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直 ...
- .net wcf调用java的需要认证的接口
1.wcf直接添加java的webservice地址,这都是常规操作,没必要好说 2.修改config配置文件,添加headers消息头节点,这个需要注意 3.OK直接调用里面的方法即可,全部搞定 & ...
- asp弹出层
asp弹出层 <style type="text/css"> html, body { height: %; width: %; } .white_content { ...
- 问题:request.Headers;结果:HttpWebRequest.Headers 属性
指定构成 HTTP 标头的名称/值对的集合. Headers 集合包含与请求关联的协议标头.下表列出了由系统或由属性或方法设置但未存储在 Headers 中的 HTTP 标头. 标头 设置方 Ac ...
- Qt乱码解决办法(常量中有换行符)
用记事本打开源代码,然后点另存为,utf-8,编码覆盖 QStringLiteral("打开相机")
- js中一些小知识点总结--持续更新
以下知识点来自于编写高质量代码-改善JavaScript程序的188个建议,只用于自我知识的补充. 一.NaN 1.NaN是一个特殊的数量值,不表示一个数字,尽管下面的代码仍然是返回类型为number ...
- CentOS7下源码安装5.6.23
清理CentOS7下的MariaDB. [root@localhost ~]#rpm -qa | gremp mariadb [root@localhost ~]# rpm -e --node ...