HGOI20180823 三校联考
首测:220qwq(算差的好吧)
后来改了一个地方:300qwq(算慢的好吧)

std被踩qwq

注意:输入数据第一行忘记输入n,亲脑补
题解:
多项式除法(若最后除出的答案为1那么就是成功),对于f(x)=0的一个解x=e 单项式(x-e)必然是f(x)的一个因式
而解是[1,20]的正整数,那么暴力搜索e的值。就行
AC代码:
# include <bits/stdc++.h>
# define Rint register int
using namespace std;
const int MAXN=;
int r[MAXN],a[MAXN],t[MAXN],n,ans[MAXN],last[MAXN];
inline bool chu(int e)//多项式除法(x-e)
{
memcpy(t,a,sizeof(a));
memset(r,,sizeof(r));
for (Rint i=n;i>=;i--) {
if (t[i]==) continue;
int k=t[i];
r[i-]=k;
t[i]=; t[i-]=t[i-]+k*e;
}
for (Rint i=;i<=n;i++)
if (t[i]!=) return false;
return true;
}
inline void dfs(int x,int tot)
{
if (tot==n) return;
for (Rint i=;i<=;i++) {
if (chu(i)) {
memcpy(last,a,sizeof(a));
memcpy(a,r,sizeof(r));
ans[++ans[]]=i;
dfs(i,tot+);
memcpy(a,last,sizeof(last));
}
}
}
int main()
{
freopen("equation.in","r",stdin);
freopen("equation.out","w",stdout);
scanf("%d",&n);
for (Rint i=;i<=n;i++) scanf("%d",&a[i]);
memset(ans,,sizeof(ans));
dfs(,);
for (Rint i=;i<=n;i++) printf("%d ",ans[i]);
printf("\n");
return ;
}

题解:配对?马上想到二分图。 怎么建图?
加起来是质数那么就连双向边,然后跑一边匈牙利算法,答案除以二就是答案
然而这是针对数字不为0的情况,如果数字为0,那么分奇数偶数考虑
显然 (奇数)+(奇数)!=质数
(偶数)+(偶数)!=质数
左边是奇数右边是偶数,然后加起来是质数连单向边,跑匈牙利算法
这里程序用了第一种方法
# include <bits/stdc++.h>
# define Rint register int
using namespace std;
const int MAXN=;
int n,a[MAXN],pre[MAXN],ans=;
bool mp[MAXN][MAXN],vis[MAXN];
bool prime[];
inline bool is_prime(int x)
{
if (x==) return false;
if (x==) return true;
return prime[x];
}
inline bool find(int u)
{
for (Rint i=;i<=n;i++)
if ((!vis[i])&&(mp[u][i])) {
vis[i]=true;
if (pre[i]==-||find(pre[i])){
pre[i]=u;
return true;
}
}
return false;
}
inline void solve()
{
memset(pre,-,sizeof(pre));
for (Rint i=;i<=n;i++){
memset(vis,false,sizeof(vis));
if (find(i)) ans++;
}
}
inline int read()
{
int X=,w=; char c=;
while(c<''||c>'') {w|=c=='-';c=getchar();}
while(c>=''&&c<='') X=(X<<)+(X<<)+(c^),c=getchar();
return w?-X:X;
}
void getprime(int n)
{
memset(prime,true,sizeof(prime));
for (int i=;i<=n;i++) {
if (prime[i]==false) continue;
for (int j=i+i;j<=n;j+=i) prime[j]=false;
}
}
int main()
{
freopen("prime.in","r",stdin);
freopen("prime.out","w",stdout);
getprime();
scanf("%d",&n);
memset(mp,false,sizeof(mp));
for (Rint i=;i<=n;i++) a[i]=read();
for (Rint i=;i<=n;i++)
for (Rint j=;j<=n;j++)
if ((i!=j)&&(is_prime(a[i]+a[j]))) mp[i][j]=true,mp[j][i]=true;
ans=;
solve();
printf("%d\n",ans/);
return ;
}




题解:和斗地主有几分胜似,暴力dfs是正解(不知道我斗地主会打几行)
句子1 句子2 句子3 句子4 将牌
对于每个句子0表示由三张相同的牌组成,1表示3张花色相同且连续的牌组成
dfs(p1,p2,p3,p4,now)表示句子1,句子2,句子3,句子4的状态是p1,p2,p3,p4(都是0 1),now表示当前的句子是句子now
然后搜索所有状态,判断剩下的牌是不是符合条件就可以了
程序如下
# include <bits/stdc++.h>
using namespace std;
struct node{
char s[];
};
struct qwq{
int hua,num;
}w[];
vector<node>v;
char s[];
int a[][];
bool judge()
{
bool flag=false;
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if (a[i][j]>) if (a[i][j]==) return ;
else return ;
}
bool flag;
void dfs(int p1,int p2,int p3,int p4,int now)
{
if (now==) {
if (judge()) { flag=true;return; }
else return;
}
if (now==) {
if (p1==) {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if (a[i][j]>=) {
a[i][j]-=;
w[].hua=w[].hua=w[].hua=i;
w[].num=w[].num=w[].num=j;
dfs(p1,p2,p3,p4,now+);
a[i][j]+=;
}
} else {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if ((a[i][j]>)&&(a[i][j+]>)&&(a[i][j+]>)) {
a[i][j]--;a[i][j+]--;a[i][j+]--;
w[].hua=w[].hua=w[].hua=i;
w[].num=j;w[].num=j+;w[].num=j+;
dfs(p1,p2,p3,p4,now+);
a[i][j]++;a[i][j+]++;a[i][j+]++;
}
}
} else if (now==){
if (p2==) {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if (a[i][j]>=) {
a[i][j]-=;
w[].hua=w[].hua=w[].hua=i;
w[].num=w[].num=w[].num=j;
dfs(p1,p2,p3,p4,now+);
a[i][j]+=;
}
} else {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if ((a[i][j]>)&&(a[i][j+]>)&&(a[i][j+]>)) {
a[i][j]--; a[i][j+]--; a[i][j+]--;
w[].hua=w[].hua=w[].hua=i;
w[].num=j;w[].num=j+;w[].num=j+;
dfs(p1,p2,p3,p4,now+);
a[i][j]++;a[i][j+]++;a[i][j+]++;
}
}
} else if (now==){
if (p3==) {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if (a[i][j]>=) {
a[i][j]-=;
w[].hua=w[].hua=w[].hua=i;
w[].num=w[].num=w[].num=j;
dfs(p1,p2,p3,p4,now+);
a[i][j]+=;
}
} else {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if ((a[i][j]>)&&(a[i][j+]>)&&(a[i][j+]>)) {
a[i][j]--;a[i][j+]--;a[i][j+]--;
w[].hua=w[].hua=w[].hua=i;
w[].num=j;w[].num=j+;w[].num=j+;
dfs(p1,p2,p3,p4,now+);
a[i][j]++;a[i][j+]++;a[i][j+]++;
}
}
} else if (now==){
if (p4==) {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if (a[i][j]>=) {
a[i][j]-=;
w[].hua=w[].hua=w[].hua=i;
w[].num=w[].num=w[].num=j;
dfs(p1,p2,p3,p4,now+);
a[i][j]+=;
}
} else {
for (int i=;i<=;i++)
for (int j=;j<=;j++)
if (a[i][j]>&&a[i][j+]>&&a[i][j+]>) {
a[i][j]--;a[i][j+]--;a[i][j+]--;
w[].hua=w[].hua=w[].hua=i;
w[].num=j;w[].num=j+;w[].num=j+;
dfs(p1,p2,p3,p4,now+);
a[i][j]++;a[i][j+]++;a[i][j+]++;
}
}
}
}
bool check()
{
for (int a=;a<=;a++)
for (int b=;b<=;b++)
for (int c=;c<=;c++)
for (int d=;d<=;d++)
{
flag=false;
dfs(a,b,c,d,);
if (flag) return true;
}
return false;
}
int main()
{
freopen("mahjong.in","r",stdin);
freopen("mahjong.out","w",stdout);
for (int i=;i<=;i++) {
scanf("%s",s);
node tmp;
memcpy(tmp.s,s,sizeof(s));
v.push_back(tmp);
}
memset(a,,sizeof(a));
for (int i=;i<v.size();i++) {
if (v[i].s[]=='w') a[][v[i].s[]-'']++;
else if (v[i].s[]=='p') a[][v[i].s[]-'']++;
else if (v[i].s[]=='s') a[][v[i].s[]-'']++;
}
int ansp=,ansnum=;
for (int i=;i<v.size();i++) {
int ch,num;
if (v[i].s[]=='w') ch=;
else if (v[i].s[]=='p') ch=;
else if (v[i].s[]=='s') ch=;
num=v[i].s[]-'';
a[ch][num]--;
int cnt=;
for (int j=;j<=;j++)
for (int k=;k<=;k++)
{
int tt=-a[j][k];
if (tt==) continue;
a[j][k]++;
if (check()) cnt+=tt;
a[j][k]--;
}
if (cnt>ansnum) {
ansnum=cnt; ansp=i+;
}
a[ch][num]++;
}
printf("%d %d\n",ansp,ansnum);
return ;
}
HGOI20180823 三校联考的更多相关文章
- 三校联考 Day3
三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...
- 【赛时总结】NOIP2018-三校联考1024
◇NOIP三校联考-1024◇ 发现以前的博客写得似乎都很水……基本上都没什么阅读量QwQ 决定改过自新╰( ̄ω ̄o) 就从这篇博客开始吧~ 现场考得无地自容,看到题解才发现一些东西……(我第三题还没 ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你
[五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...
- [2019多校联考(Round 6 T3)]脱单计划 (费用流)
[2019多校联考(Round 6 T3)]脱单计划 (费用流) 题面 你是一家相亲机构的策划总监,在一次相亲活动中,有 n 个小区的若干男士和 n个小区的若干女士报名了这次活动,你需要将这些参与者两 ...
- [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)
[多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...
- [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)
[多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...
- [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)
[多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...
- ZR10.1青岛集训三地联考
ZR10.1青岛集训三地联考 谢谢dijk和smy A 题目大意: 已知斐波那契数列\(f\) 设 \[ F_i = \sum_{i = 0}^nf_if_{n - i} \] 求 \[ \sum_{ ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底
[五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...
随机推荐
- Centos7 安装ELK日志分析
1.安装前准备 借鉴:https://www.cnblogs.com/straycats/p/8053937.html 操作系统:Centos7 虚拟机 8G内存 jdk8+ 软件包下载:采用rp ...
- HDFS--大数据应用的基石
近些年,由于智能手机的迅速普及推动移动互联网技术的蓬勃发展,全球数据呈现爆发式的增长.2018年5月企鹅号的统计结果:互联网每天新增的数据量达2.5*10^18字节,而全球90%的数据都是在过去的两年 ...
- c# Findwindow sendMessage
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...
- XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解
XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...
- 20155302《网络对抗》Exp6 信息收集与漏洞扫描
20155302<网络对抗>Exp6 信息收集与漏洞扫描 实验内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测 ...
- 20155304《网络对抗》Exp4 恶意代码分析
20155304<网络对抗>Exp4 恶意代码分析 实践内容 1.系统运行监控 1.1使用schtasks指令监控系统运行 我们在C盘根目录下建立一个netstatlog.bat的文本文件 ...
- POJ 1459&&3436
两道比较基础的网络流题目,重点就是建图. 1458:题意就是给你一些东西它们的数据,其中一些是发电站,还有一些是用户的家里,其中还有一些是中转站.让你求最大的输送电量. 就是一道很基础的最大流题目,建 ...
- SQLAlchemy 与 fask-SQLAlchemy 中的多表查询例子
我们知道,<学生.课程.选课>,是一个典型的多对多关系. 现分别用 SQLAlchemy 与 fask-SQLAlchemy 实现. 声明:本人实测通过. 使用 SQLAlchemy fr ...
- [CF1019D]Large Triangle[极角排序+二分]
题意 给出平面上 \(n\) 个点 \((x_i, y_i)\),问是否存在三个点构成的三角形的面积恰好为 \(S\) ,有的话,输出任意一组解即可. \(n\leq 2000\) 分析 BZOJ37 ...
- 基于Vue手写一个下拉刷新
当然不乏有很多下拉刷新的插件可以直接使用,但是自定义程度不强,大部分都只能改改文字,很难满足设计师的创意,譬如淘宝和京东首页那种效果,就需要自己花心思倒腾了,最近刚好有这种需求,做完了稍微总结一下,具 ...