2017-10-5 清北刷题冲刺班p.m
套路(拓扑排序)

/*
对每个联通块单独考虑。
每个联通块是一个环套树,树边拎出来可以随意定向,记树边为 m,所以树的方案数为2^m 。
对于环来说只有两种方向,顺时针和逆时针,记环边为 n,所以环的方案就是 2^n - 2。
最后把每个联通块的方案乘起来即可。
注意,自环无论如何定向都是环,但这并不违反环的公式,故可以不特判。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define maxn 200010
#define mod 1000000007
int con[maxn],deg[maxn],seq[maxn];
int n,m;
long long ans;
long long Pow(long long a,long long b){
long long res=;
while(b){
if(b&)res=res*a%mod;
a=a*a%mod;
b>>=;
}
return res;
}
void dfs(int x){
m++;
deg[x]=;
if(deg[con[x]])dfs(con[x]);
}
int main(){
freopen("road.in","r",stdin);freopen("road.out","w",stdout);
//freopen("Cola.txt","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&con[i]);
deg[con[i]]++;
}
int h=,t=;
for(int i=;i<=n;i++){
if(!deg[i])seq[++t]=i;
}
while(h<=t){
int to=con[seq[h]];
deg[to]--;
if(!deg[to])seq[++t]=to;
++h;
}
ans=Pow(,t);
for(int i=;i<=n;i++){
if(deg[i]){
m=;
dfs(i);
ans=(ans*(Pow(,m)-))%mod;
}
}
ans=(ans+mod)%mod;
cout<<ans;
}
100分 拓扑排序
exLCS(动态规划)


#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
#define INF 0x7fffffff
using namespace std;
char a[],b[maxn];
int f[][],nxt[maxn][];
int n,m;
void solve(){
f[][]=nxt[][a[]-'a'];
for(int i=;i<=n;i++)f[i][]=-;
for(int i=;i<n-;i++)
for(int j=;j<=n&&f[i][j]<INF;j++){
f[i+][j]=min(f[i+][j],f[i][j]);
if(j<n)f[i+][j+]=min(f[i+][j+],nxt[f[i][j]+][a[i+]-'a']);
}
}
int main(){
freopen("lcs.in","r",stdin);freopen("lcs.out","w",stdout);
scanf("%s%s",a,b);
n=strlen(a);m=strlen(b);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
f[i][j]=INF;
for(int i=;i<;i++)nxt[m][i]=INF;
for(int i=m-;i>=;i--){
memcpy(nxt[i],nxt[i+],sizeof(nxt[i]));
nxt[i][b[i]-'a']=i;
}
solve();
int ans=;
for(int i=n;i;i--)
if(f[n-][i]<INF){
ans=i;
break;
}
cout<<ans;
}
100分 dp
魔方(模拟)


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> int c[],n,flag=false,out[],ans; inline void read(int &now)
{
char Cget;now=;while((Cget=getchar())<''&&Cget>'');
while(Cget>=''&&Cget<='')now=now*+Cget-'',Cget=getchar();
} void operation_A()
{
int tmp,tmp2;
tmp=c[];
c[]=c[],c[]=c[],c[]=c[],c[]=tmp;
tmp=c[],tmp2=c[];
c[]=c[],c[]=c[],c[]=c[],c[]=c[];
c[]=c[],c[]=c[],c[]=tmp2,c[]=tmp;
} void operation_B()
{
int tmp,tmp2;
tmp=c[];
c[]=c[],c[]=c[],c[]=c[],c[]=tmp;
tmp=c[],tmp2=c[];
c[]=c[],c[]=c[],c[]=c[],c[]=c[];
c[]=c[],c[]=c[],c[]=tmp2,c[]=tmp;
} void operation_C()
{
int tmp=c[],tmp2;
c[]=c[],c[]=c[],c[]=c[],c[]=tmp;
tmp=c[],tmp2=c[];
c[]=c[],c[]=c[],c[]=c[],c[]=c[];
c[]=c[],c[]=c[],c[]=tmp,c[]=tmp2;
} bool check()
{
return c[]==c[]&&c[]==c[]&&c[]==c[]&&
c[]==c[]&&c[]==c[]&&c[]==c[]&&
c[]==c[]&&c[]==c[]&&c[]==c[]&&
c[]==c[]&&c[]==c[]&&c[]==c[]&&
c[]==c[]&&c[]==c[]&&c[]==c[]&&
c[]==c[]&&c[]==c[]&&c[]==c[];
} void dfs(int now,int last)
{
if(check())
{
flag=true,ans=now;
return;
}
if(now>=n) return;
if(last!=)
{
for(int i=;i<=;i++)
{
operation_A();
out[now+]=i;
dfs(now+,);
if(flag) return;
}
operation_A();
}
if(last!=)
{
for(int i=;i<=;i++)
{
operation_B();
out[now+]=+i;
dfs(now+,);
if(flag) return;
}
operation_B();
}
if(last!=)
{
for(int i=;i<=;i++)
{
operation_C();
out[now+]=+i;
dfs(now+,);
if(flag) return;
}
operation_C();
}
} void dfs2(int now,int last)
{
if(check())
{
flag=true,ans=now;
return;
}
if(now>=n) return;
if(last!=)
{
for(int i=;i<=;i++)
{
operation_A();
out[now+]=i;
dfs(now+,);
if(flag) return;
}
operation_A();
}
if(last!=)
{
for(int i=;i<=;i++)
{
operation_B();
out[now+]=+i;
dfs(now+,);
if(flag) return;
}
operation_B();
}
} int main()
{
freopen("cube.in","r",stdin);
freopen("cube.out","w",stdout);
read(n);
for(int i=;i<=;i++) read(c[i]);
if(n<=)
{
dfs(,);
for(int i=;i<=ans;i++) printf("%d ",out[i]);
}
else
{
if(n<=) dfs2(,);
if(!flag) dfs(,);
for(int i=;i<=ans;i++) printf("%d ",out[i]);
}
fclose(stdin),fclose(stdout);
return ;
}
100分 模拟
2017-10-5 清北刷题冲刺班p.m的更多相关文章
- 2017-10-4 清北刷题冲刺班p.m
P102zhx a [问题描述]你是能看到第一题的 friends 呢.——hja两种操作:1.加入一个数.2.询问有多少个数是?的倍数.[输入格式]第一行一个整数?,代表操作数量.接下来?行,每行两 ...
- 2017-10-4 清北刷题冲刺班a.m
P101zhx a [问题描述]你是能看到第一题的 friends 呢.——hjaHja 拥有一套时光穿梭技术,能把字符串以超越光速的速度传播,但是唯一的问题是可能会 GG.在传输的过程中,可能有四种 ...
- 2017-10-3 清北刷题冲刺班p.m
a [问题描述]你是能看到第一题的 friends 呢.——hja给你一个只有小括号和中括号和大括号的括号序列,问该序列是否合法.[输入格式]一行一个括号序列.[输出格式]如果合法,输出 OK,否则输 ...
- 2017-10-3 清北刷题冲刺班a.m
P99zhx a [问题描述]你是能看到第一题的 friends 呢.——hja怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给出了一种分单词的方法,何大爷认为两个单词是同一类的当这两 ...
- 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 ...
- 2017-10-1 清北刷题冲刺班p.m
一道图论好题 (graph) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...
- 2017-10-7 清北刷题冲刺班p.m
测试 A 同花顺 文件名 输入文件 输出文件 时间限制 空间限制card.cpp/c/pas card.in card.out 1s 512MB题目描述所谓同花顺,就是指一些扑克牌,它们花色相同,并且 ...
- 2017-10-7 清北刷题冲刺班a.m
测试 A 消失的数字 文件名 输入文件 输出文件 时间限制 空间限制del.cpp/c/pas del.in del.out 1s 512MB题目描述现在,我的手上有 n 个数字,分别是 a 1 ,a ...
- 2017-10-1 清北刷题冲刺班a.m
位运算1 (bit) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥 ...
随机推荐
- wp8使用现有sqlite数据库
就是把现有文件转移到隔离空间即可 代码如下 private async void CopyDB() { StorageFile fage = await Appli ...
- PyCharm 常用快捷键和设置
pycharm常用快捷键 1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + ...
- python基础-变量
1.什么是变量? 其实就是给数据起个名字而已.在python中你不想要关心数据类型,因为在你赋值的时候它已经自己帮你识别了 2.创建变量时候会在内存中开辟一个空间,具体的细节不需要咱们关心,解释器会分 ...
- JDBC获得数据库连接及使用
1.Connection Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口.这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现 在程序中不需要直接去访问实现了 ...
- AAC_LC用LATM封装header信息解析 Audio Specific Config格式分析
通常来说AAC的头信息在编解码过程中是可以获取到的,但今天需要根据音频参数生成相应的AAC头.项目中使用的是AAC_LC,今天先对它的结构进行分析. 项目中使用ffmpeg进行音频编码,音频编码库为F ...
- Gym - 101196:F Removal Game(区间DP)
题意:一个环状数组,给定可以删去一个数,代价的相邻两个数的gcd,求最小代价. 思路:区间DP即可,dp[i][j]表示[i,j]区间只剩下i和j时的最小代价,那么dp[i][j]=min dp[i ...
- E比昨天更多的棒棒糖(Easy+Hrad)(华师网络赛)(DP||母函数||背包优化)
Time limit per test: 2.0 seconds Memory limit: 512 megabytes 唐纳德先生的某女性朋友最近与唐纳德先生同居.该女性朋友携带一 baby.该 b ...
- 让网站变灰的CSS代码(支持IE、FIREFOX和CHROME)(转)
方法1:支持IE <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xht ...
- BZOJ1657:[USACO2006MAR]Mooo
浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...
- 洛谷【P3379】【模板】最近公共祖先(LCA)
浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://www.luogu.org/problemnew/show/ ...