NOIP 考前 暴力练习
BZOJ 1028
暴力枚举听的那张牌,和那个多余的两张牌,其余的mod3后模拟就可以了
#include <cstdio>
const int Maxn=;
int n,m,a[Maxn],b[Maxn],cnt,Ans[Maxn],x;
bool Check()
{
for (int i=;i<=n;i++)
if (a[i]>=)
{
for (int j=;j<=n+;j++) b[j]=a[j];
b[i]-=; bool flag=true;
for (int j=;j<=n;j++)
if (b[j])
{
if (b[j]<) {flag=false; break;}
int t=b[j]%;
b[j+]-=t,b[j+]-=t;
}
if (!flag || b[n+]< || b[n+]<) continue;
return true;
}
return false;
} int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=*m+;i++) scanf("%d",&x),a[x]++;
for (int i=;i<=n;i++)
{
a[i]++;
if (Check()) Ans[++cnt]=i;
a[i]--;
}
if (cnt==) {puts("NO"); return ;}
for (int i=;i<cnt;i++) printf("%d ",Ans[i]); printf("%d\n",Ans[cnt]);
return ;
}
BZOJ 1028
BZOJ 1860
直接Dfs枚举方案数,然后用Hash判重就可以了,类似于斗地主
#include<cstdio>
#include<set>
#define LL long long
using namespace std;
const LL Mod=;
set<LL>S;
LL KASE,Bin[],a[],Sum,mul=131ll;
inline bool Dfs(LL k,bool two,LL Sta)
{
if (S.find(Sta)!=S.end()) return ;
S.insert(Sta);
while (!a[k]&&k<=) k++;
if (k==) return two;
if (a[k]&&a[k+]&&a[k+]&&k<=)
{
a[k]--;a[k+]--;a[k+]--;
if (Dfs(k,two,(Sta-Bin[k]-Bin[k+]-Bin[k+]+*Mod)%Mod)) return true;
a[k]++;a[k+]++;a[k+]++;
}
if (a[k]>=)
{
a[k]-=;
if (Dfs(k,two,(Sta-Bin[k]*+*Mod)%Mod)) return true;
a[k]+=;
}
if (a[k]>=)
{
a[k]-=;
if (Dfs(k,two,(Sta-Bin[k]*+*Mod)%Mod)) return true;
a[k]+=;
}
if (a[k]>=&&!two)
{
a[k]-=;
if (Dfs(k,,(Sta-Bin[k]*-Bin[]+*Mod)%Mod)) return true;
a[k]+=;
}
return false;
}
int main()
{
Bin[]=; for (int i=;i<=;i++) Bin[i]=(Bin[i-]*mul)%Mod;
scanf("%d",&KASE);
for (int Kase=;Kase<=KASE;Kase++)
{
Sum=;
for (int i=;i<=;i++) scanf("%lld",&a[i]),Sum=(Sum+Bin[i]*a[i])%Mod;
S.clear();
if (Dfs(,,Sum)) puts("Yes"); else puts("No");
}
return ;
}
BZOJ 1860
POJ 1077 BFS+康拓展开
#include <cstdio>
int Fac[];
struct Data
{
int a[];
int Father,Pos,Direct;
}Q[],u;
bool vis[];
int Ans[];
inline int Cantor()
{
int Ret=;
for (int i=;i<;i++)
{
int Tmp=;
for (int j=i+;j<;j++)
if (u.a[j]<u.a[i]) Tmp++;
Ret+=Tmp*Fac[-i-];
}
return Ret;
}
int main()
{
Fac[]=; for (int i=;i<=;i++) Fac[i]=Fac[i-]*i;
for (int i=;i<;i++)
{
char ch=getchar();
while (ch==' ') ch=getchar();
if (ch=='x') Q[].a[i]=,Q[].Pos=i; else Q[].a[i]=ch-'';
}
u=Q[];
int l=,r=;
while (l<=r)
{
u=Q[l]; int Tmp;
int Statue=Cantor();
// printf("%d\n",Statue);
if (Statue==)
{
int k=l,tot=;
while (k!=)
{
Ans[++tot]=Q[k].Direct;
k=Q[k].Father;
}
for (int i=tot;i>=;i--)
{
if (Ans[i]==) putchar('u');
if (Ans[i]==) putchar('l');
if (Ans[i]==) putchar('r');
if (Ans[i]==) putchar('d');
}
return ;
}
vis[Statue]=true;
int k=u.Pos;
if (k>=)
{
Tmp=u.a[k]; u.a[k]=u.a[k-]; u.a[k-]=Tmp;
Statue=Cantor();
if (vis[Statue]==)
{
r++;
Q[r]=u;
Q[r].Pos=k-;
Q[r].Father=l;
Q[r].Direct=;
vis[Statue]=true;
}
Tmp=u.a[k]; u.a[k]=u.a[k-]; u.a[k-]=Tmp;
}
if (k%!=)
{
Tmp=u.a[k]; u.a[k]=u.a[k-]; u.a[k-]=Tmp;
Statue=Cantor();
if (vis[Statue]==)
{
r++;
Q[r]=u;
Q[r].Pos=k-;
Q[r].Father=l;
Q[r].Direct=;
vis[Statue]=true;
}
Tmp=u.a[k]; u.a[k]=u.a[k-]; u.a[k-]=Tmp;
}
if (k%!=)
{
Tmp=u.a[k]; u.a[k]=u.a[k+]; u.a[k+]=Tmp;
Statue=Cantor();
if (vis[Statue]==)
{
r++;
Q[r]=u;
Q[r].Pos=k+;
Q[r].Father=l;
Q[r].Direct=;
vis[Statue]=true;
}
Tmp=u.a[k]; u.a[k]=u.a[k+]; u.a[k+]=Tmp;
}
if (k<)
{
Tmp=u.a[k]; u.a[k]=u.a[k+]; u.a[k+]=Tmp;
Statue=Cantor();
if (vis[Statue]==)
{
r++;
Q[r]=u;
Q[r].Pos=k+;
Q[r].Father=l;
Q[r].Direct=;
vis[Statue]=true;
}
Tmp=u.a[k]; u.a[k]=u.a[k+]; u.a[k+]=Tmp;
}
l++;
}
puts("unsolvable");
return ;
}
POJ 1070
NOIP 考前 暴力练习的更多相关文章
- NOIP考纲总结+NOIP考前经验谈
首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 ...
- NOIP考前划水
NOIP考前划水 君指先跃动の光は.私の一生不変の信仰に.唯私の超電磁砲永世生き! 要开始背配置了? 3行不谢. (setq c-default-style "awk") (glo ...
- noip考前注意事项
明天就要离开学校,后天的现在Day1已经考完啦,临近考试了紧不紧张呢(不紧张才怪),那么考前我们应该注意点什么呢? 1.带好自己的证件,带好自己的证件,带好自己的证件,这很重要. 2.试机的时候一定要 ...
- NOIP 考前研究
NOIP 2017 试题研究 D1T1 小凯的疑惑 (45 min) 看到题面,大概是推数学公式. 先打暴力表,观察 \(a,b\) 与 \(n\) 的关系.猜想 \(a×b−a−b\). 引理:对于 ...
- noip考前模板大整理
//归并排序求逆序对 #include<bits/stdc++.h> #define ll long long using namespace std; ]; ll ans; ]; voi ...
- NOIP考前总结
最近出的锅比较多啊,我来总结一下吧 $1.$小心文件名/文件输入输出!别打错了!结束前十分钟一定要检查! $2.$开数组前要算好内存,不要开一个$1e8$或$1e4*1e4$这样的大数组,直接GG $ ...
- NOIP考前知识点整理
前言:距离NOIP还有不到一百天(虽然NOIP没了),为了整理一下所学的内容,才有了这篇博文.本文内容无特殊说明全部来自于博主的博客,代码也都是新敲的,努力在个人的码风基础上做到尽量简洁,求资瓷. 一 ...
- 【NOIP考前模拟赛】纯数学方法推导——旅行者问题
一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取. ...
- NOIP 考前 队列复习
BZOJ 1127 #include <cstdio> #include <cstring> #include <iostream> #include <al ...
随机推荐
- Python经典资料汇总
[专题推荐]Python系列英文原版电子书 http://down.51cto.com/zt/104 python简明教程(CHM) http://down.51cto.com/data/49213 ...
- Windows 2003 EE升级服务错误号:0x8DDD0018 解决办法
错误提示: [错误号: 0x8DDD0018] 此站点无法继续,因为这些 Windows 服务中的一个或多个没有运行: “自动更新”功能(允许站点查找.下载和安装适用于您的计算机的高优先级更新程序) ...
- mybatis if test 不为空字符串或null
<if test="type !=null and type !=''"> AND l.type=#{type,jdbcType=INTEGER} </if> ...
- ArcMap Add-in插件开发中解决VS调试时断点不会命中的问题
在VS2010中进行ArcMap Add-in插件开发(ArcEngine10.1,ArcGIS10.1),运行时为.NET4.0,在程序中设置了断点进行调试,但是运行后程序并不会在断点处停止,且原来 ...
- ajax无刷新删除、复制 THINKPHP
一.jquery 代码: <SCRIPT LANGUAGE=javascript> function delGoods(goodsID) { if(confirm( " ...
- UIImage
//设置UIImage的圆角 + (UIImage *)imageNamed:(NSString *)name size:(CGSize)size cornerRadius:(CGFloat)corn ...
- Install Sublime Text 3
$ sudo add-apt-repository ppa:webupd8team/sublime-text-3 $ sudo apt-get update $ sudo apt-get instal ...
- Python的入门要点
一.输入 1.键盘输入 在python 2.7中,不用input(),而用 raw_input()读入一行键盘输入,并转化为字符串. s = map(int ,raw_input().split()) ...
- CentOS 安装VNC Server
环境 服务器:192.168.10.181 系统:CentOS 6.0 安装过程 1.切换至root用户 2.检测系统是否安装VNC [root@Nginx canyouNgx]# rpm -q vn ...
- 配置 vim
cd / vim /etc/vim/vimrc 1.Ubuntu vim显示行号 在文件末端添加一新行,输入 set nu 2.Ubuntu vim语法高亮 在文件中找到 "syntax o ...