首页 > 其他分享 >洛谷 P7774 [COCI2009-2010#2] KUTEVI(DP:完全背包)

洛谷 P7774 [COCI2009-2010#2] KUTEVI(DP:完全背包)

时间:2022-09-27 20:23:32浏览次数:85  
标签:P7774 洛谷 COCI2009 LL cin 角度 复制 YES

https://www.luogu.com.cn/problem/P7774

题目大意:

给定n个已知角度a[1],a[2],,,a[n];
给定m个需要我们去拼凑的角度b[1],b[2],,,b[m];

数组a中的角度可以使用任意多次,从0开始对数组a中的角度进行加、减运算,
如果数组b中的角度可以被拼凑出来,输出YES,否则输出NO。
输入 #1复制
2 1
30 70
40
输出 #1复制
YES
输入 #2复制
1 1
100
60
输出 #2复制
YES
输入 #3复制
3 2
10 20 30
5 70
输出 #3复制
NO
YES
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL N=200200,M=2002;
LL a[N],b[N];
LL f[N];
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL n,m;
        cin>>n>>m;
        for(LL i=1;i<=n;i++)
            cin>>a[i];
        for(LL i=1;i<=m;i++)
            cin>>b[i];
        f[0]=1;//每个角度的初始值都是为0 
        for(LL i=1;i<=n;i++)//n个角度
        {
            for(LL j=0;j<=1000;j++)//最多旋转1000次,直接返回原点(其实这题的n数据范围特别小,j可以开大一点完全没事)
            {
                //|或操作有一个即为有
                if(j>=a[i]) f[j%360]|=f[(j-a[i])%360];//不要后退至<0,后退取模影响最终结果
                f[j%360]|=f[(j+a[i])%360];
            }
        }
        for(LL i=1;i<=m;i++)
        {
            if(f[b[i]]==1) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }
	return 0;
}

标签:P7774,洛谷,COCI2009,LL,cin,角度,复制,YES
From: https://www.cnblogs.com/Vivian-0918/p/16735794.html

相关文章

  • 洛谷 CF1257F Make Them Similar 灰 题解
    前言本题解采用折半搜索算法完成,对于不打算用这种方法的同学,这篇题解可能会浪费你人生中宝贵的十几分钟。思路此题似乎找不出什么好的性质,那么考虑暴力。发现\(x,a\)......
  • 神奇的博弈结论(摘自洛谷)
    神奇的博弈结论(摘自洛谷)一.巴什博奕\((BashGame):\)A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。其实如果知道原......
  • 洛谷P1463 反素数()
    P1463[POI2001][HAOI2007]反素数100%数据时,N<=2e9,即使使用线性的欧拉筛也会TLE如此大的数据范围,O(1)的时间复杂度都跑不过,说明要么打表,要么就需要通过计算直接得出答案,......
  • 洛谷 P1114 “非常男女”计划 (前缀和)
    https://www.luogu.com.cn/problem/P1114题目大意:给定一排数字,让我们求出最大的区间内1和0的个数相等时的区间长度。输入9010001100输出6输入10011......
  • 洛谷 P1025 [NOIP2001 提高组] 数的划分 (dfs)
    https://www.luogu.com.cn/problem/P1025给定一个n和k,把n拆分成k个数字的和,数字可以相同,但是种类不能相同。求能凑出的数量。输入73输出4明明是一道很简单的dfs,......
  • AcWing 133/洛谷2827 蚯蚓
    首先考虑根据题意模拟#include<bits/stdc++.h>#defineintlonglong//懒死谁了usingnamespacestd;typedeflonglongllinlinevoidrd(int&x){x=0;b......
  • 洛谷P1290 欧几里德的游戏
    链接:https://www.luogu.com.cn/problem/P1290不妨假设\(b\leqa\)。显然,当\(a\)是\(b\)的倍数时,为必胜态。接下来考虑\(a\)不为\(b\)的倍数时:1.\(a\)小于\(2*b\)时,当前......
  • 洛谷P3372【模板】线段树1
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e6+5;intn,m,a[N];intadd[N*4];//账本longlongsum[N*4];//a[k]的区间和voidbuild(intk,intl,i......
  • 洛谷真题字典树
    P8306【模板】字典树1#include<bits/stdc++.h>2usingnamespacestd;3intt,n,q;4constintmaxn=3000005;5chars[maxn];6intson[maxn][80],cnt[ma......
  • 洛谷 P1123 取数游戏(dfs)
    https://www.luogu.com.cn/problem/P1123题目大意:给定一个n*m的矩阵,问我们从里面怎样取能取到最大的总和?条件是选了一个数,下次它的八个方向上的数字就不能选了输入#1......