首页 > 其他分享 >AtCoder Beginner Contest 332 (D)

AtCoder Beginner Contest 332 (D)

时间:2023-12-11 15:24:53浏览次数:32  
标签:std AtCoder Beginner ++ ll 332 int vector ans

题目链接

思路:

这就是一个二维的全排列问题

代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define LNF 0x3f3f3f3f3f3f3f3f
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
#define pll pair<int,int>
void solve(void) {
    ll n, m;
    cin >> n >> m;
    std::vector<std::vector<ll>> x(n, std::vector<ll>(m));
    
    std::vector<std::vector<ll>> y(n, std::vector<ll>(m));
    
    for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)cin >> x[i][j];
    for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)cin >> y[i][j];

    ll ans = LNF;
    std::vector<int> a(n);
    for (int i = 0; i < n; i++) {
        a[i] = i;
    }
    do {
        std::vector<int> b(m);
        for (int i = 0; i < m; i++)b[i] = i;
        do {
            bool ok = 1;
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    if (y[i][j] != x[a[i]][b[j]])ok = 0;
                }
            }
            if (ok) {
                ll sum = 0;
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < i; j++)if (a[j] > a[i])sum++;
                }
                for (int i = 0; i < m; i++) {
                    for (int j = 0; j < i; j++)if (b[j] > b[i])sum++;
                }
                ans = min(ans, sum);
            }
        } while (next_permutation(b.begin(), b.end()));
    } while (next_permutation(a.begin(), a.end()));
    if (ans == LNF)ans = -1;
    cout << ans;
}
int main() {
    IOS
    int t = 1;
    // cin>>t;
    while (t--)
        solve();
    return 0;
}

标签:std,AtCoder,Beginner,++,ll,332,int,vector,ans
From: https://www.cnblogs.com/du463/p/17894490.html

相关文章

  • ATCoder 332 A-D
    A: OnlineShopping(读懂题即可)packageAtCoder.begin332;importjava.util.Scanner;publicclassA{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt(),s=sc.nextInt(),k=sc.nextInt(......
  • 【题解】AtCoder abc322_f Random Update Query
    传送门:https://atcoder.jp/contests/abc332/tasks/abc332_f容易发现,对于一个位置$i$,$A_i$的最终值是由对$i$的最后一次赋值操作决定的;因此,将所有操作按时间顺序倒过来考虑,则由第$j$次操作决定$A_i$最终值的概率为"在第$(j+1)$~$m$次操作中没有修改过$i$的概率"与"第......
  • AtCoder Regular Contest 169 (ARC169)
    怎么有人ARCA卡了半天的?A.PleaseSign考虑\(i\)位置上的数,下次它被加到\(P_i\),再下次被加到\(P_{P_i}\),因为这个序列有性质\(P_i<i\),这样加若干轮一定会到达\(1\)。令所有的\(i\)向\(P_i\)连边,则这是一棵以\(1\)为根的树。设\(f_i=\sum\limits_{j=1}^n[dep_......
  • AtCoder_abc332
    AtCoder_abc332比赛链接A-OnlineShoppingA题链接题目大意这里有\(N\)件商品,第\(i\)件商品价格为\(P_i\),你要购买\(Q_i\)件,除了购买的费用外,他还要支付运费。如果购买的总价大于\(S\),运费为0元,否则他需要支付\(K\)元的运费。他一共要花多少钱呢?解题思路无代码//Prob......
  • 【题解】AtCoder abc332_g Not Too Many Balls
    传送门:https://atcoder.jp/contests/abc332/tasks/abc332_g看完题,第一眼反应为最大流。建模方式为:以颜色为左部点,盒子为右部点,源点$S$向颜色$i$连一条容量为$A_i$的边,盒子$j$向汇点$T$连一条容量为$B_j$的边,颜色$i$向盒子$j$连一条容量为$ij$的边;在这张图......
  • AtCoder Beginner Contest 332
    AtCoderBeginnerContest332A-OnlineShoppingintmain(){IOS;for(_=1;_;--_){cin>>n>>m>>k;llans=0;rep(i,1,n){lla,b;cin>>a>>b;ans+=a......
  • Atcoder abc301 复盘(更新中)
    跳转比赛链接A-OverallWinner简述:高桥和青木下了\(N\)盘棋。给你一个长度为\(N\)的字符串\(S\),表示这两盘棋的结果。如果\(S\)的\(i\)个字符是t,那么高桥赢得了\(i\)局;如果\(S\)的\(i\)个字符是A,那么青木赢得了这局。高桥和青木之间的胜负关系是谁赢的局......
  • AtCoder Beginner Contest 331 G - Collect Them All【概率期望+容斥+多项式】
    题目链接:ABC331_G写在前面将来如果回顾这道题,建议自己看完题意一定先重新推一遍。如果还是不够熟练,多去做一些同类型的题目吧。题意:盒子里有\(N\)张卡片,每张卡片上写着一个数字,数字的范围是\(1,...,M\),写着数字\(i\)的卡片有\(C_i\)张\((C_i>0)\)。有放回地抽取卡片,每......
  • Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
    DaiwaSecuritiesCo.Ltd.ProgrammingContest2023(AtCoderBeginnerContest331)A-Tomorrow解题思路:模拟。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;typedefpair<int,int>pii;#definefifirst#definesesecondcons......
  • AtCoder Beginner Contest 331
    A-Tomorrow(abc331A)题目大意给定一年的月数和一月的天数,以及当天日期,问次日的日期。解题思路一个简单的进制加法运算,超出进制数则向前加一。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_st......