NOIP2015其余几道题
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其余几道题的更多相关文章
- UOJ149 【NOIP2015】子串
本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! [问题描述]有两个仅包含小写英文字母的字符串 A ...
- 4560 NOIP2015 D2T2 子串
4560 NOIP2015 D2T2 子串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有两 ...
- 【NOIP2015】运输计划
[NOIP2015]运输计划 标签: 树上差分 LCA 二分答案 Description 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星 ...
- 洛谷 P2678 & [NOIP2015提高组] 跳石头
题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...
- NOIP2015&2016普及组解题报告
NOIP2015普及组题目下载 NOIP2016普及组题目下载 NOIP2015普及组题目: NOIP2018RP++ NOIP2016普及组题目 NOIP2018RP++ T1 金币\((coin. ...
- NOIP2015 T4 推销员 贪心+堆优化
前几天在学堆,这个数据结构貌似挺简单的,但是我看了很久啊QAQ... 今天算是搞懂了吧...于是想到了这道题...(当初悄悄咪咪看题解记得一点) 点我看题 放洛谷的题... 题意的话,大概就是有n个房 ...
- 2106. [NOIP2015] 斗地主
2106. [NOIP2015] 斗地主 ★★★☆ 输入文件:landlords.in 输出文件:landlords.out 简单对比 时间限制:2 s 内存限制:1025 M ...
- NOIP2015斗地主题解 7.30考试
问题 B: NOIP2015 斗地主 时间限制: 3 Sec 内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...
- NOIP2015普及组总结
NOIP2015普及组总结 这次考试总体感觉不错,不过觉得时间有点紧,在最后30分钟才打完. 第一题(金币coin):大大的W!爆搜O(N),一分钟打完: 第二题(扫雷游戏mine):同上: 第三题( ...
随机推荐
- SQL记录-PLSQL函数
PL/SQL函数 PL/SQL函数与过程相同,不同之处在于函数有一个返回值.因此,前面的章节中的所有讨论都适用于函数. 创建函数 建立一个独立函数可以使用CREATE FUNCTION语句创建.CRE ...
- python学习笔记6--操作Mysql
一.mysql操作 import pymysql #连上mysql ip 端口号 密码 账号 数据库 #建立游标 #执行sql #获取结果 #关闭连接.关闭游标 conn=pymysql.connec ...
- dedecms织梦首页判断,添加不同标题
<title> {dede:field.title/} {dede:field name='typeid' runphp="yes"}(@me==0)? @me=&qu ...
- [转载]嵌入式C语言中的Doxygen注释模板
http://blog.csdn.net/willerency/article/details/7083953 嵌入式C语言开发中通常使用Doxygen进行文档的生成.Doxygen支持多种格式,非常 ...
- 【整理】HTML5游戏开发学习笔记(2)- 弹跳球
1.预备知识(1)在画布上绘制外部图片资源(2)梯度(gradient):HTML5中的对象类型,包括线性梯度和径向梯度.如createLinearGradient,绘制梯度需要颜色组http://w ...
- 修改input placeholder样式
<style> /* 通用 */ ::-webkit-input-placeholder { color: rgb(235, 126, 107); } ::-moz-placeholder ...
- 安装informatic过程中的错误
1.Check if the DISPLAY variable is set export DISPLAY=192.168.3.201:0.0 在注销用户并切换到oracle或者infa 用户,就可以 ...
- SANS社区帐号邮件激活问题
注册时,密码需要数字,大写字母,小写字母,符号10位以上才能注册成功 吐槽:谁来爆破一下这种强度的密码,哈哈. 在我的文章中,有 计算机取证 分类,里面的一篇文章 Virtual Worksta ...
- linux服务器账号密码正确无法登录
登录服务器时,发现密码错误,输入后还是错误不能登录 最后发现登录日志中有pam_tally2(sshd:auth): user root (0) tally 53, deny 6 less /var/ ...
- MXNet深度学习库简介
MXNet深度学习库简介 摘要: MXNet是一个深度学习库, 支持C++, Python, R, Scala, Julia, Matlab以及JavaScript等语言; 支持命令和符号编程; 可以 ...