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):同上: 第三题( ...
随机推荐
- Spring cloud 微服务架构 Eureka篇
1 服务发现 ## 关于服务发现 在微服务架构中,服务发现(Service Discovery)是关键原则之一.手动配置每个客户端或某种形式的约定是很难做的,并且很脆弱.Spring Cloud提供了 ...
- html5 canvas从圆开始
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【整理】HTML5游戏开发学习笔记(4)- 记忆力游戏
1.预备知识(1)Canvas绘制多边形(2)Canvas绘制文字 2.实现思路涉及的对象 (1)场景Scene 场景代表了画布上的一块区域,场景里的每个物体都是场景里的一个元素,其绘制统一由场景 ...
- java CyclicBarrier以及和CountDownLatch的区别
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的 ...
- 20155233 2016-2017-2 《Java程序设计》第5周学习总结
20155233 2016-2017-2 <Java程序设计>第5周学习总结 学习目标 理解异常架构 牚握try...catch...finally处理异常的方法 会用throw,thro ...
- 【转载】RESTful API 设计指南
作者: 阮一峰 日期: 2014年5月22日 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制 ...
- Html设置html与body元素高度问题
为什么要设置HTML和body的高度? 在一些比较正规的网站经常见到会设置html与body的高度.是为了后面的div高度正确的显示. div的100%是从其上一级div的宽高继承来的,有一点很关键, ...
- 初步认识mitmproxy(一)
在windows机器上,经常用的最多的是fiddler工具,很强大,图形化界面,使用方便.简单:在mac上,Charles 类似fiddler工具,同样是易于操作的图形化界面,同样都是通过代理的方式实 ...
- [整理] mysql操作
0.启动mysql(在windows中MySql以服务形式存在,在使用前应确保此服务已经启动) net start mysql 0.5获取版本信息 select version(); 1.root 登 ...
- spring-mvc集成 swagger
问题1:spring-mvc集成 swagger, 配置好后界面 404, 原因: dispatcher-servlet.xml 文件中, 要在这上面 <!-- 启用spring mvc 注解 ...