ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

USACO 2022 January Bronze 比赛题解

2022-01-29 15:02:22  阅读:190  来源: 互联网

标签:10 int 题解 USACO && January check cnty cntx


T1 Herdle(牧群)
T2 Non-Transitive Dice (非传递骰子)
众所周知,每一次打开题目,我们都要注意 数据范围

emmm……

$1\le T\le 10$

并且,我们要枚举的这个骰子是一个 四面骰子,而每一面上的数字 仅仅是 $1\sim 10$

考虑深搜。

每次从 $1\sim 10$ 里选一个数字,如此执行 $4$ 次,时间复杂度为 $O(10^4\times T)$,完全可以通过

再来分析一下 判定函数
举个栗子,
$A=\{4,5,6,7\}$
$B=\{2,4,5,10\}$

其中,有:
$A_1>B_1,A_2>B_1,A_3>B_1\dots$

合起来,
序列 $A$ 中的数字大于 $B$ 的有 $9$ 次
序列 $B$ 中的数字大于 $A$ 的则有 $5$ 次

因此,我们就说 $A$ 能战胜 $B$

由此,可得出以下程序:

 1 bool check(int x[],int y[]) //计算x能否赢y
 2 {
 3     int cntx=0,cnty=0;
 4     for(int i=1;i<5;i++)
 5     {
 6         for(int j=1;j<5;j++)
 7         {
 8             if(x[i]>y[j])
 9                 ++cntx;
10             else if(x[i]<y[j])
11                 ++cnty;
12         }
13     }
14     return cntx>cnty;
15 }
Check函数

至此,这题完全结束。


下面给出 完整代码

Code:

 1 #include<bits/stdc++.h>
 2 #define isdight(c) (c>='0'&&c<='9')
 3 using namespace std;
 4 int t,a[5],b[5],c[5],flag=0;
 5 inline int read() //快读
 6 {
 7     int x=0,f=1;
 8     char c=getchar();
 9     while(!isdight(c))
10         f=(c^'-'?1:-1),c=getchar();
11     while(isdight(c))
12         x=(x<<1)+(x<<3)+(c-'0'),c=getchar();
13     return x*f;
14 }
15 bool check(int x[],int y[]) //计算x能否赢y
16 {
17     int cntx=0,cnty=0;
18     for(int i=1;i<5;i++)
19     {
20         for(int j=1;j<5;j++)
21         {
22             if(x[i]>y[j])
23                 ++cntx;
24             else if(x[i]<y[j])
25                 ++cnty;
26         }
27     }
28     return cntx>cnty;
29 }
30 void dfs(int dep) //核心部分
31 {
32     if(dep>4)
33     {
34         if((check(a,b)&&check(b,c)&&check(c,a))||(check(b,a)&&check(a,c)&&check(c,b))) //满足非传递性
35             flag=1;
36         return;
37     }
38     if(flag)
39         return;
40     for(int i=1;i<11;i++) //递归
41     {
42         c[dep]=i;
43         dfs(dep+1);
44     }
45 }
46 int main()
47 {
48     t=read();
49     while(t--)
50     {
51         flag=0;
52         for(int i=1;i<5;i++)
53             a[i]=read();
54         for(int i=1;i<5;i++)
55             b[i]=read();
56         sort(a+1,a+5);
57         sort(b+1,b+5);
58         //排序,预处理
59         dfs(1);
60         if(flag)
61             puts("yes");
62         else
63             puts("no");
64     }
65     return 0;
66 }
T2 完整代码

T3 Drought(干旱)

标签:10,int,题解,USACO,&&,January,check,cnty,cntx
来源: https://www.cnblogs.com/CANTOR-SORT/p/15855099.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有