USACO(含training section)水题合集[5/未完待续]

(1) USACO2.1 Ordered Fractions

  枚举 排序即可,注意1/1

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=165,L=1e5;
struct fr{
    int a,b;
    fr(int q=0,int w=1):a(q),b(w){}
}f[L];
int n,cnt=0;
inline bool cmp(fr &x,fr &y){
    return (double)x.a/x.b<(double)y.a/y.b;
}
inline int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
}
int main(){
    cin>>n;
    for(int i=0;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(gcd(i,j)==1)
                f[++cnt]=fr(i,j);
    sort(f+1,f+1+cnt,cmp);
    for(int i=1;i<=cnt;i++)
        printf("%d/%d\n",f[i].a,f[i].b);
    cout<<"1/1";
}

(2) USACO1.5Number Triangles

  基础DP

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int r,d[1001][1001],a[1001][1001];
int dp(int i,int j){
    if(d[i][j]>=0) return d[i][j];
    return d[i][j]=a[i][j]+(i==r?0:max(dp(i+1,j),dp(i+1,j+1)));
}
int main(){
    scanf("%d",&r);//cin>>r;
    memset(d,-1,sizeof(d));
    for(int i=1;i<=r;i++)
        for(int j=1;j<=i;j++) scanf("%d",&a[i][j]);//cin>>a[i][j];
    int ans=-10000000;
    cout<<dp (1,1);
}

(3) USACO1.2 Transformations

  模拟

#include <iostream>
using namespace std;
const int N=12;
int n;
char a[N][N],r[N][N],t[N][N];
bool ro90(char a[N][N]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(a[i][j]!=r[j][n-i+1]) return false;
    return true;
}
bool ro180(char a[N][N]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(a[i][j]!=r[n-i+1][n-j+1]) return false;
    return true;
}
bool ro270(char a[N][N]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(a[i][j]!=r[n-j+1][i]) return false;
    return true;
}
void img(char a[N][N],char t[N][N]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            t[i][n-j+1]=a[i][j];
}
bool check(char r[N][N],char t[N][N]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(r[i][j]!=t[i][j]) return false;
    return true;
}

int solve(){
    if(ro90(a)) return 1;
    if(ro180(a)) return 2;
    if(ro270(a)) return 3;
    img(a,t);
    if(check(r,t)) return 4;
    if(ro90(t)) return 5;
    if(ro180(t)) return 5;
    if(ro270(t)) return 5;
    if(check(r,t)) return 6;
    return 7;
}
int main(int argc, const char * argv[]) {
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)cin>>a[i][j];

    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)cin>>r[i][j];

    cout<<solve();

}

(4) USACO1.4Mother‘s Milk

  dfs,六种倒水方法,fill简化

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=25;
int vis[N][N][N];
int l[4],ta,tb,tc;
int ans[N];
inline void fill(int &a,int &b,int num){
    int tmp=min(l[num]-a,b);
    a+=tmp;
    b-=tmp;
}

void dfs(int a,int b,int c){//printf("%d %d %d\n",a,b,c);
    if(vis[a][b][c]) return;
    if(a==0) ans[c]=true;
    vis[a][b][c]=1;

    ta=a;tb=b;tc=c;//1
    fill(ta,tb,1);dfs(ta,tb,tc);

    ta=a;tb=b;tc=c;//2
    fill(ta,tc,1);dfs(ta,tb,tc);

    ta=a;tb=b;tc=c;//3
    fill(tb,ta,2);dfs(ta,tb,tc);

    ta=a;tb=b;tc=c;//4
    fill(tb,tc,2);dfs(ta,tb,tc);

    ta=a;tb=b;tc=c;//5
    fill(tc,ta,3);dfs(ta,tb,tc);

    ta=a;tb=b;tc=c;//6
    fill(tc,tb,3);dfs(ta,tb,tc);
}
int main(){
    cin>>l[1]>>l[2]>>l[3];
    dfs(0,0,l[3]);
    for(int i=0;i<=l[3];i++) if(ans[i]) cout<<i<<" ";

}

(5)USACO迷宫

  裸DFS

#include<iostream>
using namespace std;
int n,m,t,sx,sy,fx,fy,ans=0;int x,y;
int e[8][8],vis[8][8],dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
void dfs(int x,int y){
    if(x<1||y<1||x>n||y>m) return;
    if(e[x][y]) return;
    if(x==fx&&y==fy) {ans++;return;}
    if(vis[x][y]) return;
    vis[x][y]=1;
    for(int i=0;i<4;i++) dfs(x+dx[i],y+dy[i]);
    vis[x][y]=0;
}
int main(){
    cin>>n>>m>>t>>sx>>sy>>fx>>fy;
    for(int i=0;i<t;i++) {cin>>x>>y;e[x][y]=1;}
    dfs(sx,sy);
    cout<<ans;
}
时间: 2024-10-09 11:59:22

USACO(含training section)水题合集[5/未完待续]的相关文章

NOIP水题合集[1/未完待续]

题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k.游戏的要求是使你所得的k最大或者最小. 例如,对于下面这圈数字(n=4,m=2): 要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod

5.6水题合集

T1:杭州旅行 floyd 求最小环,相当于枚举环上编号最大的点进行转移 正确性: 一个环中的最大结点为k(编号最大),与他相连的两个点为i,j,这个环的最短长度为g[i][k]+g[k][j]+i到j的路径中,所有结点编号都小于k的最短路径长度根据floyd的原理,在最外层循环做了k-1次之后,dist[i][j]则代表了i到j的路径中,所有结点编号都小于k的最短路径综上所述,该算法一定能找到图中最小环 #include<iostream> #include<cstdio> #i

我的Java问题集(1)(重点、难点、疑点)未完待续...

学习Java这么久了,总算也了点笔记,一个一个字码的哟! 1.Java中的int等类型变量既然已经有默认值为0,为什么还会出现没有初始化,编译出错呢? 一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d 如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他

2016弱校联萌十一专场10.3 遗憾题合集

http://acm-icpc.aitea.net/index.php?2016%2FPractice%2F%E6%A8%A1%E6%93%AC%E5%9C%B0%E5%8C%BA%E4%BA%88%E9%81%B8%2F%E8%AC%9B%E8%A9%95 C.We don't wanna work! @siludose 你要的代码,做好了参考看 SB模拟,xjb模拟 #include <iostream> #include <algorithm> #include <st

软考错题合集之13-05-AM

1.常用的虚拟存储器由主存和辅存两级存储器组成. 虚拟存储器是为了给用户提供更大的随机存取空间而采用的一种存储技术.它将内存与外存结合使用,好像有一个容量极大的内存储器,工作速度接近于主存,每位成本又与辅存接近,在整机形成多层次存储系统.所以虚拟存储器有主存和辅存两级存储器组成. 2.DMA工作方式下,在主存与外设之间建立了直接的数据通路. 在DMA(Directional Movement Index,直接存储器访问)模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据

Codeforces Round #374 (div.2)遗憾题合集

C.Journey 读错题目了...不是无向图,结果建错图了(喵第4样例是变成无向就会有环的那种图) 并且这题因为要求路径点尽可能多 其实可以规约为限定路径长的拓扑排序,不一定要用最短路做 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include<algorithm>

软考错题合集之11-05-AM

1.指令系统中采用不同寻址方式的目的是扩大寻址空间并提高编程灵活性. 2.在计算机系统中采用总线结构,便于实现系统的积木化构造,同时可以减少信息传输线的数量. 3.在IE浏览器中,安全等级从可信站点.本地Intranet.Internet到受限站点默认情况下依次为低.中低.中.高逐步提高. 4.哈弗曼编码属于熵编码. 5.CIF=352*288像素. 6.关于过程改进,以下叙述中不正确的是(D) A.软件质量依赖于软件开发过程的质量,其中个人因素占主导作用 B.要使过程改进有效,需要制定过程改进

软考错题合集之13-11-AM

1.在程序执行过程中,Cache与主存的地址映像由硬件自动完成. Cache与主存的地址映像需要专门的硬件自动完成,使用硬件来处理具有更高的转换速率. 2.指令寄存器的位数取决于指令字长. 指令寄存器IR是用来存放要执行的指令的,所以跟指令的长度有关. 3.若计算机存储数据采用的是双符号位{00表示正号,11表示负号},两个符号相同的数相加时,如果运算结果的两个符号位经逻辑异或运算得1,则可断定这两个数相加的结果产生了溢出. 计算机运算溢出检测机制,采用双符号位,00表示正号,11表示负号.如果

软考错题合集之12-05-AM

1.某企业由于外部市场环境和管理需求的变化对现有软件系统提出新的需求,则对该软件系统进行的维护属于适应性维护. 2.序列图是UML的一种行为类模型图,它展现了一组对象和由这组对象收发的消息,描述了以时间顺序组织的对象之间的交互活动.其中消息由名称进行标识,还描述出消息的发出者和接收者.消息定义了交互中生命线之间的特定交互,有同步消息.异步消息和返回消息3类.同步消息是指进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息.它使用实心三角箭头表示. 异步消息的调用者发出消息.后继续执行,