2017 浙江省省賽 (A、B、C、D)
阿新 • • 發佈:2018-12-16
簽到題
#pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; #define clr(a) memset(a,0,sizeof(a)) #define line cout<<"-----------------"<<endl; typedef long long ll; const int maxn = 1e5+10; const int MAXN = 1e6+10; const int INF = 0x3f3f3f3f; const int MOD = 1e9+7; const int N = 1010; int n; int main(){ int T; cin >> T; while(T--){ scanf("%d", &n); int a = 0, b = 0; int x; for(int i = 0; i < n; i++){ scanf("%d", &x); if(x == 1) a++; else if(x == 2) b ++ ; } if(a > b) puts("Kobayashi"); else if(a == b) puts("Draw"); else puts("Tohru"); } return 0; }
模擬即可
#pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; #define clr(a) memset(a,0,sizeof(a)) #define line cout<<"-----------------"<<endl; typedef long long ll; const int maxn = 1e5+10; const int MAXN = 1e6+10; const int INF = 0x3f3f3f3f; const int MOD = 1e9+7; const int N = 110; int T, n; int a[N]; int main(){ scanf("%d", &T); while(T--){ clr(a); bool flag = true; scanf("%d", &n); int num1 = 0; int maxx = -1; for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); if(a[i] > maxx) maxx = a[i]; if(a[i] == 1) num1 ++; if(a[i] <= 0) flag = false; } sort(a+1, a+n+1); if(!flag || num1 < 2 || n > 13 || n < 10){ printf("No\n"); continue; } int cnt = 0; for(int i = 1; i <= n; i++){ if(a[i] == maxx) { cnt ++ ; } } if(cnt != 1) flag = false; else{ for(int i = 2; i <= n; i++){ if(abs(a[i] - a[i-1]) > 2 && a[i] != maxx && a[i-1] != maxx){ flag = false; break; } } } if(!flag) printf("No\n"); else printf("Yes\n"); } return 0; }
map + hash
#pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; #define clr(a) memset(a, 0, sizeof(a)) #define line cout<<"-----------"<<endl typedef long long ll; const int maxn = 1e5 + 10; const int MAXN = 1e6 + 10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; const int N = 1010; int T, n, m, q, c; string s; map<string, int> mp; map<int, string> pm; int main(){ scanf("%d", &T); while(T--){ mp.clear(); pm.clear(); scanf("%d%d%d", &n, &q, &c); for(int i = 1; i <= c; i++){ cin >> s; mp[s] = 0; } for(int i = 0; i < q; i++){ scanf("%d", &m); for(int j = 0; j < m; j++){ cin >> s; mp[s] += (1<<i); } } map<string, int>::iterator it; for(it = mp.begin(); it != mp.end(); it++){ if(pm.find(it->second) == pm.end()) pm[it->second] = it->first; else pm[it->second] = "Let's go to the library!!"; } for(int i = 0; i < n; i++){ int sum = 0, x; for(int j = 0; j < q; j++){ scanf("%d", &x); sum += (1<<j) * x; } if(pm.find(sum) == pm.end()) printf("Let's go to the library!!\n"); else printf("%s\n", pm[sum].c_str()); } } return 0; }
模擬即可
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"-----------"<<endl
typedef long long ll;
const ll INF = 0x3f3f3f3f;
const ll N = 110;
ll T, n, m, x, y, num, ans;
struct node{
ll l, r;
}a[N], b[N], f[N];
bool cmp(node a, node b){
if(a.l != b.l) return a.l < b.l;
else return a.r < b.r;
}
int main(){
scanf("%lld", &T);
while(T--){
clr(a); clr(b); clr(f);
ans = num = 0;
scanf("%lld%lld%lld%lld", &n, &m, &x, &y);
for(ll i = 0; i < x; i++)
scanf("%lld%lld", &a[i].l, &a[i].r);
sort(a, a + x, cmp);
for(ll i = 0; i < y; i++)
scanf("%lld%lld", &b[i].l, &b[i].r);
sort(b, b + y, cmp);
ll u = 0, v = 0;
ll maxx, minn;
while(x > u && y > v){
maxx = max(a[u].l, b[v].l);
minn = min(a[u].r, b[v].r);
if(minn - maxx - m + 2 > 0)
ans += (minn - maxx - m + 2);
if(a[u].r <= b[v].r) u++;
else v++;
}
printf("%lld\n", ans);
}
return 0;
}