首页 > 其他分享 >聪明的大马猴

聪明的大马猴

时间:2024-02-04 15:37:34浏览次数:16  
标签:cnt idx int memset din ++ 聪明 大马

#include <bits/stdc++.h>
#define CLOSE ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl "\n"
typedef long long LL;
const int N = 30 * 6 + 5, M = N * N, mod = 1e9 + 7;
using namespace std;
int h[N], e[M], ne[M], idx, din[N], dp[N];
int n, m, cnt;
void add(int x, int y){
    e[idx] = y, ne[idx] = h[x], h[x] = idx ++;
}
struct node{
    int x, y, z;
}a[N];
int get(int x, int y, int z){
    a[++ cnt] = {x, y, z};
    a[++ cnt] = {y, x, z};
    a[++ cnt] = {x, z, y};
    a[++ cnt] = {z, x, y};
    a[++ cnt] = {y, z, x};
    a[++ cnt] = {z, y, x};
}
void topSort(){
    queue<int> q;
    for(int i = 1; i <= cnt; i ++){
        if(din[i] == 0){
            q.push(i);
            dp[i] = a[i].z;
        }
    }
    while(!q.empty()){
        int t = q.front();
        q.pop();
        for(int i = h[t]; i != -1; i = ne[i]){
            int j = e[i];
            din[j] --;
            dp[j] = max(dp[j], dp[t] + a[j].z);
            if(!din[j]){
                q.push(j);
            }
        }
    }
}
int main()
{
    while(cin >> n && n){
        memset(h, -1, sizeof h);
        memset(din, 0, sizeof din);
        memset(dp, 0, sizeof dp);
        idx = 0, cnt = 0;
        for(int i = 1; i <= n; i ++){
            int x, y, z;
            cin >> x >> y >> z;
            get(x, y, z);
        }
        for(int i = 1; i <= cnt; i ++){
            for(int j = 1; j <= cnt; j ++){
                if(a[i].x > a[j].x && a[i].y > a[j].y){
                    add(i, j);
                    din[j] ++;
                }
            }
        }
        topSort();
        int ans = 0;
        for(int i = 1; i <= cnt; i ++){
            ans = max(ans, dp[i]);
        }
        cout << ans << endl;
    }
    return 0;
}

标签:cnt,idx,int,memset,din,++,聪明,大马
From: https://www.cnblogs.com/acwhr/p/18006318

相关文章

  • [NOIP2011 提高组] 聪明的质监员
    原题链接首先要读懂题目啊:[Wj>=W]其实是一种bool表达,即大于等于时取1,小于时取0,然后再进行求和。根据要求出最小值大概可以猜测要运用二分,那么我们来判断单调性,首先W在所有矿石的最大最小值之间取值,W越小Y越大,W越大Y越小(观察和推理都很容易得到),那么Y是符合单调性的,即可以运用......
  • 通达信聪明成交量副图指标公式源码
    变量0:=5;变量1:=10;变量2:=60;DRAWBAND(MA(VOL,变量0),RGB(188,88,98),MA(VOL,变量1),RGB(0,188,0));DRAWBAND(MA(VOL,变量0),RGB(160,0,0),MA(VOL,变量2),RGB(83,123,68));变量5:=IF(PERIOD=5,240,IF(PERIOD=4,60,IF(PERIOD=3,30,IF(PERIOD=2,15,IF(PERIOD=1,5,......
  • 聪明购物秘籍:如何规避Shopee账号关联封号风险
    在Shopee平台上,规定一个买家只能拥有一个买家号,同时在一台电脑或者一个手机上登录多个买家号可能导致关联封号的风险。为了规避这一风险,许多购物达人正在寻找方法来防止账号关联。下面是一些使用大量Shopee买家号的技巧,帮助您巧妙应对这一挑战。1、防指纹技术的应用要使用大量Shope......
  • 稻盛和夫:真正的聪明人,善于把事物简单化
    稻盛先生说:   我们往往有一种倾向,就是将事物考虑得过于复杂。但是,事物的本质其实极为单纯。乍看很复杂的事物,不过是若干简单事物的组合。人类的遗传基因,由多达30亿个盐基排列构成,但是表达基因的密码种类仅有4个。   真理之布由一根纱线织成。把事情看得越单纯,就越接近真相,......
  • 聪明办法学python-12.4——12.8笔记打卡
     python中Debug的方法  必要性:在于程序可能出现不符合预期结果的情况 困难:在于bug的出触发原因多种多样,只能看到最终结果 调试代码的基本思路:让bug在设计时更容易暴露出来,包括利用print和断言来解决简单问题,利用IDE进行调试 常见的错误:函数未定义会报错,需要检查函数......
  • debug-聪明办法学Python
    如何Debug调试理论开始调试之前通过不断地调试,比如在循环中打印某个元素检查不得不承认机器永远只认编程语言不过你必须要时刻关注你的变量名称是否发生变更,这在大改前必须要注意的调试已知程序有bug,如何找到?调试困难的根本原因因为bug的触发经历了漫长的过程需求->设......
  • 聪明办法学Python 选学02
    聪明办法学Python学习笔记调试Debug1.如何进行Python程序调试,包括调试理论和常用模块与库的使用调试的必要性在于程序可能出现不符合预期结果的情况调试的困难在于bug的触发原因多种多样,只能看到最终结果2.调试代码的基本思路和方法,包括利用print和断言来解决简单......
  • 聪明办法学python最后一集
    聪明办法学python最后一集关于程序员如何进行debug首先编程哲学机器永远是对的可以使用print进行一部分的实验(这也算是我经常使用的方法)断点调试就是从上向下执行时进行的判断bug位置断点这个地方,主要分为两步:「找断点」和「打断点」。找断点,就是你想调试的代码块的......
  • 聪明办法学python第5次笔记打卡
    Debugging关于debug的方法1.使用print语句打印变量的值2.使用assert语句判断程序的错误3.使用pdb模块,(Python的调试器)可以在程序中设置断点,单步调试4.使用IDE的内置调试器5.向人工智能求助常见错误1.缩进错误切忌tab和空格混用2.语法错误3.命令错误使用了未定义的函......
  • 聪明办法学python(5)
    聪明办法学python(5)debug调试方法print调试:将程序分段后添加print,锁定问题发生地assert调试:表达式是否成立ide调试:查看报错CV工程师:向人工智能求助常见报错缩进错误(IndentationError)切忌tab和空格混用语法错误(GrammarError)命令错误(CommandError)使用了未定义的函数......