CSP24

news/2024/11/16 0:33:53/文章来源:https://www.cnblogs.com/wlesq/p/18368155

学了些DP
学校题库有\(BUG\)
image

首先要满足条件\(x,y\)的二进制有1的位必然包含\(a\),然后让\(s-2a\),也就是除去二进制包含\(a\)有1的位,然后\(<0\)肯定无解,其次是如果有与\(a\)同一级的含\(1\)二进制位也不合法

点击查看代码
#include <bits/stdc++.h>
#define speed() ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define ll long long
#define lid (rt<<1)
#define rid (rt<<1|1)
// #define endl '\n'
#define pii pair<int,int>
//#define int long long
#define pb push_back
#define ts cout<<"----------------"<<endl;
#define bs bitset<65>
using namespace std;
ll a,s;bool has[65];
int main()
{freopen("and.in","r",stdin);freopen("and.out","w",stdout);// freopen("in.in","r",stdin);// freopen("out.out","w",stdout);int T;cin>>T;while(T--){cin>>a>>s;// cout<<bs(a)<<" "<<bs(s)<<endl;bitset<65> x,y,t;memset(has,0,sizeof has);// memset(aa,0,sizeof aa);memset(bb,0,sizeof bb);for(ll i=0;i<=60;i++){if(a>>i&1ll){x[i]=1;has[i]=1;y[i]=1;s-=(1ll<<i);s-=(1ll<<i);}}if(s<0){cout<<"No"<<endl;continue;}else{// cout<<"Yes"<<endl;bool f=1;for(ll i=0;i<=60;i++){if(s>>i&1ll){if(has[i])f=0;}}if(f)cout<<"Yes"<<endl;else cout<<"No"<<endl;}}return 0;
}

image
模拟退火立大功

点击查看代码
#include <bits/stdc++.h>
#define speed() ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define ll long long
#define lid (rt<<1)
#define rid (rt<<1|1)
// #define endl '\n'
#define pii pair<int,int>
#define ull unsigned long long
#define pb push_back
#define ts cout<<"----------------"<<endl;
#define bs bitset<65>
using namespace std;
const int N = 2e5+5;
int n,k;
mt19937 rnd(chrono::system_clock::now().time_since_epoch().count());
int rand(int l,int r)
{uniform_int_distribution<int> range(l, r); return range(rnd) ;
}
struct ac
{int a,b;
}a[N];
bool cmp(ac a,ac b)
{if(a.a==b.a)return a.b>b.b;return a.a>b.a;
}
bool vis[N];
ll ans;
ll calc()
{ll res=1;for(int i=1;i<=k;i++){res=res*a[i].a+a[i].b;}ans=max(ans,res);return res;
}
void SA()
{sort(a+1,a+1+n,cmp);for(double t=3000;t>=1e-7;t*=0.998){ll now=calc();int u=rand(1,INT_MAX)%n+1,v=rand(1,INT_MAX)%n+1;swap(a[u],a[v]);ll nn=calc();if(nn>now)continue;if((double)exp((double)(nn-now)/t)>(double)rand(1,INT_MAX)/INT_MAX)continue;swap(a[u],a[v]);}
}
double Tm()
{return (double)clock()/CLOCKS_PER_SEC;
}
int main()
{speed();// freopen("in.in","r",stdin);// freopen("out.out","w",stdout);freopen("func.in","r",stdin);freopen("func.out","w",stdout);cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i].a>>a[i].b;}random_shuffle(a+1,a+1+n);while(Tm()<0.8)SA();cout<<ans<<endl;return 0;
}

正解,设\(A_1(A_2+B_2)+B_1>A_2(A_1+B_1)+B_2\)\((A_1-1)B_2>(A_2-1)B_2\)
排个序,然后\(dp\)即可,记得处理边界啊

点击查看代码
#include <bits/stdc++.h>
#define speed() ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define ll long long
#define lid (rt<<1)
#define rid (rt<<1|1)
// #define endl '\n'
#define pii pair<int,int>
#define ull unsigned long long
#define pb push_back
#define ts cout<<"----------------"<<endl;
#define bs bitset<65>
using namespace std;
const int N = 2e5+5;
ll n,k,dp[15][N];
struct ac
{ll a,b;
}a[N];
bool cmp(ac a,ac b)
{return (b.a-1)*a.b>(a.a-1)*b.b;
}
int main()
{speed();freopen("func.in","r",stdin);freopen("func.out","w",stdout);// freopen("in.in","r",stdin);// freopen("out.out","w",stdout);cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i].a>>a[i].b;}sort(a+1,a+1+n,cmp);dp[0][0]=1;//sb for(int i=1;i<=n;i++)dp[0][i]=1;for(int i=1;i<=k;i++){for(int j=1;j<=n;j++){dp[i][j]=max(dp[i][j-1],dp[i-1][j-1]*a[j].a+a[j].b);// cout<<i<<" "<<j<<" "<<dp[i]}}// for(int i=1;i<=n;i++)// {// 	for(int j=0;j<=k;j++)// 	{// 		dp[i][j]=dp[i-1][j];// 		if(j)dp[i][j]=max(dp[i][j],dp[i-1][j-1]*a[i].a+a[i].b);// 	}// }ll ans=0;for(int i=1;i<=n;i++)ans=max<ll>(ans,dp[k][i]);cout<<ans<<endl;return 0;
}

image
预设性\(DP\)详见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784000.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用for循环输出数组与初识增强for循环

1.定义一个数组2.使用for循环设置编码3.输出带有编码的数组使用增强for循环输出数组 1.依旧是定义数组 2.设置一个新的变量x用于替代数组 3.直接输出变量x即可

线程不安全问题实例

package com.shujia.day19.sellTickets;/*使用Runnable的方式实现为了模拟更加真实的售票情况,我们加入延迟问题:我们加入了延迟之后,发现a. 有重复售卖同一张票的情况(原因1)b. 还出现了一个不该出现的票数据,比如第0张票,第-1张票(原因2)原因:1. cpu小小的时间片,…

24年首批!上海通管通报违规app涉及欧莱雅、玛莎拉蒂

8月16日上海市通信管理局官方微信公众号“上海通信圈”发布《上海市通信管理局关于侵害用户权益行为app的通报(2024年第一批)》。本次app通报为2024年第一批。内容显示本次共通报26款移动互联网应用程序涉及app和小程序。 应用来源:本次检测的应用来源均为主流分发平台如应用…

ControlNeXt: Powerful and Efficient Control for Image and Video Generation(2024,8)

ControlNeXt: Powerful and Efficient Control for Image and Video Generation(2024,8) paper Github 进一步在ControlNet上进行了改进,主要针对一下两点对于每一个模块添加一个Zero-Conv也会占用很多显存. Zero-Conv两个模态的输出的mean、var具有差异,导致收敛很慢.针对1,使…

033、Vue3+TypeScript基础,路由传参时候把层级脱掉

01、Datail.vue代码如下:<template><ul class="news-list"><li>编号:{{ route.query.id }}</li><li>编号:{{ route.query.title }}</li><li>编号:{{ route.query.content }}</li></ul> </template>…

Tarjan 之 SCC 与 缩点

这篇文章将讲述作者对 Tarjan求SCC与缩点(不是割点)的理解 让我们开始吧! Tarjan SCC 与 缩点 既然要求 \(SCC\) 那我们先要弄明白 什么是 SCC SCC 指的是强连通分量 强连通指的是若一张有向图的节点两两互相可达,则这张图是强连通的 而强连通分量 指的是一个极大的连通子图…

马哥教育 c10网络安全 第二周作业 2024/8/17

1、使用 html 写一个网页,要求满足以下条件: (1)网页中含有任意一张图片,图片路径使用绝对路径,鼠标悬停在图片时出现“马哥教育”文本,且点击图片可跳转至马哥教育官方页面 (2)网页中包含账号、密码登录,且账号提前定义好是 admin 且不可更改,输入密码时显示加密形…

FinalShell工具的使用

第1篇 FinalShell工具的使用1.介绍 xshell作为Linux远程连接的工具,教程请看《通过xshell远程连接ubuntu》。但是,xshell是付费软件。于是,找到一个finalshell作为其替换软件。 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分…

c10 第二次作业 2024/8/17

1、使用 html 写一个网页,要求满足以下条件: (1)网页中含有任意一张图片,图片路径使用绝对路径,鼠标悬停在图片时出现“马哥教育”文本,且点击图片可跳转至马哥教育官方页面 (2)网页中包含账号、密码登录,且账号提前定义好是 admin 且不可更改,输入密码时显示加密形…

博客模版

第1篇 FinalShell工具的使用1.介绍 xshell作为Linux远程连接的工具,教程请看《通过xshell远程连接ubuntu》。但是,xshell是付费软件。于是,找到一个finalshell作为其替换软件。 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分…

打印99乘法表

我们的核心思想是以小化大 1.先写出1的所有乘法2.设置一个变量,使得不止有1乘n3.将1的乘法放入变量中,使得1再次被循环包起来4.解决重复乘法图片中出现了两次1*4,说明刚才的表达式会有重复相乘 出现重复的原因: a有1~9的数字 而i也会有1~9, a*i就必然会有重复,我们需要让…

动态dp

T1 一共 \(n\) 颗糖果,第 \(i\) 颗的价值为 \(a[i]\),你不能连着选两颗,请问你的选到的最大价值为多少 显然有如下写法 : 设 \(dp[i][0/1]\)表示选到了第 \(i\) 颗,第 \(i\) 颗选或不选 显然有转移 : \(dp[i][0] = max(dp[i - 1][0], dp[i - 1][1])\) \(dp[i][1] = max(dp[i - …