山东理工大学第十六届ACM程序设计竞赛(同步赛)
B、Q的网课
1、创建一个结构体,来保存我们要输入的网课名和学时,并且对学时初始化为-1
2、然后w次输入网课名,对每次输入减去原先网课名对应学时,统计网课剩余时长为0的数目
#include <iostream>
#include <algorithm>
using namespace std;struct Data{string s;int x;
}a[105];int main()
{int n;cin>>n;for(int i =0 ;i< 105;i++){a[i].x = -1;}for(int i = 0;i < n; i++){cin>>a[i].s>>a[i].x;}int w;cin>>w;while(w--){string ch;cin>>ch;for(int i =0;i<n;i++){if(ch == a[i].s) a[i].x--;}}int cnt = 0;for(int i =0;i<n;i++){if(a[i].x==0) cnt++;}cout<<cnt<<endl;return 0;
}
D、会编程的老师
H、我最喜欢吃饭了
Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度
#include <iostream>
#include <algorithm>
using namespace std;
int a[5005], f[5005]; int main()
{int n, m;cin >> n >> m;// n个人m个窗口for (int i = 1; i <= n; i++) cin >> a[i];int cnt = 1;for (int i = 1; i <= n; i++){f[i] = 1;for (int j = 1; j < i; j++){if (a[i] <= a[j]) f[i] = max(f[i], f[j] + 1);}cnt = max(cnt, f[i]);}if (cnt > m)cout << "Karashi lovelove" << endl;//非法else cout << "Karashi cblcd" << endl;//合法return 0;
}