Kuma Rider久违的第二场训练,这场很水,又在vj的榜单上看到第一场的大哥了,2小时ak,大哥牛啤!

A.水

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;
const double eps = 1e-5;int T;
char s[1000005];
int main(void)
{scanf("%d", &T);getchar();while (T--){gets(s);int len = strlen(s);int p;char luo[12];
for(int i=1;i<=2;i++)luo[i]=0;bool fu = false;int num1 = 0;for (p = 0; p < len; p++){//printf("%d  %c\n", p, s[p]);if (s[p] == '-')fu = true;else if (s[p] >= '0'&&s[p] <= '9'){num1 *= 10;num1 += s[p] - '0';}else if (s[p] == ' ')continue;else{int tot = 1;while (s[p] != ' '){luo[tot++] = s[p]; p++;}break;}//printf("%d  %c\n", p, s[p]);
        }if (fu)num1 = -num1;int num2 = 0;fu = false;for (p = p + 1; p < len; p++){if (s[p] == '-')fu = true;else if (s[p] >= '0'&&s[p] <= '9'){num2 *= 10;num2 += s[p] - '0';}}if (fu)num2 = -num2;if (luo[1] == '<'){if (luo[2] == '='){if (num1 <= num2)printf("true\n");else printf("false\n");}else{if (num1 < num2)printf("true\n");else printf("false\n");}}else if (luo[1] == '>'){if (luo[2] == '='){if (num1 >= num2)printf("true\n");else printf("false\n");}else{if (num1 > num2)printf("true\n");else printf("false\n");}}else if (luo[1] == '!'){if (num1 != num2)printf("true\n");else printf("false\n");}else{if (num1 == num2)printf("true\n");else printf("false\n");}}}

View Code

B.水

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;
const double eps = 1e-5;int main(void) {int t;scanf("%d", &t);while (t--) {int a;int sum = 0;int fla = 0;for (int i = 0; i < 3; i++) {scanf("%d", &a);if (a <= 0) fla = 1;sum += a;}if (fla || sum != 180) printf("NO\n");else printf("YES\n");}return 0;
}

View Code

C.背包

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;
const double eps = 1e-5;
const int inf = 0x3f3f3f3f;int a[105];
int dp[33768];
int sum;
int main(void) {int t;scanf("%d", &t);while (t--) {int K, m, n;sum = 0;scanf("%d%d%d", &n, &m, &K);for (int i =1; i <= K; i++) {scanf("%d", &a[i]);sum += a[i];}int sh = n - sum;if (m <= sh)printf("0\n");else{int need = m - sh;memset(dp, inf, sizeof(dp));dp[0] = 0;for (int i = 1; i <= K; i++){for (int j = sum; j >= a[i]; j--){dp[j] = min(dp[j - a[i]] + 1, dp[j]);}}int ans = inf;for (int i = need; i <= sum; i++){ans = min(ans, dp[i]);}printf("%d\n", ans);}}
}

View Code

D.判断数独对不对(队友没有用函数,暴力得就很真实)

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;
const double eps = 1e-5;
const int inf = 0x3f3f3f3f;
//
//int a[105];
//int dp[33768];
//int sum;
//int main(void) {
//    int t;
//    scanf("%d", &t);
//    while (t--)
//    {
//        int K, m, n;
//        sum = 0;
//        scanf("%d%d%d", &n, &m, &K);
//        for (int i =1; i <= K; i++)
//        {
//            scanf("%d", &a[i]);
//            sum += a[i];
//        }
//        int sh = n - sum;
//        if (m <= sh)printf("0\n");
//        else
//        {
//            int need = m - sh;
//            memset(dp, inf, sizeof(dp));
//            dp[0] = 0;
//            for (int i = 1; i <= K; i++)
//            {
//                for (int j = need; j >= 0; j--)
//                {
//                    dp[j] = min(dp[j - a[i]] + 1, dp[j]);
//                }
//            }
//            printf("%d\n", dp[need]);
//
//        }
//
//    }
//}
//

char ch[100][100];
int vis[10];
int main(void) {int t;scanf("%d", &t);while (t--) {getchar();int fla = 0;for (int i = 1; i <= 9; i++) {scanf("%s", ch[i]+1);}for (int i = 1; i <= 9; i++) {memset(vis, 0, sizeof(vis));int sum = 0;for (int j = 1; j <= 9; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}if (sum != 9) fla = 1;}for (int i = 1; i <= 9; i++) {memset(vis, 0, sizeof(vis));int sum = 0;for (int j = 1; j <= 9; j++) {if (!vis[ch[j][i] - '0']) {vis[ch[j][i] - '0'] = 1;sum++;}}if (sum != 9) fla = 1;}int sum = 0;memset(vis, 0, sizeof(vis));for (int i = 1; i <= 3; i++) {for (int j = 1; j <= 3; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 4; i <= 6; i++) {for (int j = 1; j <= 3; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 7; i <= 9; i++) {for (int j = 1; j <= 3; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 1; i <=3; i++) {for (int j = 4; j <= 6; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 1; i <= 3; i++) {for (int j = 7; j <= 9; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 4; i <= 6; i++) {for (int j = 4; j <= 6; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 4; i <= 6; i++) {for (int j = 7; j <= 9; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 7; i <= 9; i++) {for (int j = 7; j <= 9; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;sum = 0;memset(vis, 0, sizeof(vis));for (int i = 7; i <= 9; i++) {for (int j = 4; j <= 6; j++) {if (!vis[ch[i][j] - '0']) {vis[ch[i][j] - '0'] = 1;sum++;}}}if (sum != 9) fla = 1;if (fla) printf("Invalid\n");else {printf("Valid\n");}}
}

View Code

E.树状数组

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;const int maxn = 11000;
int c[maxn], a[maxn];
int n;
int lowbit(int x) {return x&(-x);
}
void update_onepos(int pos, int x) {while (pos <= n) {c[pos] += x;pos += lowbit(pos);}
}
int getsum_onepos(int pos) {int sum = 0;while (pos > 0) {sum += c[pos];pos -= lowbit(pos);}return sum;
}
int getsum_range(int x1, int x2) {return getsum_onepos(x2) - getsum_onepos(x1-1);
}
int ax[11000];
int main(void) {int t;scanf("%d", &t);while (t--) {int nn;n = -1;scanf("%d", &nn);memset(c, 0, sizeof(c));for (int i = 0; i < nn; i++) {scanf("%d", &ax[i]);n = max(ax[i], n);}n += 32;for (int i = 0; i < nn; i++) {update_onepos(ax[i], 1);}int sum = 0;for (int i = 0; i < nn; i++) {sum += getsum_range(max(0, ax[i] - 31), ax[i])-1;sum += getsum_range(ax[i] + 1, ax[i] + 31);}printf("%d\n", sum / 2);}return 0;
}

View Code

F.并查集,最后统计根节点的问号数量

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;
typedef long long LL;
const int maxv = 50050;
const LL mod = 1e9 + 7;int T, n, m;
char s[maxv];
bool hav ;
struct Node
{int pos;int fa;char ch;
}tree[50005];int find(int nx)
{if (tree[nx].fa == nx)return nx;int ff = find(tree[nx].fa);tree[nx].ch = tree[ff].ch;return tree[nx].fa=ff;
}bool vis[50005];void init()
{hav = false;scanf("%d %d", &n, &m);scanf("%s", s + 1);for (int i = 1; i <= n; i++){if (s[i] == '?')hav = true;tree[i].fa = i;tree[i].ch = s[i];tree[i].pos = i;vis[i] = false;}
}int main(void)
{scanf("%d", &T);while (T--){init();bool can = true;for (int i = 1; i <= m; i++){int u, v;scanf("%d %d", &u, &v);int fx = find(u), fy = find(v);if (fx != fy){//printf("%d %d\n", fx, fy);if (tree[fx].ch!='?'&&tree[fy].ch!='?'){if (tree[fx].ch != tree[fy].ch)can = false;}else if (tree[fx].ch == '?'&&tree[fy].ch != '?'){tree[fx].fa = fy;tree[fx].ch = tree[fy].ch;}else if (tree[fx].ch != '?'&&tree[fy].ch == '?'){tree[fy].fa = fx;tree[fy].ch = tree[fx].ch;}else{tree[fx].fa = fy;tree[fx].ch = tree[fy].ch;}}}int l = 1, r = n;while (l <= r){int fx = find(l), fy = find(r);if (fx != fy){//printf("%d %d\n", fx, fy);if (tree[fx].ch != '?'&&tree[fy].ch != '?'){if (tree[fx].ch != tree[fy].ch)can = false;}else if (tree[fx].ch == '?'&&tree[fy].ch != '?'){tree[fx].fa = fy;tree[fx].ch = tree[fy].ch;}else if (tree[fx].ch != '?'&&tree[fy].ch == '?'){tree[fy].fa = fx;tree[fy].ch = tree[fx].ch;}else{tree[fx].fa = fy;tree[fx].ch = tree[fy].ch;}}l++, r--;}if (!can){printf("0\n"); continue;}for (int i = 1; i <= n; i++){int fx = find(i);s[i] = tree[fx].ch;}//printf("%s\n", s + 1);
LL ans = 1;bool tag = true;for (int i = 1; i <= n; i++){int fx = find(i);if (!vis[fx]){if (tree[fx].ch == '?'){ans *= 26;ans %= mod;}vis[fx] = true;}}if (tag){if (hav&&ans == 0)printf("1\n");else if(!hav)printf("0\n");else printf("%lld\n", ans);}else printf("0\n");}return 0;
}

View Code

G.状压dp

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<functional>
#include<vector>
using namespace std;
const int maxv = 110;int T, n, m;
string s;
map<string, int>mp;
int in[maxv], w[maxv];
int dp[1 << 19];int main()
{cin >> T;while (T--){cin >> n >> m;memset(dp, -1, sizeof(dp));getchar();for (int i = 1; i <= n; i++){in[i] = 0;w[i] = 0;}mp.clear();for (int i = 0; i < n; i++){getline(cin, s);int pos = -1;for (int j = 0; j < s.size(); j++){if (s[j] <= '9'&&s[j] >= '0'){pos = j;break;}}string tmp = s.substr(0, pos - 1);int ww = 0;string shuzi = s.substr(pos, s.size() - pos);for (int j = 0; j < shuzi.size(); j++){ww = ww * 10 + shuzi[j] - '0';}mp[tmp] = i;w[i] = ww;//cout << tmp << " " << ww << endl;
        }for (int i = 1; i <= m; i++){getline(cin, s);int pos1 = -1;for (int i = 0; i < s.size(); i++){if (s[i] == '-'){pos1 = i;break;}}string t1 = s.substr(0, pos1 - 1);string t2 = s.substr(pos1 + 4, s.size() - pos1 - 4);int id1 = mp[t1];int id2 = mp[t2];in[id2] |= (1 << id1);}dp[0] = 0;for (int j = 0; j < (1 << n) - 1; j++){if (dp[j] < 0){continue;}int num = 0;for (int i = 0; i < n; i++){num += (j >> i & 1);}for (int i = 0; i < n; i++){int now = j | (1 << i);if (j != now && (in[i] & j) == in[i]){dp[now] = max(dp[now], dp[j] + (num + 1)*w[i]);}}}cout << dp[(1 << n) - 1] << endl;}return 0;
}/*
1
3 2
Implementation 3
Dynamic Programming 10
Greedy 7
Greedy --> Dynamic Programming
Implementation --> Dynamic Programming
*/

View Code

H.模板题,待施工

转载于:https://www.cnblogs.com/fishdog/p/10472527.html

gym100676 [小熊骑士限定]2015 ACM Arabella Collegiate Programming Contest相关推荐

  1. 2015 ACM Arabella Collegiate Programming Contest(F题)

    F. Palindrome [ Color: Pink ] A string is palindrome if it can be read the same way in either direct ...

  2. Codeforces Gym 2015 ACM Arabella Collegiate Programming Contest

    比赛链接: http://codeforces.com/gym/100676 题目链接: http://codeforces.com/gym/100676/attachments/download/3 ...

  3. 2015 ACM Arabella Collegiate Programming Contest

    题目链接:https://vjudge.net/contest/154238#overview. ABCDE都是水题. F题,一开始分类讨论,结果似乎写挫了,WA了一发.果断换并查集上,A了. G题, ...

  4. Codeforces Gym 2015 ACM Arabella Collegiate Programming Contest(二月十日训练赛)

    A(By talker): 题意分析:以a(int) op b(int)形式给出两个整数和操作符, 求两个整数是否存在操作符所给定的关系 ,有则输出true,无则输出false:思路:由于无时间复杂度 ...

  5. 2017 ACM Arabella Collegiate Programming Contest(solved 11/13)

    省选考前单挑做点ACM练练细节还是很不错的嘛- 福利:http://codeforces.com/gym/101350 先来放上惨不忍睹的virtual participate成绩(中间跑去食堂吃饭于 ...

  6. 2017 ACM Arabella Collegiate Programming Contest div2的题,部分题目写个题解

    F. Monkeying Around   维护点在多少个线段上 http://codeforces.com/gym/101350/problem/F 题意:有m个笑话,每个笑话的区间是[L, R], ...

  7. 2015 ACM Syrian Collegiate Programming Contest

    A. My Friend of Misery 计算出答案的上下界即可. 时间复杂度$O(n)$. #include<bits/stdc++.h> using namespace std; ...

  8. GYM 2015 ACM Syrian Collegiate Programming Contest

    题目链接:http://codeforces.com/gym/101086 A My Friend of Misery B Brother Louie C Everything D Secure bu ...

  9. 2017 ACM Arabella Collegiate Programming Contest G. Snake Rana GYM101350G

    先算一下总的子矩阵个数 总共最多只有20个点 状压一下然后枚举 容斥一下 把求出来的答案减去包含1个点的子矩阵再加上包含2个点的减去3个点的-- #include <iostream> # ...

最新文章

  1. Effective Java实作toString() - 就是爱Java
  2. 4、自定义部分国家语言代号对照表
  3. sqlserver 多排序的问题
  4. 课程及其编码字典python_【课程15】Python字典
  5. 2021-10-12Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
  6. LinuxShell脚本之利用rsync+ssh实现Linux文件系统远程备份
  7. 怎么在前台取的ViewBag中的值
  8. 笔记本电脑键盘切换_真想本小新13pro搭档,笔记本电脑周边好物清单推荐
  9. tomcat线程循环异常终止_资深架构师带你从JVM层面了解线程的启动和停止
  10. delete响应服务器,rest-RESTful-DELETE响应主体应包含什么
  11. LinuxCentos7 防火墙开放端口,查看状态,查看开放端口
  12. 配置 iTerm2 记录
  13. 如何去掉 WinCE 4.2 的桌面墙纸
  14. Python3.5 学习八 附加知识点 paramiko和rsa非对称秘钥的适用
  15. 通过PMP认证考试的心得分享
  16. 机器学习二:K均值聚类算法(k-means clustering algorithm)
  17. VMware 克隆失败,提示指定的虚拟磁盘需要修复【已解决】
  18. Markdown|书单
  19. python深度学习tensorflow和fme结合,实现档案扫描件数据自动分类
  20. 如何将.hwbk批量修改成.jpg 【实测成功】

热门文章

  1. MySQL基础语法大全(尚硅谷)
  2. 有哪些日记app可以用来记录生活?
  3. python单片机自动浇花_【应用教程】Micro:bit自动浇花系统
  4. 正交设计(收集大牛的文章)
  5. PPT文档播放没声音了怎么办?
  6. 一些PPT演讲前暖场的音乐
  7. 没有鼠标就无法对计算机进行操作,电脑鼠标不灵敏是什么原因?怎么解决?
  8. ❤实用❤Word批量替换所有内容
  9. HTTP Content-type 对照表
  10. 用python实现颜值打分,还能测测自己的颜值