T1 [HAOI2016]放棋子

https://daniu.luogu.org/problem/show?pid=3182

障碍交换行不影响

所以第i列有障碍的行换到第i行

然后错排公式

本校自测要写压位高精,不写了。。。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
int len;
int num[];
void clear()
{
len=;
memset(num,,sizeof(num));
}
void operator = (int a)
{
len=;
while(a) len++,num[len]=a%,a/=;
}
void operator = (node a)
{
len=a.len;
for(int i=;i<=len;i++) num[i]=a.num[i];
}
node operator + (node a)
{
node c; c.clear();
memset(c.num,,sizeof(c.num));
int L=max(a.len,len);
c.len=L;
for(int i=;i<=L;i++) c.num[i]=num[i]+a.num[i];
for(int i=;i<=L;i++)
if(c.num[i]>) c.num[i+]+=c.num[i]/,c.num[i]%=;
if(c.num[L+]) c.len++;
while(c.num[c.len]>) c.num[c.len+]=c.num[c.len]/,c.num[c.len]%=,len++;
if(c.num[c.len+]) c.len++;
return c;
}
node operator * (int a)
{
node c; c.clear();
int L;
c.len=L=len;
for(int i=;i<=L;i++) c.num[i]=num[i]*a;
for(int i=;i<=L;i++)
if(c.num[i]>) c.num[i+]+=c.num[i]/,c.num[i]%=;
if(c.num[L+]) c.len++;
while(c.num[c.len]>) c.num[c.len+]=c.num[c.len]/,c.num[c.len]%=,len++;
if(c.num[c.len+]) c.len++;
return c;
}
void print()
{
for(int i=len;i;i--) printf("%d",num[i]);
}
};
node f[];
int main()
{
// freopen("firstmeet.in","r",stdin);
// freopen("firstmeet.out","w",stdout);
int n;
scanf("%d",&n);
f[]=,f[]=,f[]=;
for(int i=;i<=n;i++)
{
f[i].clear();
f[i]=(f[i-]+f[i-])*(i-);
}
f[n].print();
}

T2  [Usaco2010 Dec]Exercise 奶牛健美操

http://www.lydsy.com/JudgeOnline/problem.php?id=2097

树形DP

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 100001
using namespace std;
int front[N],to[N<<],nxt[N<<],tot;
int dp[N],tmp[N];
int cnt,p;
void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
}
void add(int u,int v)
{
to[++tot]=v; nxt[tot]=front[u]; front[u]=tot;
to[++tot]=u; nxt[tot]=front[v]; front[v]=tot;
}
bool dfs(int x,int y,int z)
{
int sum=;
for(int i=front[x];i;i=nxt[i])
if(to[i]!=y) { if(!dfs(to[i],x,z)) return false; }
for(int i=front[x];i;i=nxt[i])
if(to[i]!=y) tmp[++sum]=dp[to[i]]+;
sort(tmp+,tmp+sum+);
for(sum;tmp[sum]+tmp[sum-]>z;sum--,cnt++);
dp[x]=tmp[sum];
if(cnt>p) return false;
return true;
}
bool check(int mid)
{
memset(dp,,sizeof(dp));
cnt=;
return dfs(,,mid);
}
int main()
{
/* int size = 256 << 15;
char *pp = (char*) malloc(size) + size;
__asm__ ("movl %0, %%esp\n" :: "r"(pp));
freopen("longnosee.in","r",stdin);
freopen("longnosee.out","w",stdout); */
int n;
read(n), read(p);
int u,v;
for(int i=;i<n;i++)
{
read(u),read(v);
add(u,v);
}
int l=,r=n,mid,ans;
while(l<=r)
{
mid=l+r>>;
if(check(mid)) ans=mid,r=mid-;
else l=mid+;
}
printf("%d",ans);
}

T3

大爆搜,粘std啦

#include <cstdio>
#include <iostream>
#define rg register
#define Max 22
inline void read (int &now)
{
rg char c = getchar ();
for (now = ; !isdigit (c); c = getchar ());
for (; isdigit (c); now = now * + c - '', c = getchar ());
}
int _x[] = { , -, , , , }, _y[] = { , , , -, , }, _z[] = { , , , , , - };
int N, M, Z, P, Sx, Sy, Sz, St, Tt,Tx, Ty, Tz, Answer; bool is[Max][Max][Max], dot[Max][Max][Max];
inline bool Can (int x, int y, int z) { return x > && x <= N && y > && y <= M && z > && z <= Z && !is[x][y][z] && !dot[x][y][z]; }
inline int abs (int a) { return a < ? -a : a; }
void Dfs (int x, int y, int z, int t, int s)
{
int r = abs (x - Tx) + abs (y - Ty) + abs (z - Tz);
if (s + (r >> ) >= Answer) return ;
if (x == Tx && y == Ty && z == Tz) { if (t == Tt) Answer = s; return ; }
rg int i, a, b, c;
if (Can (x + _x[t], y + _y[t], z + _z[t]) && Can (x + _x[t] * , y + _y[t] * , z + _z[t] * ))
{
is[x + _x[t]][y + _y[t]][z + _z[t]] = true;
is[a = (x + _x[t] * )][b = (y + _y[t] * )][c = (z + _z[t] * )] = true;
for (i = ; i < ; ++ i)
if ((i >> ) != (t >> ) && Can (a + _x[i], b + _y[i], c + _z[i]) && Can (a + _x[i] * , b + _y[i] * , c + _z[i] * ))
{
is[a + _x[i]][b + _y[i]][c + _z[i]] = true;
is[a + _x[i] * ][b + _y[i] * ][c + _z[i] * ] = true;
Dfs (a + _x[i] * , b + _y[i] * , c + _z[i] * , i, s + );
is[a + _x[i]][b + _y[i]][c + _z[i]] = false;
is[a + _x[i] * ][b + _y[i] * ][c + _z[i] * ] = false;
}
if (Can (x + _x[t] * , y + _y[t] * , z + _z[t] * ))
{
is[a = (x + _x[t] * )][b = (y + _y[t] * )][c = (z + _z[t] * )] = true;
for (i = ; i < ; ++ i)
if ((i >> ) != (t >> ) && Can (a + _x[i], b + _y[i], c + _z[i]))
{
is[a + _x[i]][b + _y[i]][c + _z[i]] = true;
Dfs (a + _x[i], b + _y[i], c + _z[i], i, s + );
is[a + _x[i]][b + _y[i]][c + _z[i]] = false;
}
is[a = (x + _x[t] * )][b = (y + _y[t] * )][c = (z + _z[t] * )] = false;
}
is[x + _x[t]][y + _y[t]][z + _z[t]] = false;
is[x + _x[t] * ][y + _y[t] * ][z + _z[t] * ] = false;
}
}
int Main ()
{
freopen ("blessyou.in", "r", stdin); freopen ("blessyou.out", "w", stdout);
read (N), read (M), read (Z), read (P); rg int i, j; int x, y, z; rg char c;
if (N <= && M <= && Z <= ) return printf ("Dream Battle"), ;
read (Sx), read (Sy), read (Sz);
for (c = getchar (); c != 'x' && c != 'y' && c != 'z'; c = getchar ());
St = (c - 'x') << ;
if (c == 'x') St += (Sx == N); else if (c == 'y') St += (Sy == M);
else if (c == 'z') St += (Sz == Z);
Sx -= _x[St], Sy -= _y[St], Sz -= _z[St];
read (Tx), read (Ty), read (Tz);
for (c = getchar (); c != 'x' && c != 'y' && c != 'z'; c = getchar ());
Tt = (c - 'x') << ;
if (c == 'x') Tt += (Tx == ); else if (c == 'y') Tt += (Ty == );
else if (c == 'z') Tt += (Tz == );
for (i = ; i <= P; ++ i) read (x), read (y), read (z), dot[x][y][z] = true;
Answer = ; Dfs (Sx, Sy, Sz, St, );
if (Answer == ) printf ("Dream Battle"); else printf ("%d", Answer);
return ;
}
int ZlycerQan = Main (); int main (int argc, char *argv[]) { return ; }

NOIP模拟赛11的更多相关文章

  1. 11/1 NOIP 模拟赛

    11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...

  2. NOIP模拟赛-2018.11.7

    NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...

  3. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  4. NOIP模拟赛-2018.11.5

    NOIP模拟赛 好像最近每天都会有模拟赛了.今天从高二逃考试跑到高一机房,然而高一也要考试,这回好像没有拒绝的理由了. 今天的模拟赛好像很有技术含量的感觉. T1:xgy断句. 好诡异的题目,首先给出 ...

  5. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  6. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  7. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  8. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  9. NOI.AC NOIP模拟赛 第三场 补记

    NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不 ...

随机推荐

  1. 项目进行ing

    1.我们的看板 2.立行会议 (1)照片 (2)时间:每天20:00 (3)地点:学校研发中心会议室 3.看板进展: 已有6个任务被移到Check Out栏中,详细情况如下: 梁植淋:构建项目架构,封 ...

  2. 20181120-4 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2409 版本控制地址   https://git.coding.net/lg ...

  3. UML设计(团队作业6)

    决胜 Poker 一.团队成员 学号 姓名 211606392 郑俊瑜 (队长) 211606327 冉繁盛 211606323 刘世华 211606386 姚皓钰 211606358 陈卓楠 211 ...

  4. 对懂球帝ios版的用户体验

    用户界面: 主页面是资讯页面 这个设计很棒 对球迷来说 每天最关注的就是 我的主队赢了输了 其次界面以绿色为主 很有绿茵场的感觉 很符合足球狗的口味 记住用户的选择: 这个应用 有一个 球队的关注 选 ...

  5. android入门 — Activity启动模式

    1.standard模式 standard模式是系统的默认启动方式,每次激活Activity都会创建Activity,并放在任务栈中. 系统不会在乎活动是否已经存在于返回栈中,每次启动都会创建该活动的 ...

  6. C++进阶之_类型转换

    C++进阶之_类型转换 1.类型转换名称和语法 C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操 ...

  7. 【Nginx】优化配置

    nginx优化 突破十万并发 一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它 ...

  8. Laravel 5.4 数据库迁移一次之后就不起作用!

    https://segmentfault.com/q/1010000010806351 我在命令行中生成了一个新的迁移脚本: 当我执行命令:php artisan migrate 时 显示迁移成功,并 ...

  9. 双主双写、只备份某些表且要在建表ID自增

    先展示下最终实现的配置 主1的配置(重要的,其他略) log-bin = mysql-bin #必须要有binlog auto_increment_offset = 1 #自增ID的初始值 auto_ ...

  10. 【UNIX环境高级编程】线程同步

    当多个线程共享相同的内存时,需要确保每个线程看到一致的数据视图.如果每个线程使用的变量都是其他线程不会读取和修改的,那么就不存在一致性问题.同样,如果变量是只读的也不会有一致性问题.但是,当一个线程可 ...