轮换

#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的更多相关文章

  1. 清北刷题冲刺 11-03 a.m

    纸牌 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  2. 2017-10-4 清北刷题冲刺班a.m

    P101zhx a [问题描述]你是能看到第一题的 friends 呢.——hjaHja 拥有一套时光穿梭技术,能把字符串以超越光速的速度传播,但是唯一的问题是可能会 GG.在传输的过程中,可能有四种 ...

  3. 2017-10-2 清北刷题冲刺班a.m

    一道图论神题 (god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...

  4. 2017-10-2 清北刷题冲刺班p.m

    最大值 (max) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n ...

  5. 清北刷题冲刺 11-02 a.m

    卖书 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  6. 清北刷题冲刺 10-31 a.m

    集合 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; ], ...

  7. 清北刷题冲刺 10-30 a.m

    星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...

  8. 清北刷题冲刺 10-29 p.m

    洗澡 /* 这个题不能单纯判断左括号和右括号的多少,而应该从左到右扫一遍,看应该如何配对 */ #include<iostream> #include<cstdio> #inc ...

  9. 清北刷题冲刺 10-28 p.m

    水题(贪心) (water) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每 ...

随机推荐

  1. STL list链表的用法详解

    本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函 ...

  2. (转)Java 调用 C++ (Java 调用 dll)

    转自: http://www.cnblogs.com/baokang/p/4979243.html 因为要做点图形处理的项目,需要在Java中调用dll库,所以开发的第一步是研究了一下Java Jni ...

  3. I.MX6 Android 永不休眠

    /************************************************************************* * I.MX6 Android 永不休眠 * 说明 ...

  4. C#连接solr时提示 java内存异常 (jetty和tomcat哪个更High) java.lang.OutOfMemoryError

    C#连接solr时提示 java内存异常   java.lang.OutOfMemoryError 时间:20180130 09:51:13.329,消息:异常消息<?xml version=& ...

  5. import module, from module import funtion区别

    import module与from module import funtion区别: import module导入模块后你需要使用module.function()来调用一个函数 from mod ...

  6. Poj1062 昂贵的聘礼 (dijkstra算法)

    一.Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长 ...

  7. Azure 用户自定义路由 (User Defined Route)

    在公有云环境中,用户创建了一个Vnet,添加了若干个网段后,这几个网段是全联通的状态. 如果希望在Vnet中添加一些功能性的设备,比如防火墙.IPS.负载均衡设备等,就需要进行用户自定义路由的配置. ...

  8. js数组中常用的几个API

    1.push:从末尾添加数据项. 2.pop:从末尾去除数据项. 3.shift:从开始去除数据项 4.splice: splice(m,n) m:指开始删除的索引位置  n:值删除几项 splice ...

  9. Less:Less(CSS预处理语言)

    ylbtech-Less:Less(CSS预处理语言) Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题 ...

  10. Android中EditTex焦点设置和弹不弹出输入法的问题(转)

    今天编程碰到了一个问题:有一款平板,打开一个有EditText的Activity会默认弹出输入法.为了解决这个问题就深入研究了下android中焦点Focus和弹出输入法的问题.在网上看了些例子都不够 ...