首页 > 其他分享 >Week 12

Week 12

时间:2023-10-16 18:15:17浏览次数:47  
标签:Week 12 cout int s2 s1 -- dp

Week 12

P1776 宝物筛选

  • 思路:多重背包问题,用二进制优化

  • 注意:看清题目输入的顺序

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int w[N],v[N],s[N],dp[N];
    int main()
    {
    	int W,n;
    	cin>>n>>W;
    	
    	int num=1;
    	for(int i=1;i<=n;i++)
    	{
    		int x,y,z;
    		cin>>y>>x>>z;
    		for(int j=1;j<=z;j<<=1)
    		{
    			w[num]=j*x;
    			v[num++]=j*y;
    			z-=j;
    		}
    		if(z)
    		{
    			w[num]=z*x;
    			v[num++]=z*y;
    		}
    	}
    	
    	for(int i=1;i<num;i++)
    	{
    		for(int j=W;j>=w[i];j--)
    		{
    			dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
    		}
    	}
    			
    	cout<<dp[W]<<endl;
    	
    	return 0;
     } 
    

P1555 尴尬的数字

  • 思路:因为二进制只有0和1,错误比较好判断,所以直接for循环遍历每一位出错的情况,转化为十进制(n),再转化为三进制(s3)。

  • 特判:对于s1开头位是0的情况,可以直接得知该位错误,输出十进制。

  • 注意:string按位赋值初始化时,不能使用s2[i]=s1[i],要用s2+=s1[i]。

    #include<bits/stdc++.h>
    using namespace std;
    int zh2(string s)
    {
    	int len=s.length();
    	int n=0;
    	int k=1; //这个k记得放for循环外面啊啊!!找了半天 
    	for(int i=len-1;i>=0;i--)
    	{
    		if(s[i]=='1')
    		n+=k;
    		k=k*2;
    	}
    //	cout<<n<<endl;
    	return n;
    }
    
    string zh3(int n)
    {
    	string s,s2;
    	int i=0;
    	while(n>0)
    	{
    		s+=n%3+'0';
    		n=n/3;
    	}
    	int p=0;
    	int len=s.length();
    	for(int j=len-1;j>=0;j--)
    	s2=s2+s[j];
    //	cout<<s2<<endl;
    	return s2;
    }
    
    int main()
    {
    	string s1,s2,s3;
    	int n;
    	cin>>s1>>s2;
    	
    	//开头是0,特判
    	if(s1[0]=='0')
    	{
    		n=zh2(s1);
    		cout<<n<<endl;
    		return 0;
    	}
    		
    	int len1=s1.length();
    	for(int i=1;i<len1;i++)
    	{
    		if(s1[i]=='1') s1[i]='0';
    		else s1[i]='1';
    		
    		n=zh2(s1);
    		s3=zh3(n);
    		
    		int len3=s3.length();
    		int len2=s2.length(); 
    		int flag=0;
    		
    		if(len2==len3)
    		for(int j=0;j<len3;j++)
    		{
    			if(s2[j]!=s3[j])
    			flag++;
    		}
    		
    		if(flag==1)
    		{
    			cout<<n<<endl;
    			break;
    		}
    		
    		if(s1[i]=='1') s1[i]='0';
    		else s1[i]='1';
    	}
    	
    	return 0;
     } 
    

P8845 [传智杯 #4 初赛] 小卡和质数

  • 异或:先将数a b转化成二进制形式,按位比较,相同为0不同为1

  • 思路:本题要求x y的异或值为1,即二进制表达形式只有最后一位不同,分别是0和1,即x y值只相差1。x y必定是一奇一偶,而2以外的偶数都能被2整除,不属于质数,所以只有当x y分别是1和2的时候满足题意。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t,x,y;
	cin>>t;
	while(t--)
	{
		cin>>x>>y;
		if(x==1&&y==2) cout<<"Yes"<<endl;
		else if(x==2&&y==1) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}

标签:Week,12,cout,int,s2,s1,--,dp
From: https://www.cnblogs.com/xiaoyangii/p/17768013.html

相关文章

  • Week 6
    Week6贪心算法P1199[NOIP2010普及组]三国游戏知识点:贪心、博弈题思路:计算机的选择是贪心的,所以玩家和计算机都不可能选到默契值最大的武将组合。小涵赢的情况:在第二次选将时可以拿到第一次选中的武将的次大默契值组合。#include<bits/stdc++.h>usingnamespaces......
  • week 3
    Week3线性表P3613【深基15.例2】寄包柜分析:此题直接用数组得1e9个格子,内存要爆知识点map容器:find()返回数据所在位置的迭代器insert()插入pair迭代器:iterator,用于遍历容器元素(类似指针),输出*迭代器打印元素的值主要思路:vector容器嵌套map容器柜子数i......
  • week16
    Week16目录Week16div2代码源每日一题501RSA503A-B数对504数位计算505新国王游戏506完美数507Lusir的游戏601BFS练习1(广度优先)60201序列2603整除光棍604碰撞刷题P4913二叉树深度div2代码源每日一题501RSA质数正常判断即可A*B大于1的整数的平方的整数倍......
  • week7
    Week7动态规划P1048[NOIP2005普及组]采药思路:跟背包问题的思路差不多,for循环遍历所有情况,把选该草药和不选该草药的价值情况比较大小,选大的。#include<bits/stdc++.h>usingnamespacestd;constintN=1005;intw[N],v[N];//草药的时间和价值intres[N][N];//前i......
  • week5
    Week5P8604[蓝桥杯2013国C]危险系数知识点:图的vector存储和+dfs思路:用一个数组来记录每个节点被访问的次数,如果起点和终点之间有点的访问次数和终点的访问次数一样,那么它就是关键点。#include<bits/stdc++.h>usingnamespacestd;constintN=10005;intm,n,u,v,to......
  • USACO 2021.12 Platinum Paired Up
    洛谷传送门LOJ传送门如果\(T=1\),可以把重量全部取相反数转化成\(T=2\)。接下来只考虑\(T=2\)的情况。下文的\(m\)代表原题中的\(K\)。设第\(i\)个G牛的位置和重量分别为\(a_{0,i},b_{0,i}\),第\(i\)个H牛的位置和重量分别为\(a_{1,i},b_{1,i}\)......
  • 10月12日总结
    在前面我们基本把应用框架的基础设施搭建完成。接下来我们就得着手处理一下种子数据的问题。在一个基础框架里面,种子数据很重要,比如一些基础数据,初始用户等等,这些都需要初始化,否则程序启动却无法使用就很尴尬了。IDataSeeder#首先定义一个种子数据接口usingWheel.DependencyI......
  • AP8851H 宽电压降压恒压DC-DC 电源管理芯片 5V 12V输出 零功耗 快充方案应用
    1,产品描述  AP8851H一款宽电压范围降压型DC-DC电源管理芯片,内部集成使能开关控制、基准电源、误差放大器、过热保护、限流保护、短路保护等功能,非常适合在宽输入电压范围具有优良的负载和线性调整度。AP8851H芯片包含每周期的峰值限流、软启动、过压保护和温度保护,......
  • 【DFS】129. 求根节点到叶子结点的和
    链接https://leetcode.cn/problems/sum-root-to-leaf-numbers/description/思路时刻记住,DFS是递归的一种。而解决递归,最朴素的思路就是:递归的定义就是递归的解。题目要求我们求根节点到叶子结点的和,我们要提供一个值保持其状态,退出条件直接用题目给的限定即可。代码#Defin......
  • BitBake使用攻略--从HelloWorld讲起 (转载自:https://www.cnblogs.com/chegxy/p/1571811
    目录写在前面1.什么是BitBake2.BitBake的安装3.使用BitBake构建一个HelloWorld工程后续 写在前面《BitBake使用攻略》系列文章将从今天开始不定时的更新,主要讲解BitBake的背景,基本语法,功能及其命令等知识,旨在为即将从事Yocto项目和OpenEmbedded项目的同学做一些预......