T1:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<cstdlib>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
int A[][];
int x[],y[];
void set(int k,int r,int c) {
A[r][c]=k;x[k]=r;y[k]=c;
}
int main() {
int n=read();
set(,,n/+);
rep(k,,n*n) {
if(x[k-]==&&y[k-]!=n) set(k,n,y[k-]+);
else if(y[k-]==n&&x[k-]!=) set(k,x[k-]-,);
else if(x[k-]==&&y[k-]==n) set(k,x[k-]+,y[k-]);
else if(!A[x[k-]-][y[k-]+]) set(k,x[k-]-,y[k-]+);
else set(k,x[k-]+,y[k-]);
}
rep(i,,n) {
printf("%d",A[i][]);
rep(j,,n) printf(" %d",A[i][j]);
putchar('\n');
}
return ;
}

T2:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<cstdlib>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
const int maxn=;
int n,ans,to[maxn],vis[maxn],dep[maxn];
void dfs(int x) {
vis[x]=-;
if(vis[to[x]]<) ans=min(ans,dep[x]-dep[to[x]]+);
else if(!vis[to[x]]) dep[to[x]]=dep[x]+,dfs(to[x]);
vis[x]=;
}
int main() {
n=read();ans=n+;
rep(i,,n) to[i]=read();
rep(i,,n) if(!vis[i]) dfs(i);
printf("%d\n",ans);
return ;
}

T3:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<cstdlib>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
int n,A[],t[],s[],f[<<],vis[<<];
int nowans,cur_clock;
int dp(int S,int c,int dep) {
if(dep>=nowans) return <<;
if(!c) return ;
int& ans=f[S];
if(vis[S]==cur_clock) return ans;
ans=c;vis[S]=cur_clock;
if(t[]>=&&t[]>=) {
int S2=S^(<<s[])^(<<s[]);
s[]++;t[]--;s[]++;t[]--;
ans=min(ans,dp(S2,c-,dep+)+);
s[]--;t[]++;s[]--;t[]++;
}
rep(i,,) if(t[i]) {
int S2=S,j=i;
for(;j<=;j++) if(t[j]<) break;
j--;if(j-i+>=) {
rep(k,i,j) S2^=<<s[k],s[k]++,t[k]--;
ans=min(ans,dp(S2,c-(j-i+),dep+)+);
rep(k,i,j) s[k]--,t[k]++;
}
}
rep(i,,) if(t[i]>=) {
int S2=S,j=i;
for(;j<=;j++) if(t[j]<) break;
j--;if(j-i+>=) {
rep(k,i,j) S2=S2^(<<s[k])^(<<s[k]+),s[k]+=,t[k]-=;
ans=min(ans,dp(S2,c-(j-i+)*,dep+)+);
rep(k,i,j) s[k]-=,t[k]+=;
}
}
rep(i,,) if(t[i]>=) {
int S2=S,j=i;
for(;j<=;j++) if(t[j]<) break;
j--;if(j-i+>=) {
rep(k,i,j) S2=S2^(<<s[k])^(<<s[k]+)^(<<s[k]+),s[k]+=,t[k]-=;
ans=min(ans,dp(S2,c-(j-i+)*,dep+)+);
rep(k,i,j) s[k]-=,t[k]+=;
}
}
rep(i,,) if(t[i]>=) {
int S2=(S^(<<s[i])^(<<s[i]+));
s[i]+=;t[i]-=;ans=min(ans,dp(S2,c-,dep+)+);t[i]+=;s[i]-=;
if(t[i]>=) {
int S2=(S^(<<s[i])^(<<s[i]+)^(<<s[i]+));
s[i]+=;t[i]-=;ans=min(ans,dp(S2,c-,dep+)+);t[i]+=;s[i]-=;
if(t[i]>=) {
S2=(S^(<<s[i])^(<<s[i]+)^(<<s[i]+)^(<<s[i]+));
s[i]+=;t[i]-=;ans=min(ans,dp(S2,c-,dep+)+);t[i]+=;s[i]-=;
rep(j,,) rep(k,,) {
int nt=t[i];
if(j==i||k==i) t[i]-=;
if(((t[j]>=&&t[k]>=)&&j!=k)||(j==k&&t[j]>=)) {
if(j==i||k==i) t[i]+=;
S2=S^(<<s[i])^(<<s[i]+)^(<<s[i]+)^(<<s[i]+);
s[i]+=;t[i]-=;
S2=S2^(<<s[j]);
s[j]+=;t[j]-=;
S2=S2^(<<s[k]);
s[k]+=;t[k]-=;
ans=min(ans,dp(S2,c-,dep+)+);
t[i]+=;s[i]-=;s[j]-=;t[j]+=;s[k]-=;t[k]+=;
}
t[i]=nt;
if(j==i||k==i) t[i]-=;
if(((t[j]>=&&t[k]>=)&&j!=k)||(j==k&&t[j]>=)) {
if(j==i||k==i) t[i]+=;
S2=S^(<<s[i])^(<<s[i]+)^(<<s[i]+)^(<<s[i]+);
s[i]+=;t[i]-=;
S2=S2^(<<s[j])^(<<s[j]+);
s[j]+=;t[j]-=;
S2=S2^(<<s[k])^(<<s[k]+);
s[k]+=;t[k]-=;
ans=min(ans,dp(S2,c-,dep+)+);
t[i]+=;s[i]-=;s[j]-=;t[j]+=;s[k]-=;t[k]+=;
}
t[i]=nt;
}
}
rep(j,,) {
if((t[j]>=&&j!=i)||(j==i&&t[j]>=)) {
S2=S^(<<s[i])^(<<s[i]+)^(<<s[i]+);
s[i]+=;t[i]-=;
S2=S2^(<<s[j]);s[j]++;t[j]--;
ans=min(ans,dp(S2,c-,dep+)+);
t[i]+=;s[i]-=;s[j]--;t[j]++;
}
if((t[j]>=&&j!=i)||(j==i&&t[j]>=)) {
S2=S^(<<s[i])^(<<s[i]+)^(<<s[i]+);
s[i]+=;t[i]-=;
S2=S2^(<<s[j])^(<<s[j]+);s[j]+=;t[j]-=;
ans=min(ans,dp(S2,c-,dep+)+);
t[i]+=;s[i]-=;s[j]-=;t[j]+=;
}
}
}
}
nowans=min(nowans,dep+ans);return ans;
}
int main() {
int T=read(),N=read();
while(T--) {
memset(t,,sizeof(t));
n=N;nowans=n+;cur_clock++;
rep(i,,n-) {
A[i]=read();int temp=read();
if(!A[i]) A[i]=+temp;
else if(A[i]==) A[i]=;
else if(A[i]==) A[i]=;
else A[i]-=;
t[A[i]]++;
}
s[]=;
rep(i,,) s[i]=s[i-]+t[i-];
dp((<<n)-,n,);
printf("%d\n",min(dp((<<n)-,n,),nowans));
}
return ;
}

T4:

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
const int maxn=;
int L,n,m,A[maxn],is[maxn];
int check(int x) {
int c=,last=;
rep(i,,n) {
if(A[i]-A[last]<x) is[i]=;
else is[i]=,last=i;
}
rep(i,,n) if(L-A[i]<x) is[i]=;
rep(i,,n) if(!is[i]) c++;
return c<=m;
}
int main() {
L=read();n=read();m=read();
int l=,r=L+,mid;
rep(i,,n) A[i]=read();
while(l+<r) if(check(mid=l+r>>)) l=mid; else r=mid;
printf("%d\n",l);
return ;
}

T5:

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
typedef unsigned int ll;
const int maxn=;
const int maxm=;
const int mod=;
char A[maxn],B[maxm];
int n,m,k,mx[maxn][maxm];
ll f[][maxn][maxm],g[][maxn][maxm];
int match(int x,int y) {
int ans=;
while(x>ans&&y>ans&&A[x-ans]==B[y-ans]) ans++;
return ans;
}
void update(ll& ans,ll v) {
ans=v;if(ans>mod) ans-=mod;
}
int main() {
n=read();m=read();k=read();
scanf("%s%s",A+,B+);
rep(i,,n) rep(j,,m) mx[i][j]=match(i,j);
int cur=;
rep(i,,n) rep(j,,n-i) g[][i+j][j]=;
rep(t,,k) {
cur^=;
memset(g[cur],,sizeof(g[cur]));
rep(gap,,n) rep(i,gap+t,min(n,m+gap)) {
int j=i-gap;
if(j-mx[i][j]-<) f[cur][i][j]=g[cur^][i-][j-];
else {
int temp=j-mx[i][j]-;if(temp<t-) temp=t-;
update(f[cur][i][j],g[cur^][i-][j-]-g[cur^][temp+gap][temp]+mod);
}
update(f[cur][i][j],f[cur][i][j]+f[cur][i-][j]);
if(j>t) update(g[cur][i][j],f[cur][i][j]+g[cur][i-][j-]);
else g[cur][i][j]=f[cur][i][j];
}
}
printf("%u\n",f[cur][n][m]);
return ;
}

NOIP2015其余几道题的更多相关文章

  1. UOJ149 【NOIP2015】子串

    本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! [问题描述]有两个仅包含小写英文字母的字符串 A ...

  2. 4560 NOIP2015 D2T2 子串

    4560 NOIP2015 D2T2 子串  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 有两 ...

  3. 【NOIP2015】运输计划

    [NOIP2015]运输计划 标签: 树上差分 LCA 二分答案 Description 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星 ...

  4. 洛谷 P2678 & [NOIP2015提高组] 跳石头

    题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...

  5. NOIP2015&2016普及组解题报告

    NOIP2015普及组题目下载 NOIP2016普及组题目下载 NOIP2015普及组题目: NOIP2018RP++ NOIP2016普及组题目 NOIP2018RP++ T1 金币\((coin. ...

  6. NOIP2015 T4 推销员 贪心+堆优化

    前几天在学堆,这个数据结构貌似挺简单的,但是我看了很久啊QAQ... 今天算是搞懂了吧...于是想到了这道题...(当初悄悄咪咪看题解记得一点) 点我看题 放洛谷的题... 题意的话,大概就是有n个房 ...

  7. 2106. [NOIP2015] 斗地主

        2106. [NOIP2015] 斗地主 ★★★☆   输入文件:landlords.in   输出文件:landlords.out   简单对比 时间限制:2 s   内存限制:1025 M ...

  8. NOIP2015斗地主题解 7.30考试

    问题 B: NOIP2015 斗地主 时间限制: 3 Sec  内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...

  9. NOIP2015普及组总结

    NOIP2015普及组总结 这次考试总体感觉不错,不过觉得时间有点紧,在最后30分钟才打完. 第一题(金币coin):大大的W!爆搜O(N),一分钟打完: 第二题(扫雷游戏mine):同上: 第三题( ...

随机推荐

  1. Windows环境下Qwt安装和使用

    之前安装过,现在记录下关键步骤,方便后面使用和复习吧. 环境:win10   Qt5.9  Qt Creator 4.3 参考:https://blog.csdn.net/linuxarmsummar ...

  2. 贪心算法: Codevs 1052 地鼠游戏

    #include <iostream> #include <algorithm> #include <queue> #include <cstring> ...

  3. 移动端网页开发 meta 之 viewport

    这几天在搞微信公众平台,涉及到几个页面要写,可是当我测试时发现和想象中不太一样,于是去找了几个页面看了下,发现他们页面头部有 meta viewport 的标签,所以去找了下网上的资料,发现千篇一律, ...

  4. unp的hello word

    最近无聊,再学学unp吧.学学网络编程.下面是一个demo: intro/daytimetcpcli.c #include "unp.h" int main(int argc, c ...

  5. LCA 算法(一)ST表

    介绍一种解决最近公共祖先的在线算法,st表,它是建立在线性中的rmq问题之上.   代码:   //LCA: DFS+ST(RMQ) #include<cstdio> #include&l ...

  6. python技巧 合并两个字典

    python 3.5+ 版本 In [1]: a={'x':2,'y':4} In [2]: b={'c':1,'d':3} In [3]: c={'c':3,'y':6} In [4]:  w={* ...

  7. scala笔记之惰性赋值(lazy)

    一.lazy关键字简介 lazy是scala中用来实现惰性赋值的关键字,被lazy修饰的变量初始化的时机是在第一次使用此变量的时候才会赋值,并且仅在第一次调用时计算值,即值只会被计算一次,赋值一次,再 ...

  8. Ubuntu GNOME单击任务栏图标最小化设置

    在Ubuntu GNOME的发行版中,桌面使用的是GNOME,GNOME可以像Windows那样有一个底部任务栏,在Ubuntu GNOME中它称为 dash to dock,如下图: Windows ...

  9. Shell命令行中特殊字符与其转义详解(去除特殊含义)

    特殊符号及其转义 大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给c ...

  10. 2017/05/20 java 基础 随笔

    static 关键字的特点 1.随着类的加载而加载 2.优先于对象存在 3.被类的所有对象共享 如果某个成员变量是被所有对象共享的,那么他就应该定义为静态的 4.可以通过类名调用 其实它本身也可以通过 ...