3 条题解

  • 2
    @ 2025-6-24 14:13:34

    这是最快的一个

    #include<iostream>
    #include<cstdio>
    #include<bitset>
    
    using namespace std;
    
    int n,g[102][2],cnt;
    bitset<1000006> f;
    
    int main(){
    	scanf("%d",&n);
    	for (int i=1;i<=n;i++){
    		scanf("%d%d",&g[i][0],&g[i][1]);
    		g[i][0]=g[i][0]*g[i][0];
    		g[i][1]=g[i][1]*g[i][1];
    	}
    	f[0]=1;
    	for (int i=1;i<=n;i++){
    		f=(f<<g[i][0])|(f<<g[i][1]);
    	}
    	printf("%d",f.count());
    	return 0;
    }
    
    • 0
      @ 2025-6-24 14:16:18

      没什么好讲的,这里放一个bitset的做法

      const ll N = 1e6+10;
      ll n, x, y;
      bitset <N> f(1);
      void work()
      {
        cin>>n;
        for (ll i=1; i<=n; i++) {
          cin>>x>>y;
          f = (f<<(x*x))|(f<<(y*y));
        }
        cout<<f.count();
      }
      
      • -1
        @ 2025-6-24 14:15:54

        思路比较好想,就是去判每个数能否得到

        f[i][j]f[i][j]为前ii个格子是否能得到jj

        f[0][0]=1f[0][0] = 1

        $f[i][j] = f[i-1][j-a[i][1]*a[i][1]) | f[i-1][j-a[i][2]*a[i][2])$

        然后发现这个东西可以用bitset 优化

        第一维可以空间优化掉

        然后就做完了

        #include <bits/stdc++.h>
        using namespace std;
        
        const int N = 101;
        
        int n;
        
        int a[N][3];
        
        bitset<N*N*N> f;
        
        void read() {
        	cin >> n;
        	for(int i = 1; i <= n; i++) {
        		cin >> a[i][1] >> a[i][2];
        		a[i][1] *= a[i][1];
        		a[i][2] *= a[i][2];
        	}
        }
        
        void compute() {
        	f[0] = 1;
        	for(int i = 1; i <= n; i++) f = ((f<<a[i][1]) | (f<<a[i][2]));
        	cout << f.count();
        }
        
        int main() {
        	ios::sync_with_stdio(0);
        	cin.tie(0), cout.tie(0);
        	read();
        	compute();
        	return 0;
        }
        
        
        • 1

        信息

        ID
        289
        时间
        1000ms
        内存
        256MiB
        难度
        6
        标签
        (无)
        递交数
        51
        已通过
        17
        上传者