
USACO Training题单
USACO Training题单
辉小歌
九局下半转啊转,我把帽子反戴,还在期待逆转。
展开
-
1362. 健康的荷斯坦奶牛【难度: 一般 / 二进制枚举】
https://www.acwing.com/problem/content/1364/二进制枚举即可,取一个最小值。#include<bits/stdc++.h>using namespace std;const int N=30;int a[N],w[N][N],n,m;vector<int>ans;int main(void){ cin>>n; for(int i=0;i<n;i++) cin>>a[i]; .原创 2021-11-13 14:25:47 · 306 阅读 · 0 评论 -
1359. 城堡【难度: 一般 / 知识点: 并查集】
https://www.acwing.com/problem/content/description/1361/#include<bits/stdc++.h>using namespace std;const int N=55;int p[N*N],s[N*N],n,m,a[N][N];int get(int x,int y) {return x*m+y;}int find(int x){ if(x!=p[x]) p[x]=find(p[x]); return .原创 2021-11-12 15:34:41 · 263 阅读 · 0 评论 -
1352. 虫洞【难度: 中 / 枚举 判环】
https://www.acwing.com/problem/content/1354/枚举匹配方法判环#include<bits/stdc++.h>using namespace std;const int N=15;int n;int to1[N],to2[N];//to1是向右移动的单向边,to2是虫洞的双向边bool st[N],used[N][2],cur[N][2];//used[i][0] 表示双向边的虫洞//used[i][1] 表示水平的移动stru.原创 2021-11-11 15:20:10 · 315 阅读 · 0 评论 -
1354. 等差数列【一般 / 暴力枚举】
https://www.acwing.com/problem/content/1356/先预处理所有的集合内的元素。然后枚举首相,公差即可。记得剪枝。#include<bits/stdc++.h>using namespace std;const int N=250*250*2+10;bool st[N];int n,m;vector<pair<int,int>>ve;int main(void){ cin>>n>>m;.原创 2021-11-10 14:23:02 · 249 阅读 · 0 评论 -
1360. 有序分数【一般 / 枚举 思维】
https://www.acwing.com/problem/content/1362/#include<bits/stdc++.h>using namespace std;int n;vector<pair<int,int>>ve;int gcd(int a,int b){return b?gcd(b,a%b):a;}bool cmp(pair<int,int> a,pair<int,int> b){ return 1.0.原创 2021-11-09 15:37:37 · 232 阅读 · 0 评论 -
1355. 母亲的牛奶【一般 / DFS爆搜】
https://www.acwing.com/problem/content/1357/#include<bits/stdc++.h>using namespace std;int a,b,c;set<int>st;unordered_map<string,int>mp;void dfs(int s1,int s2,int s3){ if(s1==0) st.insert(s3); if(s1)//s1有奶,s1倒 { .原创 2021-11-09 15:10:03 · 246 阅读 · 0 评论 -
1357. 优质牛肋骨【一般 / 思维 爆搜】
https://www.acwing.com/problem/content/description/1359/通过分析可以得出,题目要求的就是某一个数所有的前缀都是质数。开头只能是:2 3 5 7后面的数只能是 1 3 7 9#include<bits/stdc++.h>using namespace std;int n; int a[10]={1,3,7,9};set<int>st;bool check(int x){ for(int i=2;i&.原创 2021-11-08 19:58:42 · 144 阅读 · 0 评论 -
1356. 回文质数【难度: 中 / 数学】
https://www.acwing.com/problem/content/description/1358/数据范围很大我们需要优化。首先要了解的知识点:9/3 的倍数:各位数字之和能被3整除2/5的倍数: 个位数字能被2/5整除4的倍数: 后两位能被4整除8的倍数: 后三位能被8整除11 的倍数: 奇数位的和 和 偶数位的和的差能被11整除我们这里就用到了11的倍数的性质。首先1e8一定是一个合数直接排除。我们看1000,0000 - 9999,9999 我们知道的是一个回文.原创 2021-11-08 15:55:41 · 232 阅读 · 0 评论 -
898. 数字三角形【简单 / DP】
https://www.acwing.com/problem/content/900/#include<bits/stdc++.h>using namespace std;const int N=510;int f[N][N],n;int main(void){ cin>>n; memset(f,-0x3f,sizeof f); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) .原创 2021-11-07 22:04:34 · 128 阅读 · 0 评论 -
1353. 滑雪场设计【难度: 一般 / 知识点: 枚举 贪心】
https://www.acwing.com/problem/content/1355/山的数据范围很小,直接暴力枚举即可。#include<bits/stdc++.h>using namespace std;const int N=1100;int n,a[N];int main(void){ cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int ans=1e9; for(int i.原创 2021-11-06 21:24:37 · 247 阅读 · 0 评论 -
1351. 密码锁【难度: 一般 / 知识点: 枚举 容斥原理】
https://www.acwing.com/problem/content/1353/暴力枚举:#include<bits/stdc++.h>using namespace std;int a,b,c,a1,b1,c1,n,cnt;bool f(int a,int b){ for(int i=0;i<=2;i++) { int temp1=a+i;//向前转动 if(temp1>n) temp1=temp1%n; .原创 2021-11-05 13:57:35 · 232 阅读 · 0 评论 -
1350. 密码运算【难度: 一般 / 知识点: 枚举】
https://www.acwing.com/problem/content/description/1352/#include<bits/stdc++.h>using namespace std;unordered_map<int,int>mp;int n,x,cnt;bool check(int x){ while(x) { if(!mp[x%10]) return false; x/=10; } r.原创 2021-11-04 22:55:24 · 172 阅读 · 0 评论 -
1349. 修理牛棚【难度: 中 / 思维 贪心】
https://www.acwing.com/problem/content/1351/然后用一个大根堆,从所有的间隔,依次从堆顶选一个。#include<bits/stdc++.h>using namespace std;const int N=1e3+10;int a[N],m,s,c;int main(void){ cin>>m>>s>>c; for(int i=0;i<c;i++) cin>>a[i.原创 2021-11-04 22:34:22 · 316 阅读 · 0 评论 -
1348. 搭配牛奶【难度: 简单 / 知识点: 贪心】
https://www.acwing.com/problem/content/1350/#include<bits/stdc++.h>using namespace std;int n,m,a,b;vector<pair<int,int>>ve;int main(void){ cin>>m>>n; for(int i=0;i<n;i++) cin>>a>>b,ve.push_back({a.原创 2021-11-03 22:29:24 · 125 阅读 · 0 评论 -
1347. 双重回文【难度: 简单 / 知识点: 回文串】
https://www.acwing.com/problem/content/description/1349/#include<bits/stdc++.h>using namespace std;int n,m,cnt;bool check(int x,int c){ string a,b; while(x) a+=to_string(x%c),x/=c; b=a; reverse(b.begin(),b.end()); return a==b;}.原创 2021-11-03 22:16:21 · 201 阅读 · 0 评论 -
1346. 回文平方【难度: 简单 / 知识点: 转换成b进制 回文判断】
https://www.acwing.com/problem/content/description/1348/#include<bits/stdc++.h>using namespace std;int n;char get(int x){ if(x<10) return '0'+x; else return 'A'+x-10;}void solve(int x){ string a,b,c; int temp=x; while(tem.原创 2021-11-03 21:59:43 · 167 阅读 · 0 评论 -
1345. 序号命名【难度: 简单 / 模拟 字符串】
https://www.acwing.com/problem/content/1347/#include<bits/stdc++.h>using namespace std;string s,ss,a;vector<string>ve;string hush[10]={"","","ABC","DEF","GHI","JKL","MNO","PRS","TUV","WXY"};int main(void){ cin>>s; while(ci.原创 2021-11-03 18:53:51 · 211 阅读 · 0 评论 -
1344. 转换【难度: 一般 / 知识点: 图形的旋转 镜像】
https://www.acwing.com/problem/content/1346/#include<bits/stdc++.h>using namespace std;const int N=20;string a[N],b[N],backup[N],c[N];int n;void init(){for(int i=0;i<n;i++) backup[i]=a[i];}bool rotate(int m)//旋转{ init(); for(int i.原创 2021-11-03 10:54:18 · 123 阅读 · 0 评论 -
1343. 挤牛奶【难度: 一般 / 模拟 区间合并】
https://www.acwing.com/problem/content/1345/#include<bits/stdc++.h>using namespace std;typedef pair<int,int> PII;vector<PII>a,ve;int n;int main(void){ cin>>n; for(int i=0;i<n;i++) { int l,r; cin>>.原创 2021-11-02 22:07:44 · 129 阅读 · 0 评论 -
1342. 断开的项链【难度: 一般 / 破环成链】
https://www.acwing.com/problem/content/description/1344/破环成链,对于是白色的我们直接加,对于其它颜色的我们加,然后加入哈希表。如果某个时刻,哈希表有俩值了,说明有两种不同的颜色了。我们就退出循环。#include<bits/stdc++.h>using namespace std;int n,ans;string s;int main(void){ cin>>n>>s; s=s+s.原创 2021-11-02 09:20:30 · 292 阅读 · 0 评论 -
1341. 十三号星期五【难度: 简单 / 知识点: 日期模拟】
https://www.acwing.com/problem/content/1343/#include<bits/stdc++.h>using namespace std;int a,b,c;int a1,b1,c1,n;int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int cnt[10]={0,0};bool check(int year){ if(year%400==0||(year%4==0&.原创 2021-11-01 14:18:29 · 298 阅读 · 0 评论 -
1340. 贪婪的送礼者【简单 / 模拟 哈希表】
https://www.acwing.com/problem/content/description/1342/#include<bits/stdc++.h>using namespace std;const int N=1e3+10;int n;string s[N];unordered_map<string,int>mp;int main(void){ cin>>n; for(int i=0;i<n;i++) cin>&g.原创 2021-10-31 23:16:38 · 175 阅读 · 0 评论 -
1339. 你的旅途由此开始【简单 / 模拟】
https://www.acwing.com/problem/content/1341/#include<bits/stdc++.h>using namespace std;const int mod=47;int get(string s){ int sum=1; for(int i=0;i<s.size();i++) sum=sum*(s[i]-'A'+1)%47; return sum;}int main(void){ string .原创 2021-10-31 22:59:54 · 164 阅读 · 0 评论