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 ...
随机推荐
- php学习函数
1defined和define区别 2.dirname(__FILE__) 3.set_include_path 4.get_include_path 5.realpath() 6.require_p ...
- 学习PYTHON之路, DAY 3 - PYTHON 基础 3 (函数)
一 set 集合 (无序且不重复的元素集合) 基本操作: t.add('x') # 添加一项 s.update([10,37,42]) # 在s中添加多项 删除一项: t.discard('H') t ...
- 限制textarea输入内容长度(多浏览器兼容、鼠标操作可控)
限制textarea的输入内容长度,当从键盘输入,内容长度达到最大值时,只有输入Backspace.Delete.左移动.右移动有效,当用鼠标粘贴内容,则只保留最大值长度的内容.从而控制textare ...
- 学习记录之APPCan
2015年5月28的笔记,整理笔记搬了过来,好坏是自己当时的小成果,以后有想法继续补充 APPCan移动开发服务平台,有内置模板,列表样式,主页样式等供选择,适合开发简单布局或与内置模板布局相同的项目 ...
- Python高级特性学习笔记
切片(slice) 可简化循环取元素的操作. L[0:3] or L[:3] 表示从索引0的位置开始,到索引3为止,但不包括索引3的前3个元素(L[0],L[1],L[2]); L[-2:]表示取包括 ...
- mongodb-replset安装
节点分配 10.110.18.89 10.110.18.90 10.110.18.94 配置文件 systemLog: destination: file path: "/data/mong ...
- winform webbrowser flash显示
string flashSrc = "e:\\t.swf"; StringBuilder sb = new StringBuilder(); sb.Append("< ...
- 用C#实现的内存映射
当文件过大时,无法一次性载入内存时,就需要分次,分段的载入文件 主要是用了以下的WinAPI LPVOID MapViewOfFile(HANDLE hFileMappingObject, DWORD ...
- curl方法post一个数组
$r = $this->curl_post($url, $data);$list = json_decode($r,true); function curl_post($url = '', ...
- JS实现登陆验证的主要代码及思路
window.onload = function(){ // 获取input标签 var alInput = document.getElementsByTagName("input&quo ...