山東理工大學第十六屆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;
}