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 ...
随机推荐
- 用超链接提交表单,实现在动态网页的url中隐藏参数
动态网页中怎么隐藏url参数传递 我们在做动态网站的时候往往会在各个页面之间传递参数,而这些参数的名称和值都会在url地址栏中被暴露出来,这样一方面不安全,另一方面也不便于搜索引擎的收录,有的时候还有 ...
- 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)>为大家介绍了mybatis中别名的使用,以及其源码.本篇将为大家介绍TypeH ...
- html快速入门(基础教程+资源推荐)
1.html究竟是什么? 从字面上理解,html是超文本标记语言hyper text mark-up language的首字母缩写,指的是一种通用web页面描述语言,是用来描述我们打开浏览器就能看到的 ...
- ie浏览器兼容问题汇总
对兼容ie浏览器所遇到的问题及总结 互联快谈 2016-10-28 05:51 1,若直接给一个元素设置absolute定位.在浏览器缩放的时候.位置会错位.解决的方法是给外层的元素设置为relati ...
- TortoiseGit流程安装使用手册
end if
- V2EX 上收藏Top200
截止到目前 V2EX 上收藏人数最多的 56 个帖子 收藏数 Top200 截止到目前V2EX上收藏人数最多的56个帖子 说说自己知道的各个领域水平比较不错的论坛 发一个自用了一年多的加密代理工具 s ...
- P53 T5
北京某高校可用的电话号码有以下几类:校内电话号码由4位数字,第1位数字不是0:校外电话又分为本市电话和外地电话两类,拔校外电话需先拔0,若是本市电话则再接着拔8位数字(第一位不是0),若是外地电话则拔 ...
- JAVA动手动脑多态
动手实验一:下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; 先进行自我判断,得出结论后,运行TestCas ...
- LeetCode 4 Median of Two Sorted Arrays 查找中位数,排除法,问题拓展 难度:1
思路:设现在可用区间在nums1是[s1,t1),nums2:[s2,t2) 1.当一个数组可用区间为0的时候,由于另一个数组是已经排过序的,所以直接可得 当要取的是最小值或最大值时,也直接可得 2. ...
- 如何用python搞定验证码中的噪点
背景:朋友在为"关山口男子职业技术学校"写一款校园应用,于是找MoonXue写一个学生选课系统的登录接口.为了搞定这个接口,不得不先搞定这个系统的验证码. 验证码大概是这个样子 看 ...