2021“MINIEYE杯”中国大学生算法设计超级联赛(2)

  • 1008 I love exam (类背包DP)
  • 1010 I love permutation (数学构造,剩余系)

1008 I love exam (类背包DP)

描述
有t天时间复习,n种课程,m个复习资料,每个资料i可以花费yi天让一种课程
增加xi分,60分及格,满分100分,刚开始每门课程都只能考0分,最多可以允许你有p个课程不及格,求在满足要求的情况下所有课程能获得的最大总分。

题目链接


分析

代码

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pli pair<ll,int>
#define Min(a,b,c)  min(a,min(b,c))
#define Max(a,b,c)  max(a,max(b,c))typedef long long ll;
typedef unsigned long long ull;const double pi = 3.141592653589793;
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;const int N = 60, M = 15010, X = 20, Y = 20, T = 510, P = 5;int n, m, t, p;
int f[N][120], mx[N][T], dp[T][P];
map<string, int> mp;
vector<pii> vec[N];int main()
{int tt;scanf("%d", &tt);while (tt--){scanf("%d", &n);char s[20];for (int i = 1; i <= n; i++){scanf("%s", s);mp[s] = i;}scanf("%d", &m);for (int i = 1; i <= m; i++){int x, y;scanf("%s%d%d", s, &x, &y);vec[mp[s]].push_back({x, y});}scanf("%d%d", &t, &p);memset(f, 0x3f, sizeof(f));memset(mx, 0, sizeof(mx));memset(dp, -0x3f, sizeof(dp));for (int i = 1; i <= n; i++){f[i][0] = 0;for (int j = 0; j < vec[i].size(); j++)for (int k = 110; k >= vec[i][j].fi; k--)f[i][k] = min(f[i][k], f[i][k - vec[i][j].fi] + vec[i][j].se);for (int k = 110; k >= 100; k--)   f[i][k] = min(f[i][k], f[i][k + 1]);for (int k = 1; k <= 100; k++)if (f[i][k] <= 500)mx[i][f[i][k]] = max(mx[i][f[i][k]], k);}dp[0][0] = 0;for (int i = 1; i <= n; i++){for (int j = t; j >= 1; j--){for (int k = p; k > 0; k--) dp[j][k] = dp[j][k - 1];dp[j][0] = -INF;for (int k = 0; k <= p; k++)for (int l = 1; l <= f[i][100] && l <= j; l++)if(mx[i][l] >= 60) dp[j][k] = max(dp[j-l][k] + mx[i][l], dp[j][k]);else if(k) dp[j][k] = max(dp[j - l][k - 1] + mx[i][l], dp[j][k]);}dp[0][0] = -INF;}int ans = -1;for (int i = 1; i <= t; i++)for (int j = 0; j <= p; j++)ans = max(ans, dp[i][j]);printf("%d\n", ans);mp.clear();for (int i = 1; i <= n; i++) vec[i].clear();}return 0;
}

1010 I love permutation (数学构造,剩余系)

题目描述
有奇素数P和小于P的一个正整数a,构建一个长度为P-1的序列b , 其中bx = x*a % P ( 1 <= x <= p - 1) 。求序列b中逆序对个数,结果对2取模。

题目链接


分析

代码

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pli pair<ll,int>
#define Min(a,b,c)  min(a,min(b,c))
#define Max(a,b,c)  max(a,max(b,c))typedef long long ll;
typedef unsigned long long ull;const double pi = 3.141592653589793;
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;ll qmul(ll a, ll b, ll p)
{ll c = (long double)a / p * b;ll res = (ull)a * b - (ull)c * p;return (res + p) % p;
}ll qmi(ll a, ll b, ll p)
{ll ans = 1;for (; b; b >>= 1){if (b & 1) ans = qmul(ans, a, p);a = qmul(a, a, p);}return ans;
}int main()
{int t;scanf("%d", &t);while (t--){ll a, p;scanf("%lld%lld", &a, &p);ll sgn = qmi(a, (p - 1) / 2, p);if (sgn == 1) puts("0");else puts("1");}return 0;
}

2021“MINIEYE杯”中国大学生算法设计超级联赛(2)相关推荐

  1. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(3)签到题3题

    2021"MINIEYE杯"中国大学生算法设计超级联赛(3) Start Time : 2021-07-27 12:00:00 End Time : 2021-07-27 17:0 ...

  2. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(1)签到题15869

    2021"MINIEYE杯"中国大学生算法设计超级联赛(1) Start Time : 2021-07-20 12:10:00 End Time : 2021-07-20 17:1 ...

  3. 2021“MINIEYE杯”中国大学生算法设计超级联赛

    2021"MINIEYE杯"中国大学生算法设计超级联赛 1006 Given a sequence of integers of length n, find the shorte ...

  4. 7068 Dota2 Pro Circuit 杭电多校(2021“MINIEYE杯”中国大学生算法设计超级联赛9) [贪心+双指针]

    题目 Dota2 Pro Circuit *Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Oth ...

  5. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(5)签到题4题

    Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 Miserable Faith 33.33%(19/57) 1002 String Mod 2 ...

  6. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(8)

    1006 GCD Game (博弈论,nim游戏,质因子个数) 题意:有n个数a1,a2....an两个人玩游戏,Alice先动,Bob后动每次可以将一个数变为他的因子,直到不能动就输了. 题解:将问 ...

  7. 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)个人解题报告

    文章目录 HDU6950 Mod, Or and Everything HDU6954 Minimum spanning tree HDU6958 KD-Graph HDU6957 Maximal s ...

  8. 2021“MINIEYE杯”中国大学生算法设计超级联赛(8)(1002,1004,1006,1009)

    前言 依旧是白嫖账号,只打了一些题/kk 正题 1002 Buying Snacks 题目大意 nnn个物品,每个可以买一次也可以不买,如果买需要选择1/21/21/2块钱的,然后也可以相邻两个一起买 ...

  9. 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解

    前言 找大佬嫖到个号来划水打比赛了,有的题没写或者不是我写的就不放了. 目前只有:1004,1005,1007,1008,1011 正题 题目链接:https://acm.hdu.edu.cn/con ...

最新文章

  1. 修改tomcat7默认首页,将tomcat7默认目录指向自己的项目目录
  2. 卸载 流程_「工具」Windows 卸载软件,这一个就够了
  3. spring中注解无法修饰静态变量
  4. JS面向对象--你真的理解闭包了吗?
  5. 计算机领域中,增量是什么意思?
  6. Qt Creator 使用技巧
  7. linux消息队列消息清空函数,ipcrm命令_Linux ipcrm 命令用法详解:删除消息队列、信号集、或者共享内存标识...
  8. 揭晓AI算力池化的五大场景
  9. 「leetcode」669. 修剪二叉搜索树:【递归】【迭代】详解
  10. 捡到iphone6怎么解锁_赛博朋克2077前期手枪用哪个好?2077节制结局及银杯节制解锁条件...
  11. C++11线程的生命周期
  12. JPA如何查询部分字段
  13. 设计模式总览及工厂模式详解
  14. 字段缩写ti表示什么_EBSCOhost数据库中,检索字段代码为TI、SO、AU分别表示
  15. HTML5会砸掉iOS和Android的饭碗么?
  16. Vue小写金额转大写金额以及watch(监听)的使用
  17. 如何升级展锐RM500U模组的5GCPE固件
  18. 流程审批类系统数据库结构怎么定义
  19. Shell替换数组元素之间的间隔符号
  20. 活在当下——一条狗的使命

热门文章

  1. VC++, OO ME
  2. redis实现积分排行榜
  3. mysql创建学生情况表(xs)结构,MySql章节复习资料
  4. Linux内核参数调优以应对SYN攻击
  5. 一次购买火车票的思考
  6. Linux_进程替换(execl、execlp、execv、execle)
  7. 学习随笔1——前端路由和后端路由
  8. 6.0、软件测试——判定表法
  9. linux centos fedora 扩展硬盘分区操作命令 fdisk df lvm pvcreate vgcreate lvcreate
  10. python 退出当前程序